当前位置: 首页 > 面试题库 >

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

双弘益
2023-03-14
问题内容

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



 类似资料:
  • 问题内容: 我已经从Khalid Mughal SCJP复制了以下程序片段,但是我无法 理解输出。 上面的程序为第一个print语句提供了输出true,但是应该给出false,因为它是==关系运算符的引用比较。但是第三张印刷品是假的,我不理解这种不一致。 解释非常感谢! 问题答案: 在第一种情况下,两个和都指向相同的缓存对象。默认情况下,-128和127之间的范围作为对象缓存。我们可以使用

  • 问题内容: 在使用时,我正在获取一些价值。我搜寻了很多,但徒劳无功。 以下是我的代码: 输出控制台: 所有日期字符串的格式都是相同的,但对于几个值我还是没有。为什么这样?请帮忙。我哪里错了? 问题答案: 格式应该是24小时的 HH ,即使您只获得12小时的值。

  • 问题内容: 我正在使用Elasticsearch索引我的文档。 是否有可能指示它仅返回特定字段,而不是它存储的整个json文档? 问题答案: 是的 使用源过滤器。如果您使用JSON搜索,它将看起来像这样: 在ES 2.4及更低版本中,您还可以在search API中 使用fields选项: ES 5+中已弃用此功能。而且,源过滤器更强大!

  • 运行查询后,我从MongoDB返回一个JSON值。问题是我不想返回与我的返回相关的所有JSON,我尝试搜索文档,但没有找到正确的方法。我想知道如果可能的话会怎样,如果可能的话,正确的做法是什么。示例:在数据库中 如果某个字段为用户存在,但不返回另一个字段,那么返回该字段的正确方式是什么。对于上面的示例,我想返回RMS的字段和扎克伯格的字段。这就是我试图找到的字段是否为空,但它似乎不起作用。

  • 问题内容: 我一直都在看:声明的对象常量使某些键用引号引起来,而另一些则没有。jQuery 1.4.2中的示例: **用引号 将前两个属性键(和 ) 包裹 起来,而其他两个都不用引号引起来的意义是什么? 有什么区别吗? 我一直在摸索ECMAScript 5规范;我所能找到的只是[ 15.12.3节的注6,重点是我的 ]: 注6:一个对象呈现为左括号,后跟零个或多个属性,以逗号分隔,右括号封闭。 属

  • 问题内容: 只是出于好奇。 数字似乎不太合逻辑。顺便说一句,就像或返回假。这是javascript的特性之一,还是有原因呢? 编辑:谢谢你的回答。但是,要让所有人适应现实并非易事。阅读答案和Wiki我了解得更多,但仍然有类似 与NaN的比较始终会返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是无信号的,因此x = x返回false