码迷,mamicode.com
首页 > 其他好文 > 详细

prototype 对象的进一步深入理解

时间:2017-10-13 13:57:03      阅读:151      评论:0      收藏:0      [点我收藏+]

标签: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

prototype 对象的进一步深入理解

标签:over   func   cal   优先   上层   his   性能   构造   进一步   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!