объем возвращаемого объекта в функции JavaScript - PullRequest
3 голосов
/ 05 декабря 2008

Как получить доступ к «а» ниже?

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

Ответы [ 4 ]

8 голосов
/ 05 декабря 2008

Вы не можете сделать это таким образом. Когда вы находитесь в процессе конструирования объекта (это то, что вы фактически делаете, используя фигурные скобки), нет способа получить доступ к его свойствам до того, как он будет построен.

var test = function () {
  var o = {};
  o['a'] = 1;
  o['b'] = o['a'] + 1;
  return o;
};
4 голосов
/ 05 декабря 2008
var t = function () 
        {
            return new x();
        };

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

абстрактный слой

отредактировано для форматирования и отмечено, что это смещение от OLN

1 голос
/ 05 декабря 2008

Вы не можете Object Literal Notion не поддерживает этот доступ

0 голосов
/ 05 декабря 2008
var test = function () {
    //private members
    var a = 1;
    var b = a + 1;
    //public interface
    return {
        geta : function () {
            return a;
        },
        getb : function () {
            return b;
        }
    }
}();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...