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