【发布时间】:2011-01-27 19:13:23
【问题描述】:
JavaScript 中的 instanceof 关键字在第一次遇到时可能会让人很困惑,因为人们倾向于认为 JavaScript 不是一种面向对象的编程语言。
- 这是什么?
- 它解决了什么问题?
- 什么时候合适,什么时候不合适?
【问题讨论】:
-
虽然下面的答案非常有用,但在实际应用程序中您并没有使用太多(至少我没有)。可以创建一个 object.type 属性,该属性包含一个字符串并对其进行检查。
-
JS 毫无意义:
"foo" instanceof String=> false,1 instanceof Number=> false,{} instanceof Object=> false。说什么?! -
@morbusg 您的评论具有误导性。首先
"foo" instanceof String => false是正确的,因为typeof "foo" == 'string'。new String("foo") instanceof String => true,因为typeof String == 'function'- 你应该像对待类一样对待函数(类的定义)。当您将变量分配为var v = new AnythingWhatTypeofEqualsFunction()时,变量变为instanceof一些function(类)。这同样适用于1。typeof 1 == 'number'- 'number' 不是 'function' :) 下一个 -{} instanceof Object在 node 和现代浏览器中是TRUE -
@fider:那是对语言规范的评论,来自 rubyist。
-
@morbusg -
({}) instanceof Object将返回true。事实上你写的代码会给你一个错误。
标签: javascript operators instanceof