Javascript 检查实例是否在原型链中继承了函数
如果我有如下设置的继承方法:Javascript 检查实例是否在原型链中继承了函数,javascript,prototype,instance,Javascript,Prototype,Instance,如果我有如下设置的继承方法: function A() {} function B() { A.call(this,{}); } B.prototype = Object.create(A); B.prototype.constructor = B; function C() { B.call(this, {}); } C.prototype = Object.create(B); C.prototype.constructor = C; var a = new A
function A() {}
function B() {
A.call(this,{});
}
B.prototype = Object.create(A);
B.prototype.constructor = B;
function C() {
B.call(this, {});
}
C.prototype = Object.create(B);
C.prototype.constructor = C;
var a = new A();
var b = new B();
var c = new C();
是否可以确认实例
c
在其原型链中有A
,或者信息是否丢失在某处?否!!!。在你的例子中
C.prototype = Object.create(C);
C.prototype.constructor = C;
您将C
实例的原型设置为C
如果更改为C.prototype=Object.create(B)代码>
你会看到这个
但这并不意味着你的c是A的实例。为什么?
因为您已将原型设置为函数而不是对象
如果您将代码更改为此,那么它的原型将是一个对象
function A() {}
function B() {
A.call(this,{});
}
B.prototype = Object.create(new A());
B.prototype.constructor = B;
function C() {
B.call(this, {});
}
C.prototype = Object.create(new B());
C.prototype.constructor = C;
var a = new A();
var b = new B();
var c = new C();
在本例中,您的c在其原型链中有一个
您可以在控制台中使用c instanceof B
和c instanceof A
对其进行测试
尝试console.log(A的c实例)
@如果A
或B
接受参数,您会不高兴吗?您将如何建立原型链?@thefourtheye参数有什么问题?对不起,C.prototype=Object.create(C)是一个输入错误。谢谢你的回答,我会试试看!