JavaScript 面向对象第一篇

1.原型链 ---- (实例对象与原型之间的连接 叫做原型链)
function Book(){
  this.name = 'kk'
}
Book.prototype.show = function(){
  console.log(this.name)
}
var b = new Book()
b.show()
//对象实例b下面原本是没有show方法的,但他通过了原型链接 Book.prototype 找到了show方法 
//最外层 Object.prototype
2. hasOwnproperty ----(看是不是对象自身下面的属性)
var obj = {};
obj.num = 10;
console.log( obj.hasOwnproperty('num'))
//结果
true
3. constructor----查看对象的构造函数
function Aaa(){}
var a = Aaa()
alert(a.constructor)
//结果
function Aaa(){}

Aaa.prototype.constructor = Aaa
//浏览器会自动给我们的原型里添加一个constructor的属性 并指向我们的构造函数

Aaa.prototype.constructor  = Array
//这样我们就更改了对象的constructor
4. instanceof----(查看对象与构造函数是不是在同一个原型链上)
function Book(){}   
var book = new Book();
console.log( book instanceof Book);    //结果true   
console.log( book instanceof Object);  //结果true  所有的对象都继承了Object 所以结果也是true
console.log( book instanceof Array);   //结果false 由于对象book和Array构造函数不在同一条原型链上 所以结果为false
5. call----(使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法 )
var obj = { name :'10'}
function fn(){ 
     console.log (this);     
     console.log(this.name) 
}
// 1. 普通函数调用方式
fn()
console.log (this);     //结果 window
console.log(this.name)  //结果 undefined 因为window对象中找不到name这个属性
//2.使用call调用
fn.call(obj,name) 
console.log (this);     //结果 Object {name: "10"}
console.log(this.name)  //结果 10

总结:
//call更改了fn函数中this指向,原本fn函数中的this指向window ,fn.call(obj)之后 this指向了obj对象
//第二个参数(如:name)指定了this中具体的参数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 5,291评论 3 12
  • 本章内容 理解对象属性 理解并创建对象 理解继承 面向对象语言有一个标志,那就是它们都有类的概念,而通过类可以创建...
    闷油瓶小张阅读 4,340评论 0 1
  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 7,126评论 2 18
  • 来了,孩子们说,一溜烟跑开了。 远处,是飞驰而来的夜,他的巨大斗篷覆盖住整个天空,将阳光与土地隔绝。斗篷下的星辰像...
    蘆葉東來阅读 2,540评论 0 1
  • 刚走近乌镇时,并没有太多的兴奋。雕梁画栋的老房子,几进几出的旧宅子,纵横交错的深巷子,再衬以弯弯的小桥和...
    蔓草漾阅读 1,688评论 0 0

友情链接更多精彩内容