Posted in Javascript onJuly 17, 2010
//使用原型继承,中间使用临时对象作为Child的原型属性,临时对象的原型属性再指向父类的原型, //防止所有子类和父类原型属性都指向通一个对象. //这样当修改子类的原型属性,就不会影响其他子类和父类 function extend(Child, Parent) { var F = function(){}; F.prototype = Parent.prototype; Child.prototype = new F(); Child.prototype.constructor = Child; Child.base = Parent.prototype; } function Parent(name) { this.aa = 123; this.getName = function() {return name;}; //使用闭包模拟私有成员 this.setName = function(value){name=value;}; } Parent.prototype.print = function(){alert("print!");}; Parent.prototype.hello = function() { alert(this.getName() + "Parent") }; function Child(name,age) { Parent.apply(this, arguments);//调用父类构造函数来继承父类定义的属性 this.age = age; } extend(Child,Parent); //继承Parent Child.prototype.hello = function() //重写父类hello方法 { alert(this.getName() + "Child"); Parent.prototype.hello.apply(this,arguments); //调用父类同名方法 }; //子类方法 Child.prototype.doSomething = function(){ alert(this.age + "Child doSomething"); }; var p1 = new Child("xhan",22); var p2 = new Child("xxx",33); p1.hello(); p2.hello(); p1.doSomething(); //子类方法 p1.print(); //父类方法 alert(p1 instanceof Child); //true alert(p1 instanceof Parent);//true
js模拟类继承小例子
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@