对JS原型的理解

var people = {
    name: 'xiaoliu'
};

  

对于JS中所有对象,都有一个内部属性(供解释器使用)_proto_,这个属性指向新建对象的原型,people对象字面量的原型是什么呢,它是Object.prototype。

如图:

 

function People(){
  
  this.name = 'xiaoliu';
}/*对象模板*/


var people = new People();/*创建对象*/

 这里的people对象的原型直线 Person的构造器

 

function People(){
  
  this.name = 'xiaoliu';
}/*对象模板*/

People.prototype = {
    constructor: People,/*原来People.prototype指向的对象中默认的唯一不可枚举属性,现在修改了prototype的引用,所以最好再恢复一下*/
    toString: function(){return this.name}
};/*修改原型*/

var people = new People();/*创建对象*/


people.toString();/*执行继承方法*/

  这里改变了People的原型

 

最后,是通过ES5提供的Object.create()方法

代码实例:

var people = {name: 'xiaoliu'};

var a = Object.create(people);/*创建一个新对象,并把原型_proto_初始化为people对象*/

a.name;/*返回原型链上的name属性*/

  

参考:http://www.cnblogs.com/liubingblog/p/4345208.html

posted on 2015-03-18 10:15  tarrying  阅读(155)  评论(0)    收藏  举报