首页 > 其他 > 详细

prototype 对象的进一步深入理解

时间:2017-10-13 13:35:33      阅读:206      评论:0      收藏:0      [点我收藏+]

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

prototype 对象的进一步深入理解

原文:http://www.cnblogs.com/bahongxia/p/7660544.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!