js中 instanceof 操作 值为字符串的 字面量 和 非字面量时,返回值为什么不同?

图片描述

一个网友回答 " a instanceof b 真正的语义是检查 b.prototype 是否在 a 的原型链上 ",
但是str1(字符串) 和 str2(对象) 的原型链相同啊,为什么结果还不一样?
是不是就仅是因为str1是野生的,而str2是亲生的,所以结果才不一样?
还是我理解错了?望前辈指点

阅读 2.9k
2 个回答

因为str1.__proto__ 相当于toObject(str1).__proto__.所以输出的是String

即会自动转换成Object 类型。

但是 str1 不是对象类型,所以str1 instanceof String 返回 false

你把两个str都调用一下typeof。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题