2013-09-05 5 views
1

Я получаю «map is undefined», не знаю почему.
Я передаю неправильную переменную, или myMap ошибочно объявлен?Объект javascript не определен?

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' выглядит нормально, кроме того, что вы могли бы сократить вызов конструктора в' {} 'literal – 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)); 
Смежные вопросы