2016-12-28 35 views
0

理解Map.prototype JavaScript的所有瞭解原型或Map.prototype在JavaScript

嗨...... 我已經通過大量的實例和教程去了解Map.prototype實際上代表.. 在一些博客,我看到它代表Map對象,但是如果我已經在同一個文件中創建了兩個Map對象,它將引用哪個對象? 和任何人都可以請告訴下面的條件是什麼意思?

var temp = Map.prototype ? new Map() : {} ; 

被他們檢查,如果地圖的任何對象創建的,如果是,那麼創建新的對象?

+4

[JavaScript .prototype如何工作?](http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work) – Andreas

+0

您應該研究並閱讀一下:https:// developer .mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/prototype AND https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map –

+1

yes Andreas ...我想知道javascript .prototype是如何工作的 – kumar

回答

1

這種情況很奇怪,原因不止一個。

  1. 看起來像它想看看是否Map是由它的上(Map在ES2015介紹,並非所有引擎都具有它尚未)運行JavaScript引擎支持,但檢查結果是有缺陷的,實際上會如果實現沒有Map則拋出錯誤。該檢查應至少:

    var temp = typeof Map != "undefined" && Map.prototype ? new Map() : {} ; 
    
  2. 最終的結果是,你必須temp這可能是一個普通的對象,或者可能是一個Map實例。但是,您不以同樣的方式使用Map實例和普通對象,所以這很奇怪。

坦率地說,我不會擔心該行(和我會保持謹慎,並圍繞它的代碼)。

我已經通過大量的實例和教程去了解Map.prototype實際上代表。我已經通過大量的實例和教程去了解Map.prototype實際上代表。在一些博客,我看到的是它代表地圖對象,但如果我已經在同一個文件中創建了兩個地圖對象,它將引用哪一個?

Map.prototype所指的對象是將用作Map實例的原型的對象。那就是:

let m1 = new Map(); 
let m2 = new Map(); 

兩個實例將共享同一基礎原型對象,它是一個Map.prototype提及。

底層原型是什麼給了這些實例各種功能,如get和`set方法。

您的問題的這方面在How does JavaScript .prototype work?中有更詳細的介紹。