2013-03-29 2 views
-1

Пожалуйста, может кто-нибудь сказать мне, почему линия 1 ниже бросает ошибкуПростая ошибка с подчеркиванием

Uncaught TypeError: Cannot read property 'age' of undefined. 

Я новичок в яваскрипт и позвоночник, и эта ошибка не имеет смысла для меня.

Благодаря

<script> 
var Person = Backbone.Model.extend({ 
    initialize: function(){ 
     console.log("Person is initialized"); 
    } 
}); 

var People = Backbone.Collection.extend({ 
    model: Person, 

    initialize: function(){ 
     console.log("People model is initialized"); 
    } 
}); 

var person = new Person({age: 12}); 
var person2 = new Person({age: 15}); 
var person3 = new Person({age: 12}); 
var people = new People(); 
people.add(person); 
people.add(person2); 

// (1) var ages = _.where(people, {age: 12}); 
console.log(ages); 
</script> 
+0

Это не проблема с основной/нижней гранью, а скорее базовый JS. Вы пытаетесь прочитать свойство с именем «age» из ссылки, которая имеет значение 'undefined'. –

+0

@ FabrícioMatté Пожалуйста, объясните. Я не понимаю вашего ответа. Спасибо – user2225631

+0

Я не уверен, что здесь неопределено. Все объекты человека определены. Затем они добавляются к людям (который является определенным объектом коллекции). Я думал, что console.log будет печатать массив персональных объектов с атрибутом age = 12 ?? – user2225631

ответ

1

кажется, что вы хотите:

var ages = people.where({age: 12}); 

Underscore's where и Backbone Collection's where две разные вещи.

Как сказал Фабрицио, ошибка означает, что какой-то код пытается прочитать свойство неопределенного. Что-то вроде foo.age, где foo is undefined произведет эту ошибку.

Поскольку вы говорите, что вы новичок в javascript ... В инструментах Chrome dev вы можете щелкнуть по ошибке, и она перенесет вас туда, где произошла ошибка. В этом случае вы берете на себя исходный код подчеркивания. Когда в библиотеке возникает ошибка, 99% времени (если библиотека широко используется), это означает, что вы используете что-то неправильно и можете проверить документацию, чтобы узнать, что происходит.

+0

Это забивало меня больше раз, чем я хотел бы признать: P – mmmeff

Смежные вопросы