在Stoyan Stefanov's book Object-Oriented javascript ,在第 103 页,他有以下内容。但是,当我尝试这样做时,h instanceof Object
得到了不同的结果。我是不是遗漏了什么,自那以后 JS 中的某些内容发生了变化,或者这是书中的一个错误。
>>> function Hero(){}
>>> var h = new Hero();
>>> var o = {};
>>> h instanceof Hero;
true
>>> h instanceof Object;
false //true in Google Chrome
>>> o instanceof Object;
true
最佳答案
如果这本书是这么说的,那么这本书 是不正确的。 (并在 Amazon.com 中搜索图书内容确认错误。)
您在 Google Chrome 中获得的 true
结果是正确的结果。
虽然 h
对象继承自 Hero
函数上的 .prototype
,但 .prototype
继承自Object
函数上的 .prototype
。这意味着 h
继承自 Hero.prototype
和 Object.prototype
,并被视为两个构造函数的实例。
如果 Hero.prototype
是一个没有继承自 Object.prototype
的对象,那么它不会是唯一的方法。但在那个例子中,它使用了默认对象,所以它确实继承了。
关于javascript - instanceof - Stoyan Stefanov 的面向对象 javascript 中的 javascript 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553358/