我正在開發一個小JS庫,並且使用那裏自定義的錯誤異常。擴展JavaScript錯誤/異常
所以,我決定要繼承他們從本地JavaScript Error對象以這種方式(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!
我看了一下這個here和MDN文章,但他們說我使用的是這樣的:
var MyError = function(msg){
this.message = msg;
};
但我的問題是 - 如果不是在錯誤的構造函數,那麼在哪裏消息被初始化? 可能有人知道錯誤本機構造函數的工作原理?
謝謝!
P.S.如果它很有趣 - 我正在開發Enum.js庫。
使其儘可能簡單: 'var obj = new Error(); Error.call(obj,「Hello,world!」);' 這也行不通。 '錯誤'很奇怪。 – Ryan
@minitech:*「'錯誤'很奇怪。」* +1 –