原型链

构造函数有prototype属性

构造函数的prototype属性里又包含constructor,constructor又指回构造函数

实例对象有proto属性,这两个属性是相等的

function Person{
    var person1=new Person()
    console.log(person1._proto_===Person.prototype)
}   
//true

4731205c53ef5dd2a63993bb6e9aaceb80b.jpg

顺便学习一个es5的方法可以获得对象的原型

console.log(Object.getPrototypeOf(person1)===Person.prototype)

实例与原型

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就会去找原型的原型,一直找到最顶层为止,如果自己有就不会在往上找啦

function Person(){
    
}
Person.prototype.name="name"
var person1 =new Person()
person1.name="name of this person1"
console.log(person1.name)  //name
delete person1.name
console.log(person1.name)
​

此外还有一句话,实例对象的proto指向构造函数的prototype.也就是说Person.prototype这个原型对象(实例原型是object的实例,所以这个实例会有proto属性指向构造函数原型对象object.prototype)

e9abd7f191725ec049af66e018a6a9a807e.jpg

4df6062fb79c161ae44d4024d34255733d3.jpg

探讨instanceof

实例 instanceof 构造函数

也就是说A实例对象的原型链上可能会有很多对象,只要b构造函数的原型对象有一个是在其原型脸上的对象即刻返回true

一些概念的梳理

所有函数都有一个特别的属性

prototype:显示原型属性

所有实例对象都有一个特别的属性

__proto__:隐式原型属性

显示原型与隐式原型的关系

函数prototype:定义函数时被自动赋值,值默认为{}

实例对象的__proto__:在创建实例对象时被自动添加,并赋值为构造函数的prototype值

原型对象即为当前对象的父对象

原型链

所有的实例对象都有__proto__属性,他指向的就是原型对象

这样通过__proto__,他指向的就是原型对象

这样通过__proto__属性就形成了一个链的结构---->原型链

当查找对象内部的属性/方法时,js引擎自动沿着这个原型链查找

当给对象属性赋值时,不会使用原型链,而只是在当前对象中进行操作

 

转载于:https://my.oschina.net/u/4004801/blog/3026130

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值