Я новичок в javascript, который пытается перейти от обработки к javascript.Javascript basic instanciation
Использование Paper.js, я просто пытаюсь понять эквивалент классов и их функций с приведенным ниже кодом, но сохраняю эту ошибку: невозможно прочитать свойство «move» of 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();
}
}
Может кто-нибудь пролить свет? Благодаря !
'prototype' это особое свойство ** функций **. Обычные объекты не имеют этого свойства, поэтому 'Яблоки [i] .prototype'' undefined'. Даже если вы вызвали 'Apples [i] .move()', это не сработало бы, так как объекты, которые вы возвращаете из 'Apple', являются экземплярами' Path.Circle', которые, вероятно, не имеют метода 'move'. Мне непонятно, почему вы делаете 'return this.path' внутри конструктора. Я думаю, вы больше всего выиграете от чтения учебников, таких как http://eloquentjavascript.net/06_object.html и https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript –
@Felix Король: Насколько я знаю, любые значения, возвращаемые конструкторами javascript, игнорируются. –
@Alastair: нет, если объект возвращается. –