"foo" instanceof String //=> false "foo" instanceof Object //=> false true instanceof Boolean //=> false true instanceof Object //=> false false instanceof Boolean //=> false false instanceof Object //=> false 12.21 instanceof Number //=> false /foo/ instanceof RegExp //=> true // the tests against Object really don't make sense
数组字面量和对象字面量匹配…
[0,1] instanceof Array //=> true {0:1} instanceof Object //=> true
为什么不是全部?或者,为什么他们不都 没有 ? 那么,它们是什么例子呢?
在 FF3、IE7、Opera 和 Chrome 中也是如此。所以,至少它是一致的。
基元是一种不同于从 Javascript 中创建的对象的类型。来自Mozilla API 文档:
var color1 = new String("green"); color1 instanceof String; // returns true var color2 = "coral"; color2 instanceof String; // returns false (color2 is not a String object)
我找不到任何用代码构造原始类型的方法,也许这是不可能的。这可能是人们使用typeof "foo" === "string"而不是instanceof.
typeof "foo" === "string"
instanceof
记住这样的事情的一个简单方法是问自己“我想知道什么是理智和容易学习的”?无论答案是什么,Javascript 都会做另一件事。