Из документов EsLint:
В JavaScript вы можете расширить любой объект, включая встроенный или
«Родные» объекты. Иногда люди меняют поведение этих родных
объекты таким образом, что нарушают предположения о них в других
части кода.
Например, здесь мы переопределяем встроенный метод, который затем
влияет на все объекты, даже другие встроенные.
// seems harmless
Object.prototype.extra = 55;
// loop through some userIds
var users = {
"123": "Stan",
"456": "David"
};
// not what you'd expect
for (var id in users) {
console.log(id); // "123", "456", "extra"
}
Короче говоря, Array.prototype.inState
будет расширять array.prototype
и, следовательно, всякий раз, когда вы захотите использовать массив, функция instate также будет добавлена в этот массив.
Итак, в вашем случае этот пример будет применен к массиву.
Array.prototype.inState = function (needle, haystack) {
let index = this.findIndex(value => value[needle] === haystack);
return index === -1;
};
// loop through some userIds
var users = [{"123": "Stan"},{"456": "David"}];
// not what you'd expect
for (var id in users) {
console.log(users[id]); // "123", "456", "extra"
}
* 1022 ВОЗМОЖНОЕ РЕШЕНИЕ *
Вы можете добавить эту строку, чтобы игнорировать предупреждение.
/*eslint no-extend-native: ["error", { "exceptions": ["Object"] }]*/ to ignore that warning.
Ссылка: https://eslint.org/docs/rules/no-extend-native