@rd100

Как создать метод, который не будет видно в объекте, но найдёт его в цепочке прототипа?

Есть объект
let obj = {};
В нем мы делаем перебор for in и там не должно оказаться неправильных(других) ключей-значений.
Как нам в obj добавить геттер, чтобы при вызове
obj.count мы получали срабатывание функции, которая бы в this видела obj, но метод брался из другого места.
Пытался сделать Object.prototype.get_count = function() {...};
Но выдает ошибку, я так понял get_counter стал тоже виден в obj и это все портит.

Можно сделать что-то в виде приватного метода, который есть, но его не видно?

При вызове get_all не должно в перебор попадать get_all
Но при этом объекты в этом объекте должны наследовать этот метод
https://jsfiddle.net/tzwb65pm/
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
Object.defineProperty(Object.prototype, 'get_all', {
  get() {
    return () => {
      for (let key in this) {
        console.log(key);
      }
    }
  }
})

let obj = {};
obj.x = '100';
obj.y = '200';

obj.get_all();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
WblCHA
@WblCHA
const obj = (() => {
  let priv_count = 0;

  return {
    get count() {
      return priv_count;
    }
  }
})();

Типа этого?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы