在构造函数内使用call()或apply()实现继承
此法不能继承原型属性或方法,因此 b.pa 的值不存在。如果想继承 A 的原型属性或方法该怎么办呢?用typescript写两个类 A 和 B,并且 B extends A,然后用 tsc 将 typescript 文件编译成 javascript 文件。打开 js 文件发现原型继承是用__extends(B, A)
实现的。关键在于__extends()
函数
function A(x){
this.x = x;
}
A.prototype.pa = 'pa';
function B(x, y){
A.apply(this, arguments);
this.y = y;
}
B.prototype.pb = 'pb';
var b = new B(1, 2);
console.log(b.x, b.y, b.pa, b.pb); // 1 2 undefined "pb"
本作品采用《CC 协议》,转载必须注明作者和本文链接