代码之家  ›  专栏  ›  技术社区  ›  wubbewubbewubbe

如何以与JavaScript中的key:value相同的方式从key:function中检索值?

  •  0
  • wubbewubbewubbe  · 技术社区  · 13 年前

    如何以与检索foo1.x相同的方式检索foo2.x?

    var foo1 = {x: 4};
    var foo2 = {x: function(){return addOne(foo1.x);}}
    
    function addOne(var1){return (var1 + 1);}
    
    alert(foo1.x);
    alert(foo2.x()); // needs parentheses, but argument is never needed
    
    3 回复  |  直到 13 年前
        1
  •  2
  •   Bergi    13 年前

    看起来你想要一个 getter function :

    var foo1 = {x: 4},
        foo2 = {get x() { return foo1.x + 1; }};
    
    foo2.x; // 5
    foo1.x = 0;
    foo2.x; // 1
    
        2
  •  0
  •   jamiemlaw    13 年前

    我想你想把 后果 的函数 foo2.x ,而不是函数本身。

    请尝试以下操作:

    function addOne(n) {
        return n + 1;
    }
    
    var
    foo1 = {
        x: 4
    },
    foo2 = {
        x: (function () {
            return addOne(foo1.x);
        }())
    };
    
    alert(foo1.x); // 4
    alert(foo2.x); // 5
    

    我已经把函数包装好了 foo2.x 用括号括起来,然后再加一对parens来执行它。所以它不再是一个函数,而是函数的结果。

        3
  •  0
  •   Justin Bicknell    13 年前

    foo2.x 是一个函数,因此需要添加括号