我需要调用一个函数,将其名称作为字符串。 这就是我到目前为止所做的:
var obj = window[type]();
Type是字符串。我正在用Wall()函数测试它:
Wall.prototype = new GameObject();
Wall.prototype.constructor = Wall;
function Wall() {
this.bounds.width = 50;
this.solid = true;
this.bounds.height = 50;
this.layer = 1;
this.bounds.setCenter(engine.gameView.center().add(75, 75));
this.render = function() {
engine.gameView.fillRect(this.bounds, new Color(0, 0, 0));
};
}
GameObject是一个“扩展”的类。当我只是正常使用new Wall()
时(不使用反射),它可以正常工作。但是如果我使用反射,它会将Wall输出为一个Window(正如我在其构造函数中看到的console.log)。当我在没有反射的情况下调用它时,它会将其输出为Wall。因为它在使用反射时表示它是一个Window,所以它表示边界是未定义的,因为它是GameObject的一个属性。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
你需要"新"调用构造函数时的关键字。即,
var obj = new window[type]();