从JSON构造构造函数

时间:2013-02-23 00:52:42

标签: javascript json

从JSON,我想请求构造函数的名称并让它在javascript中执行。

json.js

{
    objArray = [
        {
            "funcName":"executeMe"
        }
     ]
}

page.js

var newInstance = createInstanceByName(objArray[0].funcName); //"executeMe"
//Functions like: var newInstance = new lib.executeMe();

lib.js (我无法控制)看起来像这样:

(lib.executeMe = function() {
    this.initialize(img.executeMe);
}).prototype = new cjs.Bitmap();
p.nominalBounds = new cjs.Rectangle(0,0,200,200);

我希望我可以从this thread重新调整解决方案,但重要的是我可以在整个page.js中使用变量newInstance - 这还不足以让我将它传递给上下文。我需要在这里完成任务。

createInstanceByName()如何工作?

1 个答案:

答案 0 :(得分:2)

function createInstanceByName(funcName) {
    return new lib[funcName];
}

如果你需要传递参数,那么把它们放在一个数组中,然后改为:

function createInstanceByName(funcName, args) {
    var inst = Object.create(lib[funcName].prototype)
    lib[funcName].apply(inst, args);
    return inst;
}

您也可以通过切片而不是使用数组来使用arguments对象。

Object.create方法在旧浏览器中不可用,但可以为此目的充分填充。