当我有一个物体时:
var YayanObject = function(var1, var2, var208) {
this.var1 = var1;
this.functiony = function() {
More Functiony stuff :)
}
Do stuff :D
}
我想用2个变量来称呼它:
var1 = "YayanObject";
var2 = [1,"2","Hello world"];
我想打电话给对象:
window[var1](????);
我如何填写问号?
答案 0 :(得分:1)
如果我理解正确,var2包含函数的参数,是吗?
在这种情况下,像这样:
window[var1].apply(this, var2);
答案 1 :(得分:1)
您可以使用apply
:
fun.apply(thisArg[, argsArray]):
- 的 thisArg 强>:
this
的值为fun
的调用提供了。请注意,这可能不是方法看到的实际值:如果方法是a 在非严格模式代码中运行,null
和undefined
将是 替换为全局对象,原始值将被加框。- 的 argsArray 强>: 类似于数组的对象,指定应该调用
fun
的参数,如果没有参数,则指定null
或undefined
提供给该职能部门。
请注意,如果您不使用严格模式,则声明不带var
的变量会使它们成为全局变量,因此您可以将其用作window
的属性:
var1 = "YayanObject";
var2 = [1,"2","Hello world"];
window[var1].apply(null, var2); /* Instead of `null` you can use the object
you want to become `this` */
但我建议您在var1
中存储对构造函数的引用而不是字符串:
var var1 = YayanObject,
var2 = [1,"2","Hello world"];
var1.apply(null, var2);