我的问题很奇怪,因为它纯粹是为了挖掘js功能而不是它有用。有没有办法重新定义window.TypeError
,以便我可以永久地将message
属性更改为静态内容,如"testing message"
?
考虑这段代码:
try {
null.f();
}
catch(ex) {
console.log(ex.message) // should print 'testing message'
//but keeps on printing 'TypeError: Cannot read property 'f' of null'
}
如果我使用TypeError
检查Object.getOwnPropertyDescriptor(window,'TypeError')
我可以看到它是configurable:true
,所以我必须能够覆盖它,但我似乎无法让它正常工作。
我尝试了所有不同的变体,但这是我最近的尝试:
function MyError() {
this.message = "testing message";
}
MyError.prototype = Object.create(TypeError.prototype);
MyError.prototype.name = "MyError";
MyError.prototype.constructor = MyError;
Object.defineProperty(window, 'TypeError',
{
get: function () {
return MyError;
}
})