2013-10-12 131 views
2

當我有一個對象:初始化數組對象,使用Javascript

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

功能是[*保留字*](https://開頭開發板的perl.mozilla.org/en/US/docs/Web/JavaScript/Reference/Reserved_Words)在JS中 - 你不能做'this.function = ...' – alfasin

+1

我知道..但那不是問題... – Yoeori

回答

1

你可以使用apply

fun.apply(thisArg[, argsArray]): 
  • thisArg: 規定的呼叫funthis值。請注意,這可能不是該方法看到的實際值:如果該方法是非嚴格模式代碼中的 函數,則將使用全局對象替換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); 
1

如果我理解正確,var2包含函數的參數,是嗎?

在這種情況下,像這樣:

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

謝謝,應該知道... – Yoeori