Je suis un novice javascript qui essaie de passer du traitement au javascript.Javascript instanciation de base
En utilisant Paper.js, j'essaie simplement de comprendre l'équivalent des classes et de leurs fonctions avec le code ci-dessous mais je continue à avoir cette erreur: Impossible de lire la propriété 'move' de undefine.
function Apple (center) {
this.color = 'red';
this.center = center;
this.path = new Path.Circle(this.center, 50);
this.path.fillColor = 'black';
return this.path;
}
Apple.prototype.move = function(){
console.log('allo');
}
var Apples = [];
var nbA = 10;
for(var i=0; i < nbA; i++){
var center = new Point.random() * view.size;
Apples.push(new Apple(center));
}
function onFrame(event){
for(var i=0; i < Apples.length; i++){
Apples[i].prototype.move();
}
}
Quelqu'un peut-il jeter de la lumière? Merci !
'prototype' est une propriété spéciale de fonctions ** **. Les objets normaux n'ont pas cette propriété, donc 'Apples [i] .prototype' est' undefined'. Même si vous appelez 'Apples [i] .move()' cela ne fonctionnerait pas, puisque les objets que vous retournez de 'Apple' sont des instances de' Path.Circle', qui n'ont probablement pas de méthode 'move'. Ce n'est pas clair pour moi pourquoi vous faites 'return this.path;' dans le constructeur. Je pense que vous bénéficieriez le plus de la lecture des tutoriels tels que http://eloquentjavascript.net/06_object.html et https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript –
@Felix King: Pour autant que je sache, les valeurs renvoyées par les constructeurs javascript sont ignorées. –
@Alastair: Pas si un objet est retourné. –