从函数名称调用Javascript函数

时间:2016-04-27 01:03:20

标签: javascript reflection

我需要调用一个函数,将其名称作为字符串。 这就是我到目前为止所做的:

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的一个属性。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

你需要"新"调用构造函数时的关键字。即,

var obj = new window[type]();