instanceof - Stoyan Stefanov在面向对象的javascript中的javascript不一致

Kin*_*rog 5 javascript instanceof

Stoyan Stefanov的书"面向对象的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 
Run Code Online (Sandbox Code Playgroud)

书摘

谷歌Chrome输出

coo*_*ter 3

如果书上是这么说的,那这本书就是错的。(在 Amazon.com 中搜索该书内容证实了该错误。)

true在 Google Chrome 中获得的结果是正确的结果。

h对象继承自.prototype函数时Hero,对象.prototype继承自.prototype函数Object。这意味着h继承自Hero.prototypeObject.prototype,并且被视为两个构造函数的实例。

唯一不会出现这种情况的方法是,如果Hero.prototype是一个不继承自 的对象Object.prototype。但在该示例中,它使用默认对象,因此它确实继承了。