[英]isPrototypeOf and __proto__ have different results
以下兩個表達式:
"abc".__proto__.__proto__ === Object.prototype // true
Object.prototype.isPrototypeOf("abc") // false
第一個表達式證明Object.prototype
位於“ abc”的原型鏈中。 但是,第二個表達式得到相反的結果。
我很困擾。 希望任何人都能解釋。
"abc"
不是對象。 當您評估"abc".__proto__
,將隱式構造一個String
包裝器對象以檢索其原型,而Object.prototype
在該包裝器對象的原型鏈中。
Object.prototype.isPrototypeOf("abc")
不會構造包裝器對象。 它僅查看"abc"
,看到"abc"
不是對象,也沒有原型鏈,並返回false。 您可以在ECMAScript規范 (版本6)中看到以下內容:
使用參數V調用isPrototypeOf方法時,將執行以下步驟:
- 如果Type(V)不是Object,則返回false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.