JavaScript五种继承方式
来源:互联网 发布:vmware player mac版 编辑:程序博客网 时间:2024/06/14 07:34
http://www.html5war.com/?p=358#127501-tsina-1-65799-37403ee4d52bdcc85c83ed483a1ad958
1)继承第1种方式:对象冒充
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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);
}
}
var parent1= newParent("jack");
var child1= newChild("kyle","123");
parent1.sayHello();
child1.sayHello();
child1.sayWorld();
2)继承第2种方式:call方法
call方法是Function对象中的方法,因此我们定义的每个函数都拥有该方法。可以通过函数名来调用call方法,call方法的第一个参数会被传递给函数中的this,从第二个参数开始,逐一赋值给函数中的参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
}
}
var p1= newParent("jack");
var c1= newChild("kyle","123");
p1.sayHello();
c1.sayHello();
c1.sayWorld();
3)继承第3种方式:apply方法
apply方法与call方法的不同之处在于,apply方法第二个参数传递的是一个数组,而不像call方法那样以离散的形式传递参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Parent(username){
this.username= username;
this.sayHello= function(){
alert(this.username);
}
}
function Child(username,password){
<strong>Parent.apply(this,newArray(username));</strong>
this.password= password;
this.sayWorld= function(){
alert(this.password);
}
}
var p1= newParent("jack");
var c1= newChild("kyle","123");
p1.sayHello();
c1.sayHello();
c1.sayWorld();
4)继承第4种方式:原型链方式
该方式的缺点是不能够传递参数。初始化必须要等对象创建之后
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Parent(){
}
Parent.prototype.hello= "hello";
Parent.prototype.sayHello= function(){
alert(this.hello);
}
function Child(){
}
Child.prototype= newParent();
Child.prototype.world= "world";
Child.prototype.sayWorld= function(){
alert(this.world);
}
var c1= newChild();
c1.sayHello();
c1.sayWorld();
5)继承第5种方式:混合方式(推荐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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= newParent();
Child.prototype.sayWorld= function(){
alert(this.world);
}
var c1= newChild("HELLO","WORLD");
c1.sayHello();
c1.sayWorld();
- JavaScript五种继承方式
- JavaScript五种继承方式
- JavaScript五种继承方式
- JavaScript实现继承的五种方式
- 五种继承方式
- javascript中实现对象继承的五种方式详解
- JavaScript四种继承方式
- JavaScript六种继承方式
- JavaScript 六种继承方式
- JavaScript六种继承方式
- JavaScript 六种继承方式
- JavaScript之五:继承
- Javascript的四种继承方式
- javascript 对象继承的几种方式
- javascript几种实现继承方式
- JavaScript继承的几种方式解析
- Javascript的四种继承方式
- javascript 继承的几种方式
- struts2中文件上传和下载
- 一道笔试题的搞笑解法
- java学习-JAVA基本排序法示例,JAVA数据类型转换 ,ArrayList用法,Calendar 简单应用
- WebPageTest介绍
- 浏览器工作原理
- JavaScript五种继承方式
- shader复习与深入:Normal Map(法线贴图)Ⅰ
- shader复习与深入:Normal Map(法线贴图)Ⅱ
- 打开多媒体文件时候的文件筛选字符串
- 8个超棒的学习jQuery的网站
- JasperReports+iReport在eclipse中的使用
- Java Web
- LVS学习笔记
- 睡觉了 啊 头发快快长