重新定义TypeError以获得静态消息

时间:2017-10-16 21:07:40

标签: javascript

我的问题很奇怪,因为它纯粹是为了挖掘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;
    }
})

0 个答案:

没有答案