Прототип массива доступен только для чтения, свойства не должны добавляться no-extension-native - PullRequest
0 голосов
/ 20 ноября 2018

Так что в основном у меня есть этот код:

Array.prototype.inState = function (needle, haystack) {
  let index = this.findIndex(value => value[needle] === haystack);

  return index === -1;
};

, и он работает достаточно, чтобы проверить, существует ли данная игла в состоянии реакции или нет.но ESlint продолжает говорить, что:

Array prototype is read only, properties should not be added  no-extend-native

поэтому мой вопрос: что не так с моим кодом?

1 Ответ

0 голосов
/ 20 ноября 2018

Из документов 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...