2016-10-01 9 views
2

ES6のReflect.constructを使用した後、オブジェクトタイプを新しいキーワードにパラメータ化することも機能することに気付きました。Reflect.constructと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を使用しないと、プロジェクトのノードモジュールの依存性が1つ少なくなります。

現在、私はpolyfill Reflectにハーモニーリフレクションを使用していますので、ES5ターゲティングTypeScriptプロジェクトで使用できます。

+0

私はあなたが 'Reflect.construct'を使う際にどんな利点があるか分かりません。あなたは精緻化できますか? – Bergi

+0

"パラメータ設定"とは、正確には何を意味しますか? – Bergi

+0

@Bergi re "parameterizing" '' '新しいオープンカッコのオブジェクト型が閉じ括弧' ''イディオムがどのように呼び出されるのか分かりません。それはjavascriptでのみです。私は、 '' 'new'''キーワードでオブジェクトを動的に作成することが可能であることを発見しました。 C#では、Activator.CreateInstanceを使用する必要がありますが、これはReflect.constructに似ています。 –

答えて

0

Reflectを使用する理由はありません(constructの場合は、newtargetを任意の値に設定することになります)。あなたはそれを必要としないので、使用しないでください。

関連する問題