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

原型继承

时间:2014-12-04 13:47:31      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   div   问题   

function SuperType(){

this.property = true;

}

 

SuperType.prototype.getSuperValue = function(){

return this.property;

}

 

function SubType(){

this.subproperty = false;

}

 

SubType.prototype = new SuperType();

 

SubType.prototype.getSubValue = function(){

return this.subproperty;

}

 

var instance = new SubType();

alert(instance.getSuperValue());  //true

alert(instance.getSubValue());  //false

 

SubType原型prototype 重新定义被实例SuperType 赋值,所有在调用instance.getSuperValue() 方法是,首先搜说SubType 实例中的方法,如果不存在则搜索原型中的方法,即搜索SuperType 实例方法,如果仍没有则搜索SuperType原型中的方法。

 

关于原型被破坏问题

在实例初始化后如果改变原型则实例就找不到原型的方法,但是如果在实例之前则没有影响

function Person(){

}

var p1 = new Person(); // 实例在原型改变前 则p1.sayName()出错

Person.prototype = {

constructor : Person,

name:"Jack",

sayName : function(){

alert(this.name);

}

};

 

var p1 = new Person(); // 实例在原型改变之后,p1.sayName(); //jack

 

p1.sayName();

alert(p1.constructor); //function Person(){}

 

如果在原型中没有指定constructor 则返回Object 

同时即便原型在实例之后改变,定义了constructor 也能正常找到。

 

优点:函数,属性共享。达到复用的目的。

缺点:每个子类实例没有独有的属性,实例化时不能传递参数。

原型继承

标签:style   blog   io   ar   color   sp   on   div   问题   

原文地址:http://www.cnblogs.com/lcw5945/p/4142479.html

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