我正在阅读Mozilla网络文档中关于如何在Javascript中扩展内置错误的以下片段。我正在使用ES5,因为我在使用ES6语法时遇到了问题。
我不明白的是:"Code Chunk C"
是否必要?
"Code Chunk B"
将CustomError的原型设置为一个对象,其(1)原型为Error.prototype
,(2)将具有名为constructor
的属性,其值为{{1 }}。
在以下代码块(Error
),"Code Chunk C"
中,根据我的理解,将Object.setPrototypeOf
的原型设置为CustomError
。这很令人困惑,我们不是只将原型设置为Error
吗?我使用和不使用此代码块测试了代码,在这两种情况下,结果都是正确的:
Error.prototype
const error = CustomError()
error.__proto__ === BaseError.prototype // True
这不是我的预期,因为我不希望error.__proto__.__proto__ === Error.prototype // True
与Error.prototype
相同。
有人可以回答以下问题:
1)如果首先运行Error
,是否需要"Code Chunk C"
?
2)考虑到我之前解释过的困惑,"Code Chunk B"
和"Code Chunk B"
如何做同样的事情?
提前致谢!
"Code Chunk C"