标签:over func cal 优先 上层 his 性能 构造 进一步
var Person=function(){
this.person="person";
}
var protoObj=Person.prototype;//每个构造函数都有一个prototype属性,而这个属性的值是一个对象
var p=new Person();
//构造函数的实例的原型对象就是:protoObj; 而protoObj也有自己的原型对象;
//因为new命令运用了call 或者apply,object.create()等方法实现实例对象继承了构造函数中的属性和方法,以及实现继承原型属性和方法;
var obj=new Object();
var objProto=Object.prototype;//此对象是所有构造函数的实例的原型对象的原型对象;
Object.prototype
对象有没有它的原型呢?回答可以是有的,就是没有任何属性和方法的null
对象,而null
对象没有自己的原型。
如果对象自身和它的原型,都定义了一个同名属性,那么优先读取对象自身的属性,这叫做“覆盖”(overriding)。
需要注意的是,一级级向上,在原型链寻找某个属性,对性能是有影响的。所寻找的属性在越上层的原型对象,对性能的影响越大。如果寻找某个不存在的属性,将会遍历整个原型链。
Object.create
方法生成的对象,继承了它的原型对象的构造函数。
function A() {}
var a = new A();
var b = Object.create(a);//b继承了a的属性和方法,即a成了b的原型对象
b.constructor === A // true
b instanceof A // true
标签:over func cal 优先 上层 his 性能 构造 进一步
原文地址:http://www.cnblogs.com/bahongxia/p/7660544.html