js 中的对象继承

1. 对象冒充:

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    this.method=Parent;

    this.method(username);

    delete this.method;

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

 

2.call 方法方式:

 

function test(str1,str2){

    alert(this.name + ", " + str1 + ", " + str2);

}

 

var obj = new Object();

obj.name = "userObject";

 

test.call(obj,"hello","world");

注意:这里的“hello” 和“world” 两个参数分别传递给了test方法中的str1和str2,而obj则是传给了test方法中的this。

 

采用call方法来实现冒充方法的继承:

 

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    Parent.call(this,username); 

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

3.apply 方法方式:

function Parent(username){

    this.username = username;

 

    this.sayHello = function(){

        alert(this.username);

    }

}

 

function Child(username,password){

    //Parent.apply(this,[username]);

    Parent.apply(this,new Array(username)); 

 

    this.password=password;

 

    this.sayWorld=function(){

        alert(this.password);

    }

}

 

 

4.原型链方式(无法给构造函数传递参数):

 

function Parent(){}

 

Parent.prototype.hello = "hello";

Parent.prototype.sayHello=function(){

    alert(this.hello);

}

 

function Child(){}

 

Child.prototype = new Parent();

 

Child.prototype.world = "world";

Child.prototype.sayWorld=function(){

    alert(this.world);

}

 

 

5.混合方式:

 

function Parent(hello){

    this.hello = hello;

}

 

Parent.prototype.sayHello=function(){

    alert(this.hello);

}

 

function Child(hello,world){

    Parent.call(this,hello);

    this.world = world;

}

 

Child.prototype = new Parent();

 

Child.prototype.sayWorld=function(){

    alert(this.world);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值