2013-09-05 161 views
1

我得到「地圖是undefined」,不知道爲什麼。
我是否傳錯了一個錯誤的變量,或者是錯誤地聲明瞭myMapjavascript對象未定義?

var myMap = new Object(); 
$(things).each(function(){ 
    var thing= this.attributes.things.Value; 
    alert("thing= " + thing); 
    var totalThings= myMap[thing]; 
    alert("totalThings= " + totalThings);     
}); 
+2

好像你正在訪問'thing'一個空對象的字段:'myMap [thing]' – mishik

+0

你得到了什麼錯誤信息? 'myMap'看起來不錯,除此之外你可以將構造函數的調用縮短爲'{}'字面 – Bergi

+1

我在該片段中沒有看到任何名爲'map'的東西。 –

回答

4

機會是myMap被定義,但myMap[thing]不是(因爲它是沒有屬性處女對象)。並且由於您的獲得了的值(而不是設置爲),您會收到錯誤消息。

// virgin object 
var myObj = new Object(); 
console.log(JSON.stringify(myObj)); // "{}" 

// therefore property "foo" doesn't exist 
console.log(myObj['foo']);   // undefined 

// but if we add it: 
myObj['foo'] = 'bar'; 

// now it exists 
console.log(myObj['foo']);   // "bar" 
+0

喲是男人....謝謝 –

+0

「既然你得到的價值(而不是設置它),你會得到一個錯誤。」嘗試獲取未定義的屬性不會引發錯誤,它只是返回'undefined'。 – leaf

0

你可以做這樣的事情

function myMap(thing){ 
// properties and defaults 
this.thing = thing || 'default' 
} 

var myMapInstance = new myMap(whateverTheThingIs); 
0

如果事情是一個字符串,可能是你試圖做:

myMap[things] = thing; 
alert("totalThings = " + JSON.stringify(myMap, null, 4));