Javascript 理解命名访问器属性

Javascript 理解命名访问器属性,javascript,Javascript,最后,给出了命名访问器属性的属性。让我们创建命名访问器属性,例如 var o=Object.create({},{bar:{get: function(){ return 10;}, set: function(value){ console.log("o.bar is", value)}}}) o.bar=550; 没关系。在控制台中,我们有o.bar是550。但我有一些疑问。命名访问器属性没有值属性。那么哪个属性被分配给550呢

最后,给出了命名访问器属性的属性。让我们创建命名访问器属性,例如

var o=Object.create({},{bar:{get: function(){ return 10;}, 
                             set: function(value){ console.log("o.bar is", value)}}})
o.bar=550;
没关系。在控制台中,我们有
o.bar是550
。但我有一些疑问。命名访问器属性没有
属性。那么哪个属性被分配给550呢

我们如何返回这个赋值?我试图重写
get
函数,如下所示:

get: function(){ return value;}
但我有一个错误:

[15:59:41.418] ReferenceError: value is not defined @ http://fiddle.jshell.net/_display/:26
请解释命名访问器属性是如何工作的

命名的accesor属性没有value属性。那么哪个属性被分配给550呢

没有,你必须在你的二传手上做。这不是自动完成的

我们如何返回这个赋值

从你保存它的地方。例如,对此使用闭包是相当常见的(为了清楚起见,我将其放在多行上):

|

浓缩版,如果你喜欢这类东西::-)

var o=Object.create({},(function() {
    var _bar = 10;

    return {
      bar:{
        get: function(){
          return _bar;
        },
        set: function(value){
          _bar = value;
          console.log("bar set to " + _bar);
        }
      }
    };
})());
o.bar=550;
console.log("o.bar = " + o.bar);
var o=Object.create({},(function() {
    var _bar = 10;

    return {bar:{get: function(){ return _bar; },
                 set: function(value){ _bar = value; console.log("bar set to " + _bar); }}};
})());
o.bar=550;
console.log("o.bar = " + o.bar);