javascript-在defineProperty内部的getter中访问值

我可以访问在defineProperty调用中定义的值吗?我想创建这样的东西:

Object.defineProperty(this, 'name', {
  value: 'Caaaarl',
  get: function() { return <the value>; },
  set: function(x) { <the value> = x; }
});

当前,我必须为每个属性创建第二个属性.

var _name = '';

Object.defineProperty(this, 'name', {
  get: function() { return _name; },
  set: function(x) { _name = x; }
});

感谢您的帮助!

解决方法:

在属性描述符中同时具有值​​和get或set字段是不合法的.

如果您希望通过使用getter和setter来做一个更复杂的属性,而不仅仅是设置该属性而不污染名称空间,则可以将其底层值保存在闭包中:

(function() {
    var value = 'Caaarl';

    Object.defineProperty(this, 'name', {
        get: function() {
             // do some stuff
             ...
             return value;
        },
        set: function(v) {
             // do some stuff
             ...
             value = v;
        },
        enumerable: true
    });
}).call(this);
上一篇:通过JDK动态代理实现 Spring AOP


下一篇:Object.defineProperty 详解