Javascript dict vs {}

时间:2016-02-12 02:50:23

标签: dictionary

使用{}时如下:

    var m = {};

然后m是一个不具备Dict方法的Object。你可以通过粘贴到jsfiddle看到

var m = {};
m['a'] = 'x';
alert(m.keys());

这不会运行 - 因为keys()不是给定对象上的方法。那么 - 如何获得一个包含所有方法的字典?

更新来自@SLaks建议:将原始行更改为

var m = new Map(); 

诀窍

3 个答案:

答案 0 :(得分:1)

{}是一个“对象字面量”。它除了object prototype(一组有限的函数,如toStringhasOwnProperty等)以及您在其上定义的内容之外,没有任何方法或属性。否则它是空的,不会暴露你在词典上所期望的功能。这就是Object的用武之地。

静态Object引用上有一个API,您可以提供您的对象,并有效地公开一组可以 on 执行的功能对象好像它们是“字典”可能暴露的默认方法。

var m = {};
m.a = 'x';

Object.keys(m) // => ['a']

您可以在MDN上找到Object支持的更多方法,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

答案 1 :(得分:1)

Javascript中没有字典这样的东西。

您可以像往常一样使用常规对象作为字典,并使用Object.keys()等方法来帮助您。

如果您使用ES6(或填充),则可以使用Map class,这是使用get()set()方法的普通类。

答案 2 :(得分:0)

没有“Dictionary”,但JavaScript中的对象可以与Java中的Map非常相似的方式使用。

var myObject = {}
... 
for (var key in myObject) {
    if (myObject.hasOwnProperty(key)) {
        var value = myObject[key];
    }
}

hasOwnProperty()检查是为了避免在JavaScripts prototype chain上找到更高的密钥。