私は小さな JS ライブラリを開発していて、そこでカスタム エラー例外を使用する予定でした。
そこで、ネイティブ Javascript エラー オブジェクトから次のように (ORLY?) 継承することにしました。
var MyError = function(){
Error.prototype.constructor.apply(this, arguments);
};
// Inherit without instantiating Error
var Surrogate = function(){};
Surrogate.prototype = Error.prototype;
MyError.prototype = new Surrogate();
// Add some original methods
MyError.prototype.uniqueMethod = function(){...}
通常の継承のように見えます..しかし!
var err = new MyError("hello! this is text!");
console.log(err.message); // is giving me empty string!
私はこれに関する記事をこことMDNで読みましたが、それらのすべてが私に次のようなものを使用するように言っています:
var MyError = function(msg){
this.message = msg;
};
しかし、私の質問は、エラーのコンストラクターにない場合、メッセージはどこで初期化されるのでしょうか? Error ネイティブ コンストラクタがどのように機能するかを誰かが知っているのではないでしょうか?
ありがとう!
PS 興味深い場合 - 私はEnum.jsライブラリを開発していました。