2013-03-29 3 views
-1

S'il vous plaît quelqu'un pourrait me dire pourquoi la ligne 1 ci-dessous jette l'erreurerreur simple avec underscore

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

Je suis nouveau à javascript et l'épine dorsale et cette erreur fait aucun sens pour moi.

Merci

<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

Ce n'est pas un problème de backbone/underscore, mais plutôt un problème de base JS. Vous essayez de lire une propriété nommée 'age' à partir d'une référence qui a la valeur de' undefined'. –

+0

@ FabrícioMatté S'il vous plaît pouvez-vous expliquer. Je ne suis pas clair sur votre réponse. Merci – user2225631

+0

Je ne suis pas sûr de ce qui est indéfini ici. Les objets personne sont tous définis. Ensuite, ils sont ajoutés aux personnes (qui est un objet de collection défini). Je pensais que console.log imprimerait un tableau d'objets personnels avec l'attribut age = 12 ?? – user2225631

Répondre

1

On dirait que vous voulez ceci:

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

Underscore's where et Backbone Collection's where sont deux choses différentes. Comme l'a dit Fabricio, l'erreur signifie que du code essaie de lire une propriété non définie. Quelque chose comme foo.agefoo est undefined produira cette erreur.

Depuis que vous dites que vous êtes nouveau à javascript ... Dans les outils de développement Chrome, vous pouvez cliquer sur l'erreur et il vous mènera à l'endroit où l'erreur est survenue. Dans ce cas, il vous faut pour souligner le code source. Lorsqu'une erreur se produit dans une bibliothèque, 99% du temps (si la bibliothèque est largement utilisée) signifie que vous utilisez quelque chose de mal, et pouvez consulter la documentation pour voir ce qui se passe.

+0

Cela m'a embrouillé plus de fois que je ne voudrais l'admettre: P – mmmeff

Questions connexes