小编典典

为什么 instanceof 对某些文字返回 false ?

all

"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 中也是如此。所以,至少它是一致的。


阅读 120

收藏
2022-04-15

共1个答案

小编典典

基元是一种不同于从 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.

记住这样的事情的一个简单方法是问自己“我想知道什么是理智和容易学习的”?无论答案是什么,Javascript 都会做另一件事。

2022-04-15