2016-12-28 70 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?中有更详细的介绍。