js 继承

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();

 

posted @ 2013-03-01 10:43  microsoft_kk  阅读(238)  评论(0编辑  收藏  举报