0

这个作业有什么问题?

base = {};
base.util = {
   varA : 3,
   varB : this.varA,
   show : function(){
      console.log(this.varB);
   }
};

我得到 this.varB 是未定义的。任何帮助将不胜感激。

谢谢。

4

2 回答 2

0

当使用简写创建对象时,thisis 在全局范围内,因此指的是window. 尝试在创建对象后检查是否定义window.varA或刚刚定义。varA

于 2013-01-23T14:12:58.020 回答
0

当你声明字面量时,this只有在方法中的值才会是你的对象。否则,它的值将取决于声明文字的上下文。

为了完成你想要的,你必须这样编码:

base = {};
base.util = {
   varA : 3,
   show : function(){
      // here, this refers to base.util
      console.log(this.varB);
   }
};
base.util.varB = base.util.varA;
base.util.show();
于 2013-01-23T14:28:13.677 回答