javascript 原型,原型链是什么玩意

2017-06-30  本文已影响0人  IRoye

原型:
所有的函数在初始化的时候都有一个prototype的属性, 也就
是原型。
原型可以让我们预定义属性,包括方法,这些属性和方法会自
动应用到新对象实例上。
一个栗子:
function a(){}
a.prototype.b = function(){console.log('哈哈哈哈')}

 原型链:
 JS 的对象中有一个[[prototype]]属性, 这个属性就是对其他
 对象的引用。
 当我们在创建一个对象的时候:
 var foo = new a();
 调用new a(),其中的一个步骤就是把 foo中的[[prototype]] 
 (浏览器中可以使用__proto__访问)链接到a.prototype所指的对象。
 假如你现在想调用foo对象的一个属性,foo.myproperty
 第一步操作, 就是检查对象自身有没有这个属性,有的话就
 拿来用。
 假如没有的话, 那么就需要使用对象的[[prototype]]属性了。
 这个属性现在指向了a.prototype;
 假如还是没有找到的话, 那么继续找, 
 a.prototype.__proto__;
 。。。。。
 。。。。。
  这个链的终点是什么呢?
  就是Object.prototype;
  所有普通的[[prototype]]链最终会指向内置的Object.prototype;
上一篇 下一篇

猜你喜欢

热点阅读