當使用{}如下:的Javascript字典VS {}
var m = {};
則m是不具有字典的方法的對象。你可以看到通過粘貼到jsfiddle
var m = {};
m['a'] = 'x';
alert(m.keys());
這將不會運行 - 因爲keys()不是給定對象上的方法。那麼 - 如何獲得一個字典及其所有方法?
更新從@SLaks建議:原線更改爲
var m = new Map();
的伎倆
當使用{}如下:的Javascript字典VS {}
var m = {};
則m是不具有字典的方法的對象。你可以看到通過粘貼到jsfiddle
var m = {};
m['a'] = 'x';
alert(m.keys());
這將不會運行 - 因爲keys()不是給定對象上的方法。那麼 - 如何獲得一個字典及其所有方法?
更新從@SLaks建議:原線更改爲
var m = new Map();
的伎倆
沒有「字典」,但在JavaScript對象可以以非常相似的使用在Java中使用Map方法。
var myObject = {}
...
for (var key in myObject) {
if (myObject.hasOwnProperty(key)) {
var value = myObject[key];
}
}
的hasOwnProperty()的檢查是避免尋找鍵上漲的JavaScript prototype chain。
{}
是「對象字面量」。除object prototype(功能有限,如toString
,hasOwnProperty
等)的部分內容外,它沒有任何方法或屬性,以及您在其上定義的內容。否則它是空的,不會公開您期望的字典上的功能。這就是Object
用武之地。
靜態Object
基準上有一個API,你可以提供你的對象,有效地公開一組可以在你的對象,好像他們是默認的方法進行功能一個「字典」可能會暴露。
var m = {};
m.a = 'x';
Object.keys(m) // => ['a']
您可以找到Object
支持在MDN更多的方法,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
沒有字典這樣的東西。或者你在問[[Map]類](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)?這是一個普通的課程。 – SLaks
你可以使用'Object.keys(m)'。 –
@SLaks是的,我可能正在尋找一個地圖。請寫一個更詳細的答案。 – javadba