使用{}时如下:
var m = {};
然后m是一个不具备Dict方法的Object。你可以通过粘贴到jsfiddle看到
var m = {};
m['a'] = 'x';
alert(m.keys());
这不会运行 - 因为keys()不是给定对象上的方法。那么 - 如何获得一个包含所有方法的字典?
更新来自@SLaks建议:将原始行更改为
var m = new Map();
诀窍
答案 0 :(得分:1)
{}
是一个“对象字面量”。它除了object prototype(一组有限的函数,如toString
,hasOwnProperty
等)以及您在其上定义的内容之外,没有任何方法或属性。否则它是空的,不会暴露你在词典上所期望的功能。这就是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上找到更高的密钥。