javascript面向对象实现继承

第一种方式:对象冒充的方式,通过修改当前的this指针冒充父类的this


//继承第一种方式:对象冒充

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;


//这里也可以同过call,或者apply来实现对象的冒充
Parent.call(this,username);
//Parent.apply(this,[username]);
this.password = password;

this.sayWorld = function()
{
alert(this.password);
}
}

var parent = new Parent("zhangsan");
var child = new Child("lisi", "123456");

parent.sayHello();

child.sayHello();
child.sayWorld();

第二种方式 原型链
//使用原型链(prototype chain)方式实现对象继承,这个确定是不支持多继承,上面的对象冒充的方式支持多继承。

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


var child = new Child();

child.sayHello();
child.sayWorld();

第三种发生 :对象冒充和原型链混合

//使用混合方式实现对象继承(推荐)

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

var child = new Child("hello", "world");

child.sayHello();
child.sayWorld();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值