-2
var test = {
  var1: {varx: null, vary: null},
  method1: {
    submeth1: function (x) {
      this.var1.varx = x'
    }
    submeth2: function() {
      return this.var1.varx;
    }
  },
  get_varx: function () {
    return this.var1.varx;
  }
}
test.method1.submeth1('my new value'); // the value
console.log(test.method1.submeth2());  // null
console.log(test.get_varx()); // null

为什么它返回null?我如何获取和设置对象?

请帮忙..谢谢..

4

1 回答 1

1

请在提交前检查您的代码,两个语法错误(缺少 ' 和 ,)

    submeth1: function (x) {
      this.var1.varx = x'
    }

    submeth1: function (x) {
      this.var1.varx = 'x'
    },

原因是,this在您的代码this.var1.varx = 'x'引用test.method1中,而不是test,所以如果您var1: {varx: null, vary: null}在您的, 中定义test.method1console.log(test.method1.submeth2())将不会给出 null 结果(建议:使用 chrome 调试)

<script>
var test = {
  var1: {varx: null, vary: null},
  method1: {
    var1: {varx: null, vary: null},
    submeth1: function (x) {
      this.var1.varx = 'x'
    },
    submeth2: function() {
      return this.var1.varx;
    }
  },
  get_varx: function () {
    return this.var1.varx;
  }
}
test.method1.submeth1('my new value'); // the value
console.log(test.method1.submeth2());  // null
console.log(test.get_varx()); // null
</script>
于 2013-09-20T04:19:06.410 回答