我有一个我想从easylJS库中创建的对象,我想将它存储在一个对象中。我不确定我是存储它还是错误地访问它,但是当我稍后检查它时,该对象是未定义的。
我的对象的一个例子是:
var ShapeObject = function() {
var self = this;
var name;
var shape;
var rotation;
var color;
this.initialize = function(n, s) {
name = n;
shape = s;
rotation = this.randomRange()+1;
color = this.randomColor();
};
};
我正在尝试创建和存储如下:
shapes = new Array();
for (i=0;i<2;i++) {
var theShape = new createjs.Shape();
sObject = new ShapeObject();
sObject.initialize("shape"+i, theShape);
shapes.push(sObject);
}
后来我只是试图尊重并创建如下:
for (i=0;i<2;i++) {
stage.addChild(shapes[i].shape);
}
是否有可能做我正在尝试的事情?
答案 0 :(得分:2)
代码中的shapeObject
没有.shape
属性,因此shapes[i].shape
将为undefined
。
在构造函数中声明的局部变量不是外部世界的可见属性。它们根本不是属性,只是局部变量。它们适用于.initialize()
方法和构造函数,但不适用于其他任何内容。
必须在方法中初始化对象的公共属性,方法是设置this.shape = xxx
this
指向您的对象。
您可以将initialize()
方法更改为:
this.initialize = function(n, s) {
this.name = n;
this.shape = s;
this.rotation = this.randomRange()+1;
this.color = this.randomColor();
};
然后,删除与这些属性同名的所有var
声明。