function S() {
this.name = "sss";
}
S.prototype.say = function() {
console.log(this.name);
}
//ES6
class A extends S {
constructor(){
super();
}
}
//寄生组合继承
function B() {
S.call(this);
}
B.prototype = Object.create(S.prototype)
B.prototype.constructor = B;
//组合继承(构造函数+原型),原型中会多父构造函数中的属性
function C() {
S.call(this);
}
C.prototype = new S();
C.prototype.constructor = C;
var a = new A();
a.say();
console.log(a instanceof A);
console.log(a instanceof S);
console.log(A.prototype.isPrototypeOf(a));
console.log(S.prototype.isPrototypeOf(a));
var b = new B();
b.say();
console.log(b instanceof B);
console.log(b instanceof S);
console.log(B.prototype.isPrototypeOf(b));
console.log(S.prototype.isPrototypeOf(b));
var c = new C();
c.say();
console.log(c instanceof C);
console.log(c instanceof S);
console.log(C.prototype.isPrototypeOf(c));
console.log(S.prototype.isPrototypeOf(c));
javascript中继承的3种方式
最新推荐文章于 2022-08-20 12:34:38 发布