Ответ 1
попробуйте defineProperty
Object.defineProperty(member, 'isGuest', {
get: function() { return this.firstName=='Guest' }
});
Я могу получить 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';}
попробуйте defineProperty
Object.defineProperty(member, 'isGuest', {
get: function() { return this.firstName=='Guest' }
});
Вы можете использовать новый Object.defineProperty таким образом:
Object.defineProperty(
member,
'prop',
{
get: function() {
return this.lastName.toUpperCase()
}
}
);
В прошлом вам приходилось использовать __defineGetter__
, но теперь он устарел
Вы можете использовать get и set только в классе, это означает, что метод getter и setter. но вы можете добавить функцию в класс:
member.isGuest = function isGuest(){ return this.firstName=='Guest';}
member.isGuest()
get означает, что свойство можно прочитать! набор означает, что свойство может быть записано! Вы можете посмотреть его в книге "JavaScript: The.Definitive.Guide" 6 6-й выпуск!