Javascript:如何将getter添加到现有对象

Paw*_*iya 38 javascript

我可以像这样在JavaScript对象中使用getter

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

我甚至可以像这样添加更多属性

member.isGuest = true;
Run Code Online (Sandbox Code Playgroud)

但是有什么方法可以将getter添加到已有的对象中吗?像这样的东西

member.isGuest = get isGuest(){ return this.firstName=='Guest'; }
Run Code Online (Sandbox Code Playgroud)

gur*_*372 52

尝试 defineProperty

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


dav*_*ode 9

您可以这样使用新的Object.defineProperty:

Object.defineProperty(
    member, 
    'prop', 
    {
        get: function() { 
            return this.lastName.toUpperCase()
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

在过去你必须使用,__defineGetter__但现在它已被弃用.

  • 您应该为FGITW故障提供支持。(您实际上有更多的内容!) (2认同)