Tôi đã phát triển một thư viện JS nhỏ và đã sử dụng các ngoại lệ lỗi tùy chỉnh đó.Mở rộng các lỗi/ngoại lệ JavaScript
Vì vậy, tôi quyết định thừa kế chúng từ mẹ đẻ Lỗi đối tượng javascript theo cách này (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(){...}
Hình như thừa kế thông thường .. Nhưng!
var err = new MyError("hello! this is text!");
console.log(err.message); // is giving me empty string!
Tôi đã đọc bài viết về here này và trên MDN, nhưng tất cả đều nói rằng tôi sử dụng một cái gì đó như thế này:
var MyError = function(msg){
this.message = msg;
};
Nhưng câu hỏi của tôi là - nếu không muốn nói trong constructor của Lỗi, sau đó, nơi thông báo được khởi tạo? Có thể ai đó biết cách hàm tạo lỗi gốc hoạt động không?
Cảm ơn!
P.S. Nếu nó thú vị - tôi đã phát triển thư viện Enum.js.
Làm cho nó đơn giản nhất có thể: 'var obj = new Error(); Error.call (obj, "Xin chào, thế giới!"); ' Điều này cũng không có tác dụng. 'Lỗi' là lạ. – Ryan
@minitech: * "' Lỗi 'là lạ." * +1 –