1. 使用对象冒充实现继承
function Person(username){ this.username=username; this.sayHello=function(){ alert(this.username); }}function Child(username,password){ this.superUserName=Person; this.superUserName(username); delete this.superUserName; this.sayWord=function(){ alert(password); }}var a=new Person('a');a.sayHello();var b=new Child('b','2b');b.sayHello();b.sayWord();
2. 使用Function的call方法
function Person(username){ this.username=username; this.sayHello=function(){ alert(this.username); }}function Child(username,password){ Person.call(this,username); this.sayWord=function(){ alert(password); }}var a=new Person('a');a.sayHello();var b=new Child('b','2b');b.sayHello();b.sayWord();
3.使用Function的apply方法
function Person(username){ this.username=username; this.sayHello=function(){ alert(this.username); }}function Child(username,password){ Person.apply(this,[username]); this.sayWord=function(){ alert(password); }}var a=new Person('a');a.sayHello();var b=new Child('b','2b');b.sayHello();b.sayWord();
4.原型方式实现继承(无法实现参数传递)
function Person(){}Person.prototype.username='hello';Person.prototype.sayHello=function(){ alert(this.username);}function Child(){ }Child.prototype=new Person();Child.prototype.password='word';Child.prototype.sayWord=function(){ alert(this.password);}var a=new Person();a.sayHello();var b=new Child();b.sayHello();b.sayWord();
5.原型混合方式实现继承
function Person(username){ this.username=username;}Person.prototype.sayHello=function(){ alert(this.username);}function Child(username,password){ this.password=password; Person.call(this,username);}Child.prototype=new Person();Child.prototype.sayWord=function(){ //放在new Person后面,不然会被覆盖 alert(this.password);}var a=new Person('a');a.sayHello();var b=new Child('b','2b');b.sayHello();b.sayWord();