文章目录
  1. 1. 父类:
    1. 1.1. 第一种方式:对象冒充
    2. 1.2. 第二种方式:call()
    3. 1.3. 第三种方式:apply()
    4. 1.4. 第四种方式:原型链(prototype)

在JavaScript中,主要有以下几种手法实现继承:对象冒充、原型链、apply和call方法。

父类:

1
2
3
4
5
6
function ClassA(sColor) {
this.color = sColor;
this.sayColor = function () {
alert(this.color);
};
}
第一种方式:对象冒充
1
2
3
4
5
6
7
8
9
function ClassB(sColor, sName) {
this.newMethod = ClassA; //注意这里
this.newMethod(sColor);
delete this.newMethod;
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}
第二种方式:call()
1
2
3
4
5
6
7
function ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}
第三种方式:apply()
1
2
3
4
5
6
7
function ClassB(sColor, sName) {
ClassA.apply(this, arguments);
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}
第四种方式:原型链(prototype)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function ClassA() {}
ClassA.prototype.color = "red";
ClassA.prototype.sayColor = function () {
alert(this.color);
};
function ClassB() {}
ClassB.prototype = new ClassA();
ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
alert(this.name);
};
//测试
var objA = new ClassA();
var objB = new ClassB();
objA.color = "red";
objB.color = "blue";
objB.name = "Nicholas";
objA.sayColor();
objB.sayColor();
objB.sayName();
文章目录
  1. 1. 父类:
    1. 1.1. 第一种方式:对象冒充
    2. 1.2. 第二种方式:call()
    3. 1.3. 第三种方式:apply()
    4. 1.4. 第四种方式:原型链(prototype)