javascript函数中返回对象的范围

时间:2008-12-05 16:36:11

标签: javascript

如何访问下面的“a”?

var test = function () {
     return {
        'a' : 1,
        'b' : this.a + 1  //doesn't work
    };
};

4 个答案:

答案 0 :(得分:8)

你不能这样做。当你正在构建一个对象时(这就是你使用花括号实际做的事情),在构造它之前无法访问它的属性。

var test = function () {
  var o = {};
  o['a'] = 1;
  o['b'] = o['a'] + 1;
  return o;
};

答案 1 :(得分:4)

var t = function () 
        {
            return new x();
        };

var x = function ()
        {
            this.a = 1;
            this.b = this.a + 1; //works
        }

抽象图层

已编辑格式化,并注意到这是从OLN转移

答案 2 :(得分:1)

您不能使用Object Literal Notion不支持此访问

答案 3 :(得分:0)

var test = function () {
    //private members
    var a = 1;
    var b = a + 1;
    //public interface
    return {
        geta : function () {
            return a;
        },
        getb : function () {
            return b;
        }
    }
}();