【发布时间】:2023-03-16 03:59:01
【问题描述】:
我正在开发一个小型 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!
我已经阅读了关于 here 和 MDN 的文章,但他们都说我要使用这样的东西:
var MyError = function(msg){
this.message = msg;
};
但我的问题是——如果不在Error的构造函数中,那么消息在哪里初始化? 可能有人知道错误原生构造函数是如何工作的?
谢谢!
附:如果有趣的话 - 我正在开发 Enum.js 库。
【问题讨论】:
-
让它尽可能简单:
var obj = new Error(); Error.call(obj, "Hello, world!");这也不起作用。Error很奇怪。 -
@minitech: "
Error很奇怪。" +1
标签: javascript exception inheritance native