原型链(_proto_) 与原型(prototype) 有啥关系?

 

prototype对象里面方法及属性是共享的。。。。。。 

 

1.JavaScript 中每一个对象都拥有原型链(__proto__)指向其构造函数的原型( prototype),object._proto_是个例外!

2.JavaScript 中每一个函数都拥有原型( prototype ),原型也是一个对象,这个对象包括:原型链、原型方法(属性)、函数构造,同理它的原型链指向其构造函数的原型。

3.当访问一个对象或者函数上的属性时,先尝试访问自身上的属性,再通过原型链尝试访问其创造构造函数那个原型上的属性。如果没有则通过原型上的原型链,继续向上查找,直到访问 Object.prototype 上的属性,如果还是没有,因为 Object.prototype 是一个没有 __proto__ 的对象,Object._proto_指向null,则查询到此为止,返回 undefined。

 Object顶级!!!

 

1.原型对象(例如:a)的__proto__指向它的构造函数的原型对象(object.prototype)。

2、原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。>>>> ( son.prototype.constructor) === Person()    //true

 注意:object.prototype是被object new出来的实例函数a的原型,object.prototype中的prototype是object的属性!!!

var a = {};

a._proto_  ===  object.prototype              //true

object.prototype._proto_                           //underfined   ,最终指向null;  _proto_实例化才产生!!Object.prototype 是一个没有 __proto__ 的对象!!

function Person() {};

Person._proto_  ==== Function.prototype         //true

var son = new Person();

son._proto_   ===  Person.prototype;                //true                       _proto_指向创建实例化的对象原型。

Person.prototype.smile = function() {};         >>>>>>>>>>> ["constactor":"smile"]

 

 

.......................................................................................................................................................................

subA.prototype = new superA() // 继承方法

var a1 = new subA('xiaomuchen')

/*当实例化 a1 时,a1.__proto__ => subA.prototype => new superA() => superA.prototype,所以 a1 的构造函数是 superA*/

 

Function.prototype.__proto__===Object.prototype;       //true;

 

                                                _proto_关系图

 

友情链接:https://www.v2ex.com/t/403680

 

转载于:https://www.cnblogs.com/Longhua-0/p/9280418.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值