簡體   English   中英

isPrototypeOf和__proto__的結果不同

[英]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方法時,將執行以下步驟:

  1. 如果Type(V)不是Object,則返回false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM