var err1 = Error('message');
var err2 = new Error('message');
違いは何ですか?Chrome コンソールでそれらを見ると、同じように見えます。オブジェクトと同じ__proto__チェーンの同じプロパティ。ほとんどError工場のような行為のようです。
どれが正しいですか、なぜですか?
var err1 = Error('message');
var err2 = new Error('message');
違いは何ですか?Chrome コンソールでそれらを見ると、同じように見えます。オブジェクトと同じ__proto__チェーンの同じプロパティ。ほとんどError工場のような行為のようです。
どれが正しいですか、なぜですか?
どちらも問題ありません。これは仕様で明示的に述べられています:
... したがって、関数呼び出しは、同じ引数を持つ
Error(…)オブジェクト作成式と同等です。new Error(…)
Error他のネイティブ コンストラクタのように、ファクトリのように動作します: Array、Objectなど。すべて のようなものをチェックしますif (!(this instanceof Array)) { return new Array(arguments); }。(ただし、String(x)とは非常に異なることに注意してください。とnew String(x)も同様です。)NumberBoolean
とはいえ、エラーが発生した場合、Errorオブジェクトをスローする必要さえありません...throw 'Bad things happened';動作します。
デバッグのためにオブジェクトリテラルをスローすることもできます。
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};