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

标签 javascript instanceof

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 

Book excerpt

Google Chrome output

最佳答案

如果这本书是这么说的,那么这本书 是不正确的。 (并在 Amazon.com 中搜索图书内容确认错误。)

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

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

如果 Hero.prototype 是一个没有继承自 Object.prototype 的对象,那么它不会是唯一的方法。但在那个例子中,它使用了默认对象,所以它确实继承了。

关于javascript - instanceof - Stoyan Stefanov 的面向对象 javascript 中的 javascript 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553358/

相关文章:

javascript - 根据 div 在父级中的位置滚动父级 div 溢出

javascript - 日期时间范围指令字段未显示任何值

javascript - 用于检查数字是 3 位还是 6 位十六进制的正则表达式

java - instanceOf(状态模式)的替代方案

javascript - 多角色身份验证 Firebase Web

javascript - HTML 允许用户在文件中键入或粘贴

java - Android 当循环 LinearLayout subview 时它总是告诉我 subview 是相同的

Groovy "not instanceof"特性

javascript - 自定义对象的js实例