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)
も同様です。)Number
Boolean
とはいえ、エラーが発生した場合、Error
オブジェクトをスローする必要さえありません...throw 'Bad things happened';
動作します。
デバッグのためにオブジェクトリテラルをスローすることもできます。
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};