使用数组Javascript初始化对象

时间:2013-10-12 17:08:35

标签: javascript initialization

当我有一个物体时:

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](????);

我如何填写问号?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,var2包含函数的参数,是吗?

在这种情况下,像这样:

window[var1].apply(this, var2);

答案 1 :(得分:1)

您可以使用apply

fun.apply(thisArg[, argsArray]):
     
      
  • thisArg :   this的值为fun的调用提供了。请注意,这可能不是方法看到的实际值:如果方法是a   在非严格模式代码中运行,nullundefined将是   替换为全局对象,原始值将被加框。
  •   
  • argsArray :   类似于数组的对象,指定应该调用fun的参数,如果没有参数,则指定nullundefined   提供给该职能部门。
  •   

请注意,如果您不使用严格模式,则声明不带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);