Pet*_*kov 1 javascript prototype
JavaScript专家,这里有一个难题:
function aFunc(){}
function bFunc() {}
aFunc.prototype = bFunc.prototype;
a = new aFunc();
console.log(a instanceof bFunc); //true!
Run Code Online (Sandbox Code Playgroud)
为什么是a实例bFunc?
如果是这样的话,我能理解这一点:
function aNext(){}
function bNext(){}
aNext.prototype = new bNext();
a = new aNext();
console.log(a instanceof bNext);
Run Code Online (Sandbox Code Playgroud)
..但是原型对我来说似乎很奇怪.您可以在Professional JavaScript for Web Developers一书中找到原型代码的实际应用(第6页,最后一页).
编辑: 感谢Blender,但这里分别出现了新的谜语:现在如果我们有两个从同一个对象继承的对象,那么它们就是彼此的实例(但它们完全不同)!
function Horse(){} //class chain can be very long
function Pig(){}
Horse.prototype = Object.prototype;
Pig.prototype = Object.prototype;
a = new Pig();
console.log(a instanceof Horse); //true!
Run Code Online (Sandbox Code Playgroud)
我们如何解决问题?如果它们都是动物(过去有相同的原型),我如何确定猪不是马?