私は小さなJSライブラリを開発していましたが、そこにカスタムエラー例外を使用しました。JavaScriptエラー/例外の拡張
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(){...}
は通常の継承のように見える...しかし:(?ORLY)
だから、私はこの方法でネイティブのJavaScriptエラーオブジェクトからそれらを継承することにしました! 、エラーのコンストラクタでない場合 -
var MyError = function(msg){
this.message = msg;
};
しかし、私の質問は:
var err = new MyError("hello! this is text!");
console.log(err.message); // is giving me empty string!
私はこのhere程度とMDN記事を読んだことがあるが、それらのすべては、私はこのようなものを使用することを言ってメッセージはどこで初期化されますか? 誰かがエラーネイティブコンストラクタの仕組みを知っているかもしれませんか?
ありがとうございます!
P.S.興味があれば - 私はEnum.jsライブラリを開発していました。
'var obj = new Error(); Error.call(obj、 "Hello、world!"); ' これはうまくいきません。 「エラー」は奇妙です。 – Ryan
@minitech:* "エラーは奇妙です。" * +1 –