簡體   English   中英

為什么 [1,2,3].prototype === Array.prototype 返回 false?

[英]Why does [1,2,3].prototype === Array.prototype return false?

我正在 Chrome 控制台中玩 Prototype。 [1,2,3].prototype === Array.prototype等同於相同的原型,因為它們都包含相同的方法?

非類對象沒有prototype屬性。 相反,他們有__proto__ 所以這有效:

[1,2,3].__proto__ == Array.prototype
//=> true

但它已被棄用。 如果你真的需要明確檢查原型,你可以在現代 JS 引擎中使用它:

Object.getPrototypeOf([1,2,3]) == Array.prototype

但是,一般來說,檢查對象是否是類的實例的方法是使用instanceof

[1,2,3] instanceof Array
//=> true

較舊的 javascript 引擎(和當前的,但被認為已棄用)

[1,2,3].__proto__ === Array.prototype

現代 javascript 引擎(即不是 IE)

Object.getPrototypeOf([1,2,3]) === Array.prototype

補充一些值得注意的地方, __proto__是內部屬性,不鼓勵使用,只需要按照語言規范在瀏覽器環境中實現, Object.getPrototypeOf()更好。

你也可以通過isPrototypeOf來做到:

Array.prototype.isPrototypeOf([1,2,3])

暫無
暫無

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

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