2011-06-25 7 views
13

コンストラクタを関数として呼び出す(つまり、newキーワードを忘れる)古いトリック(that I learned on SO)があります。以下のようなものは、上の各コンストラクタに入ります。このインスタンスのarguments.calleeの厳密なモード

if (!(this instanceof arguments.callee)) { 
    throw Error("Constructor called as a function"); 
} 

"use strict";が必要な場合の代替方法は何ですか?

一般的な性質は保持できますか?または、arguments.calleeの代わりにコンストラクタの名前を使用する必要がありますか?

答えて

5

arguments.calleeそれ自体は、名前付き関数式の代わりに非難されています。私はこの動きに必ずしも同意するわけではありませんが、それは物事がどのように進歩したかです。そのため、arguments.calleeを関数名に置き換えることは、strictモードでの唯一の方法であり、非strictモードでの優先方法でもあります。

関連する問題