gpt4 book ai didi

javascript - 使用 Object.create 而不是 setPrototypeof

转载 作者:行者123 更新时间:2023-11-29 21:13:48 25 4
gpt4 key购买 nike

我有以下代码确保 Promise.reject 返回一个实际的错误对象:

export const rejectWithAnError = function(error) {
if(error.constructor === Error) {
return Promise.reject(error);
}

const err = { error: true, message: error };
Object.setPrototypeOf(err, new Error());
return Promise.reject(err);
};

然后我发现了这个 link那说使用 Object.create 会更好。

在这种情况下我将如何使用 Object.create

最佳答案

该 MDN 链接特别指出:

If you care about performance you should avoid setting the [[Prototype]] of an object. Instead, create a new object with the desired [[Prototype]] using Object.create().

因此,与其使用文字表达式 { error: true, message: error } 创建一个对象并稍后更改其原型(prototype),不如创建一个原型(prototype)为 Error 的新对象。原型(prototype),然后在其上设置属性:

const err = Object.create(Error.prototype);
err.error = true;
err.message = error;

关于 MDN's Object.create page ,您可以看到大量使用 Object.create(Foo.prototype) 模式的示例。

关于javascript - 使用 Object.create 而不是 setPrototypeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40428343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com