js 继承

本文详细介绍了五种JavaScript实现继承的方法:对象冒充、Function.call/apply方法、原型方式、原型混合方式,并提供了具体实现代码。

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

 

转载于:https://www.cnblogs.com/BigIdiot/archive/2013/03/01/2938241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值