【发布时间】:2013-12-26 13:06:40
【问题描述】:
我正在尝试将“选项”对象传递给另一个对象的构造函数。 选项有我尝试在另一个文件中读取的枚举。
js/mainApp.js:
square = new World(20, 20, null, 0);
var opts = new Options(MODE.SINGLE, REGION.MIDDLE_EAST);
world = new World(0, 0, "img/whatever.png", opts);
js/options.js:
var MODE = {
SINGLE : 1,
MULTI : 2
};
var REGION = {
MIDDLE_EAST : { xTranslate : -2300, yTranslate: -700, scale : 1.2}
};
function Options(MODE, REGION) {
this.mode = MODE;
this.region = REGION;
}
现在在 World 构造函数中,我收到第二个警报的错误“opts.region is undefined”。出于某种原因,第一个警报显示预期的“{ xTranslate : -2300, yTranslate: -700, scale : 1.2}”
js/options.js:
var World = ExtendingSomething.extend(
{
initialize: function(x, y, imageURL, opts) {
alert (JSON.stringify(opts.region));
alert (JSON.stringify(opts.region.scale));
...
}
}
);
编辑:我添加了一些信息
我不明白为什么我在运行时收到此错误is undefined
in this jsfiddle(感谢 Thomas C. G. de Vilhena 的创作)。
也许是我使用不同的文件有问题?
仍然:为什么调用opts.region没有问题,但是我一调用opts.region.scale,就会出现错误opts.region is undefined(不是opts.region.scale!)。
<script type="text/javascript" src="js/mainApp.js"></script>
<script type="text/javascript" src="js/options.js"></script>
<script type="text/javascript" src="js/world.js"></script>
编辑:我需要添加另一行代码来理解问题
【问题讨论】:
-
ExtendSomething.extend似乎缺少右括号,但除此之外,您发布的代码对我来说看起来还不错。为什么不创建一个 JSFiddle sn-p? -
我添加了右括号。什么是 JSFiddle sn-p?
-
@Sadik, jsfiddle.net
-
This jsfiddle 工作正常。它与您提供的代码有点不同。
-
我能看到的唯一区别是:1.) 我使用 world 作为具有初始化函数的子类,2.) 不同的函数出现在单独的文件中。我仍然不明白为什么会收到
is undefined错误。
标签: javascript object constructor enumeration member