Мне нужно расширить класс, чтобы можно было делать так:
[1, 2, 3].property.containsKey('0')
Нужно именно для объекта проверять, есть ли ключ.
Особенность в том, что нельзя создать новый объект, нужно именно расширить базовый.
Я написал код ниже, но this
оказывается равным undefined
.
Как добиться правильной работы?
Object.prototype.property = {
containsKey: (key) => {
return key in this;
}
};
В приведенном коде, добиться "правильной" работы не получится, так как нет возможности получить объект, по свойству.
Поэтому самое простое решение - убрать лишнюю прослойку .property
Object.prototype.containsKey = function(key) {
return key in this;
};
console.log([1, 2, 3].containsKey('0'))
Если прослойка зачем-то нужна, то можно объявить getter
с помощью Object.defineProperty
Object.defineProperty(Object.prototype, 'property', {
get: function() {
return {
containsKey: (key) => key in this
};
}
});
console.log([1, 2, 3].property.containsKey('0'))
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую NavLink для формирования адресной строкиВ одной из компонент url формируется по шаблону:
сделал аяксом запрос на покупку тарифплана на сайте, дополнительно захотелось выполнить валидацию на сервере (например если введенная сумма...
Для расчета дней в периоде использую вот такую функцию
Как создавать свой шаблон в SuggestView я понял, но как вывести данные от SuggestView в шаблоне - я так и не понял