Javascript: как добавить геттер к существующему объекту

Я могу получить getter в javascript-объекте, подобном этому

var member = {
                 firstName:"XYZ", 
                 lastName:"zzz", 
                 get fullName(){ return (this.firstName + ' ' + this.lastName); }
              }

И я даже могу добавить дополнительные свойства на лету, как это

member.isGuest = true;

Но можно ли добавить геттеры к уже существующему объекту? Что-то вроде этого

member.isGuest = get isGuest(){ return this.firstName=='Guest';}

Ответы

Ответ 1

попробуйте defineProperty

Object.defineProperty(member, 'isGuest', {
  get: function() { return this.firstName=='Guest' }
});

Ответ 2

Вы можете использовать новый Object.defineProperty таким образом:

    Object.defineProperty(
        member, 
        'prop', 
        {
            get: function() { 
                return this.lastName.toUpperCase()
            }
        }
);

В прошлом вам приходилось использовать __defineGetter__, но теперь он устарел

Ответ 3

Вы можете использовать get и set только в классе, это означает, что метод getter и setter. но вы можете добавить функцию в класс:

member.isGuest = function isGuest(){ return this.firstName=='Guest';}

member.isGuest()

get означает, что свойство можно прочитать! набор означает, что свойство может быть записано! Вы можете посмотреть его в книге "JavaScript: The.Definitive.Guide" 6 6-й выпуск!