2016-06-21 82 views
3

我用this answer here通過使用下面的代碼傳遞數組參數構造一個新的類實例:參數使用綁定時丟失應用與數組參數

new (Cls.bind.apply(Cls, arguments))(); 

但我的論據之一是數組和值獲得建設

過程中丟失,您可以查看演示此in this CodePen

在我傳遞的第三個參數properties的例子爲例:

var properties = [ 
    { name: "first", value: "1" }, 
    { name: "second", value: "2" }, 
    { name: "third", value: "3" } 
]; 

但是結果中的屬性是undefined

顯然這裏出了問題,但是什麼?爲什麼?

回答

4

你的代碼幾乎是正確的,但你需要一個額外的參數傳遞給您的factory()factory(undefined, name, description, properties)

這在SO回答你在你的問題鏈接到強調:

的任何參數並不重要,因爲新的關鍵字會重置f的上下文。但是,由於語法原因,這是必需的。現在,爲了進行綁定調用:我們需要傳遞可變數量的參數,所以這個技巧: var f = Cls.bind.apply(Cls,[anything,arg1,arg2,...]); result = new f();

+0

男人,這是愚蠢的... – Wilt

+0

我應該注意到它,我只需要更仔細地看看輸出... – Wilt