var err1 = Error('message');
var err2 = new Error('message');
違いは何ですか?クロムコンソールでそれらを見ると、彼らは同じように見えます。オブジェクトと同じチェーンに同じプロパティがあります。ほとんどの場合、Error
は工場のように動作します。throwエラー( 'msg')vs新しいエラー( 'msg')をスローする
どちらが正しいのですか?
var err1 = Error('message');
var err2 = new Error('message');
違いは何ですか?クロムコンソールでそれらを見ると、彼らは同じように見えます。オブジェクトと同じチェーンに同じプロパティがあります。ほとんどの場合、Error
は工場のように動作します。throwエラー( 'msg')vs新しいエラー( 'msg')をスローする
どちらが正しいのですか?
どちらも問題ありません。これは、明示的にthe specificationに記載されています
...このように関数呼び出し
Error(…)
は、同じ引数を持つオブジェクト作成式new Error(…)
と同等です。
これもES6でも当てはまりますか? – paulmelnikow
Error
ほとんどすべてのネイティブコンストラクタが行う実際には、工場のように動作します:Array
、Object
、...すべてのエラーの場合には、それはでも必須ではありません、と述べたif (!(this instanceof Array)){ return new Array(arguments);}
のようなものをチェックそれぞれを含む、すべてのネイティブコンストラクタはECMAScriptの中で定義されてい
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};
私は完全に同意していないのでしょうか? 'String(" abc ")'は 'String'オブジェクトを作成しません。新しい文字列(" abc ")は作成します。 – pimvdb
@pimvdb:true、それを 'Object' =>' Object( 'foo') 'に変更しました。文字列オブジェクトを返します。それは、ほとんどのネイティブコンストラクタ_ '、' Boolean'、 'Date'、' String'は全て '' Array''、 'Object''、' Error''ですが、 'Event'とすべての' DOMxxxx'-apiコンストラクタはエラーを投げます –
'new Array(arguments)'は 'Array(1,2,3)'とまったく同じことをしないと思う。しかしおそらく私はちょうどニックピッキングしています:) – pimvdb
:
Error
オブジェクトをスローする...throw 'Bad things happened';
もあなたも、デバッグ用のオブジェクトリテラルを投げることができ、動作します'new'なしで起動されたときの動作。 –
も参照してください[新しいエラー()は 'Error()'よりも良いでしょうか?](http://stackoverflow.com/q/38759428/1048572) – Bergi