首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js 中的对象承继

2012-10-08 
js 中的对象继承1. 对象冒充:function Parent(username){??? this.username username???? this.sayHell

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

}

热点排行