2013-03-29 256 views
-1
簡單的錯誤

請有人能告訴我爲什麼下面的第1行拋出用下劃線

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

我是新來的JavaScript和骨幹錯誤,這個錯誤是沒有意義的我。

感謝

<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'的屬性。 –

+0

@FabrícioMatté請你解釋一下。我不清楚你的迴應。謝謝 – user2225631

+0

我不確定這裏沒有定義什麼。人物對象全部被定義。然後將它們添加到人員(這是一個定義的集合對象)。我以爲console.log會打印一個具有age = 12屬性的人物對象數組? – user2225631

回答

1

好像你想要這個:

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

Underscore's whereBackbone Collection's where是兩回事。

就像Fabricio說的那樣,錯誤意味着某些代碼正在嘗試讀取未定義的屬性。類似於foo.age其中fooundefined將產生此錯誤。

既然你說你是JavaScript新手......在Chrome開發工具中,你可以點擊錯誤,它會帶你到錯誤發生的地方。在這種情況下,需要您強調源代碼。當庫中發生錯誤時,99%的時間(如果庫被廣泛使用)意味着你使用了錯誤的東西,並且可以檢查文檔以查看正在發生的事情。

+0

這使我糾結了多次,比我想承認:P – mmmeff