javascript - JS 的一个设计上的bug(疑似)
PHP中文网
PHP中文网 2017-04-11 12:25:58
[JavaScript讨论组]

今天测试一段代码的时候发现:


var str1 = 'hello world'
console.log(str1 instanceof String)  //  输出false
console.log(str1.__proto__ === String.prototype) // 输出true

对于这个结果感到很奇怪, 我以为是我对instanceof理解错了。 后来上MDN查了一下。 看了一下发现自己没有记错。 原文是这样的:

The instanceof operator tests whether an object has in its prototype chain the prototype property of a constructor.

我想问的是, 为什么这两个结果不同呢?

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
PHP中文网

var str1 = "string"并不是一个String的一个instance,是一种primitive data type,而且它本身没有任何method,只不过你调用任何String的method的时候,会有一个auto-boxing的过程。详情可以看stckoverflow的这个解答。

怪我咯

当 String() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 String 对象,存放的是字符串 s 或 s 的字符串表示。
当不用 new 运算符调用 String() 时,它只把 s 转换成原始的字符串,并返回转换后的值。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号