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