новые методы массивов JS
Я хочу добавить свои методы в массив JS. Для этого, я обращаюсь к prototype объекта Array. Вот так:
Array.prototype.checkElement = function(e, index) {
for (let i = 0; i < this.length; i++) {
if (this[i] === e) {
return index ? i : true;
}
}
return false;
};
Все работает, но появляется проблема: этот метод видит цикл for… in, и, соответственно, это приводит к разного рода ошибкам, так как метод попадает в качестве ключа объекта при перечислении. Я попробовал скрыть его с помощью Object.defineProperty, вот так:
(function () {
let newMethods = ["checkElement"];
newMethods.forEach(method => {
Object.defineProperty(Array.prototype, method, {
enumerable: true,
});
});
})();
Но по какой-то причине, for… in все равно его видит. Как мне это исправить?
Ответы (1 шт):
Автор решения: smoking_elk
→ Ссылка
А, все, я разобрался, оказывается, нужно наоборот писать false в Object.defineProperty, тогда все работает корректно. Зато теперь можно делать кастомные методы массивам.