eslint/no-extend-native 可疑
它做了什么
防止向原生全局对象(如 Object、String 或 Array)添加新属性。
为什么这是不好的?
扩展原生对象可能导致意外的行为,并与其他代码产生冲突。
例如:
js
// 添加一个新属性,看似没问题
Object.prototype.extra = 55;
// 定义一个用户对象
const users = {
1: "user1",
2: "user2",
};
for (const id in users) {
// 这将打印出 "extra" 以及 "1" 和 "2":
console.log(id);
}示例
此规则的 错误 代码示例:
js
Object.prototype.p = 0;
Object.defineProperty(Array.prototype, "p", { value: 0 });此规则的 正确 代码示例:
js
x.prototype.p = 0;
Object.defineProperty(x.prototype, "p", { value: 0 });配置
此规则接受一个配置对象,包含以下属性:
exceptions
type: string[]
default: []
允许作为规则例外的对象列表。
如何使用
通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-extend-native": "error"
}
}bash
oxlint --deny no-extend-native