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

“foo” instanceof String //=> false

“foo” instanceof Object //=> false

true instanceof Boolean //=> false

true instanceof Object //=> false

false instanceof Boolean //=> false

false instanceof Object //=> false

// the tests against Object really don't make sense

数组文字和对象文字匹配…

[0,1] instanceof Array //=> true

{0:1} instanceof Object //=> true

为什么不是所有人?或者,为什么不是所有人 都不 呢?

而且,它们是什么实例呢?

在FF3,IE7,Opera和Chrome中相同。因此,至少是一致的。


错过了几个。

12.21 instanceof Number //=> false

/foo/ instanceof RegExp //=> true

回答:

与从Javascript内部创建的对象相比,基元是另一种类型。从MozillaAPI文档]:

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都会做其他事情。

以上是 为什么instanceof对某些文字返回false? 的全部内容, 来源链接: utcz.com/qa/412012.html

回到顶部