`
ec2004
  • 浏览: 382 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript中的prototype与[[prototype]]

阅读更多

      在学习JS的过程中,无意中在网上找到了一个高手写的博客,遂做点笔记!

参考来源:http://www.cnblogs.com/fool/archive/2010/10/13/1849734.html

先来张简单点的图:

     

      

        首先明确一点[[prototype]]与prototype并不是同一个东西

  那先来看prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型,更明确的说是代表了由函数对象(构造函数)所创建出来的对象的原型。结合本例,Animal.prototype就是dog的原型,dog所引用的那个对象将从Animal.prototype所引用的对象那继承属性与方法。

  每个对象都有一个名为[[Prototype]]的内部属性,指向于它所对应的原型对象。在本例中dog的[[prototype]]指向Animal.prototype,大家都知道,Animal.prototype也是一个对象,即然是一个对象,那它必然也有[[prototype]]属性指向于它所对应的原型对象,由此便构成了一种链表的结构,这就是原型链的概念。

       额外要说的是:不同的JS引擎实现者可以将内部[[Prototype]]属性命名为任何名字,并且设置它的可见性,前且只在JS引擎内部使用。虽然无法在JS代码中访问到内部[[Prototype]](FireFox中可以,名字为__proto__因为Mozilla将它公开了),但可以使用对象的 isPrototypeOf()方法进行测试,注意这个方法会在整个Prototype链上进行判断。

   【简而言之,一个对象 (通过new 构造函数 () 创建的对象) 的 内部属性[[prototype]] 指向 构造函数.prototype .】
一个函数对象,实际上是调用 new Function ()来创建的,所以  函数对象.[[prototype]]  指向 Function.prototype.

     

 

 

  • 大小: 54.6 KB
  • 大小: 107.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics