Задать вопрос
Graff46
@Graff46
Программист любитель

Как перегрузить метаметоды в JS?

В ЯП Lua у объектов есть метатаблицы в которых содержаться метаметоды - ф-ции вызываемые при работе с объектами, по сути это и есть методы объекта, например добавление нового элемента в массив, эти метаметоды можно перегружать... Интерсно что есть метаметоды которые вызываются не только при явном вызове метода или св-ва объекта, но и при некоторых других событиях, например инициализация объекта, доступ к элементу массива и тд... В JS мне нужно отловить момент когда к массиву добавляется значение, не только через метод(ы)
var arr = [];
arr.push("string");

но и синтаксической конструкцией:
var arr = [];
arr[1] = "string";

Подскажите как можно отлавливать и перегружать методы у объектов в JS?

  • Вопрос задан
  • 135 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Используйте Proxy:

const arr = new Proxy([], {
  get(target, key) {
    const value = target[key];
    return value instanceof Function
      ? (...args) => {
          console.log(`метод "${key}" вызван со следующими аргументами:`, args);
          return value.apply(target, args);
        }
      : value;
  },
  set(target, key, value) {
    console.log(`свойству "${key}" назначено следующее значение:`, value);
    target[key] = value;
    return true;
  },
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы