Javascript基本的instanciation

时间:2016-05-27 02:49:21

标签: javascript instances

我是一个试图从处理过渡到javascript的javascript新手。

使用Paper.js,我只是试图通过下面的代码来理解类及其函数的等价物,但是仍然存在这样的错误:无法读取属性'移动'未定义。

    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();
        }
    }

有人可以解决一些问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

改变这个:

function onFrame(event){
    for(var i=0; i < Apples.length; i++){
        Apples[i].prototype.move();
        }
    }

到此:

function onFrame(event){
    for(var i=0; i < Apples.length; i++){
        Apples[i].move();
        }
    }

特殊prototype属性为指定类的所有未来实例(在您的情况下为Apple类)添加属性(在本例中为一个函数的属性)。

此外,结合费利克斯所说的改变了这一点:

function Apple (center) {
        this.color = 'red';
        this.center = center;
        this.path = new Path.Circle(this.center, 50);
        this.path.fillColor = 'black';
        return this.path;
    }

到此:

function Apple (center) {
        this.color = 'red';
        this.center = center;
        this.path = new Path.Circle(this.center, 50);
        this.path.fillColor = 'black';
    }