关于文字对象,也许还有自动可执行函数

时间:2011-12-15 11:52:27

标签: javascript

var a = {
    b: {
        c: 1
    },
    d: this.b.c
};

错误:

this.b is undefined

我怎样才能打电话给b.c?

2 个答案:

答案 0 :(得分:5)

var a = {
    b: {
        c: 1
    }
};
a.d = a.b.c;

将是唯一的方法。 this.b.c在您构建a对象的范围内执行,而不是在对象本身内执行;因此this等于windowwindow.b == undefined

答案 1 :(得分:1)

虽然Matt告诉你只有一种方法,但这可能是另一种选择:

var a = {
  b: {c: 1},
  d: function(){return this.b.c;}
}
alert(a.d()); //=> 1

var a = {
  b: {c: 1},
  d: function(){if (this.d instanceof Function) {this.d = this.b.c;}}
}
a.d();
alert(a.d); //=> 1

或执行匿名函数:

var a = function(){
      var obj ={b: {c: 1}}
      obj.d = obj.b.c;
      return obj;
}();
alert(a.d); //=> 1