从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()如何工作?
答案 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
方法在旧浏览器中不可用,但可以为此目的充分填充。