Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
306 views
in Technique[技术] by (71.8m points)

JS 的一个设计上的bug(疑似)

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


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.

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...