实例属性的优先级
- 通过原型给对象实例添加的属性
- 在构造器函数内给对象的实例添加的属性
在构造器内绑定的操作的优先级永远都高于在原型上绑定的操作优先级,因为构造器的this上下文指向的是实例自身。
查询属性引用时,首先查询对象自身,如果不存在,再去原型上查找,如果还是不存在,那么返回undefine。
原型链
例如: 忍者是一个人,人又是一个哺乳动物,哺乳动物又是动物的一种…直到最终的是一个Object。
创建这样一个原型链的最好的方式是,使用一个对象的实例作为另一个对象的原型。
用原型实现继承(即原型链)1234567function Person() {}Person.prototype.dance = function() {}function Ninja() {}Ninja.prototype = new Person();var ninja = new Ninja();
注意,不要把原型对象赋值给原型,例如:Ninja.prototype = Person.prototype;,这样任何Ninja原型上的修改都会影响到person。