我正在开发一个小型 JS 库,并在那里使用自定义错误异常。
所以,我决定以这种方式从原生 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!
我已经在此处和MDN上阅读过有关此的文章,但所有人都说我要使用以下内容:
var MyError = function(msg){
this.message = msg;
};
但我的问题是 - 如果不在 Error 的构造函数中,那么消息在哪里初始化?可能有人知道 Error 本机构造函数是如何工作的?
谢谢!
PS 如果有趣的话——我正在开发Enum.js库。