鍍金池/ 問答/HTML/ JavaScript的instanceof問題?

JavaScript的instanceof問題?

instanceof 檢測一個(gè)對象A是不是另一個(gè)對象B的實(shí)例的原理是:查看對象B的prototype指向的對象是否在對象A的[[prototype]]鏈上。那

"".__proto__===String.prototype
true
"" instanceof String
false
String.prototype明明在“”的原型鏈上 為什么是false
回答
編輯回答
玩控

因?yàn)?"" 并不是對象,而是原始數(shù)據(jù)類型。

typeof "" === "string"
2017年3月5日 12:41
編輯回答
故人嘆

對字符串字面量進(jìn)行點(diǎn)操作時(shí)回轉(zhuǎn)換成string實(shí)例吧

2018年1月6日 11:00
編輯回答
薔薇花

問題的根源出在第一句. "" 字面字符串是原始類型, 沒有屬性和方法. 所以 javascript 會有一個(gè)行為叫 autobox 來把原始對象臨時(shí)的轉(zhuǎn)為相應(yīng)的包裹對象.

"".__proto__===String.prototype

這里實(shí)際是這樣的

new String("").__proto__ === String.prototype
2017年2月22日 10:15