【发布时间】:2013-08-06 00:45:06
【问题描述】:
为什么下面两行会返回不同的结果?
("test" instanceof String) // returns false
("test".constructor == String) // returns true
在 chrome 版本 28.0.1500.95 m 的控制台中测试
对于原生类型,它的工作方式是否略有不同?
【问题讨论】:
-
我不认为它是重复的。这实际上是一个更普遍的问题。
-
@basilikum 我同意。此外,我认为可能重复的问题本身的答案描述性不足。我投票重新提出这个问题。
-
值得阅读以下答案:stackoverflow.com/a/18057157/783743
-
您的回答很有趣,谢谢,
native types have a constructor wrapper是对上述内容的解释。知道您可以使用第一个参数作为原始值初始化这些包装器类型也很有用。 -
@Ally 我认为解释是当你写
"test"它实际上是String("test");并且你得到一个原语(所以 instanceof 不会工作,因为它不是一个对象)。但是当您尝试将文字用作对象时,浏览器会将其转换为String对象,这就是出现.constructor属性的原因。
标签: javascript