我想用自調用函數初始化一個數組,初始值爲從0到4的數字的平方。new
關鍵字創建一個新對象,因此可以在關鍵字new
之後訪問在IIFE正文中使用this.x
或this[x]
的新創建對象的字段。該代碼是:使用自調用函數進行數組初始化
var arr = new (function() {
for (var i=0; i<5; i++) { this[i]=i*i; }
})();
現在,你可以訪問變量arr
的相應字段,如arr[4]
,並獲得16
。如果你只使用arr
就像使用對象一樣工作,那就太好了,但是一旦你嘗試像數組一樣對待它,你就會遇到問題。也就是說,你可以不適用像reduce
功能吧:
< arr.reduce(...);
> TypeError: arr.reduce is not a function
這是因爲arr
是一個真正的對象,而不是一個數組:
< arr;
> ({0:0, 1:1, 2:4, 3:9, 4:16})
因此,這裏是我的問題:如何避免這樣的行爲在這個方法內?如何讓JavaScript將這個新創建的對象解釋爲一個數組?
爲什麼不直接返回數組?例如,'var arr =(function(){ret = []; for(var i = 0; i <5; i ++){ret [i] = i * i;} return ret;)();' –