gpt4 book ai didi

javascript - 在对象中存储对库对象的引用

转载 作者:行者123 更新时间:2023-12-02 15:06:14 26 4
gpt4 key购买 nike

我有一个从 easelJS 库创建的对象,我想将其存储在一个对象中。我不确定我是否正确存储或访问了它,但当我稍后检查时该对象未定义。

我的对象的一个​​例子是:

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

可以做我正在尝试的事情吗?

最佳答案

代码中的 shapeObject 没有 .shape 属性,因此 shapes[i].shape 将是未定义

构造函数中声明的局部变量对于外界来说是不可见的属性。它们根本不是属性,只是局部变量。它们属于 .initialize() 方法和构造函数的范围,但不属于其他任何内容。

必须在方法中通过设置 this.shape = xxx 来初始化对象的公共(public)属性,其中 this 指向您的对象。

您可以通过将 initialize() 方法更改为:

this.initialize = function(n, s) {
this.name = n;
this.shape = s;
this.rotation = this.randomRange()+1;
this.color = this.randomColor();
};

然后删除与这些属性同名的所有 var 声明。

关于javascript - 在对象中存储对库对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com