2016-10-01 32 views
2

使用ES6的Reflect.construct後,我發現將對象類型參數化爲new關鍵字也可以。Reflect.construct vs new(對象類型在這裏)

https://jsfiddle.net/mnw349o5/

function Nice() { 
    return Date; 
} 


window.alert(new (Nice())); // will show the date today 

window.alert(Reflect.construct(Nice(), [])); // same as above 

window.alert(new Nice()); // not the intended 

如果我還是用傳遞對象類型作爲新的關鍵字參數來創建動態的對象,因爲它似乎也工作的方法嗎?不使用Reflect.construct會減少項目的節點模塊依賴性。

目前我正在使用和聲反射來填充反射,所以我可以在基於ES5的TypeScript項目上使用它。

+0

我不明白你在使用'Reflect.construct'時看到的優點。你能詳細說明嗎? – Bergi

+0

「參數化」是什麼意思? – Bergi

+0

@Bergi re「參數化」我不知道如何調用「新的開放圓括號對象類型閉括號」成語。這只是在JavaScript中我發現動態創建一個對象與'''新'''關鍵字是可能的。而在C#中,我將不得不使用Activator.CreateInstance,這與Reflect.construct類似。 –

回答

0

沒有理由使用Reflect,直到你需要它(在construct的情況下,將用於設置newtarget爲任意值)。你不需要它,所以你不應該使用它。