我正在使用以下逻辑来获取给定键的 i18n 字符串。
export function i18n(key) {
if (entries.hasOwnProperty(key)) {
return entries[key];
} else if (typeof (Canadarm) !== 'undefined') {
try {
throw Error();
} catch (e) {
Canadarm.error(entries['dataBuildI18nString'] + key, e);
}
}
return entries[key];
}
我在我的项目中使用 ESLint。我收到以下错误:
不要从目标对象访问 Object.prototype 方法“hasOwnProperty”。这是一个“ no-prototype-builtins ”错误。
如何更改我的代码以解决此错误?我不想禁用此规则。
原文由 booYah 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过
Object.prototype
访问它:那应该更安全,因为
Object.prototype
Object.prototype
的对象,hasOwnProperty
方法也可能被其他东西覆盖。当然,上面的代码假设
Object
没有被隐藏或重新定义Object.prototype.hasOwnProperty
尚未重新定义call
自己的财产已添加到Object.prototype.hasOwnProperty
Function.prototype.call
尚未重新定义如果其中任何一个不成立,试图以更安全的方式编码,您可能已经破坏了您的代码!
另一种不需要
call
的方法是