2

我想我可能会遗漏一些东西来引用对象,在下面的情况下,是this指测试对象吗?如果不是我怎么能这样声明btest.a = test.b

test = {
 a: 1,
 b: this.a,
 check : function(){
  console.log(test.a); // returns 1
  console.log(test.b); // returns undefined
 }
};
test.check();

非常感谢

4

2 回答 2

3

你可以这样声明:

function test(){
   this.a = 1;
   this.b = this.a;

    this.check = function(){
       console.log(this.a);  // output 1
       console.log(this.b); // output 1
    }        
}

var t = new test();
t.check();

现场示例:http: //jsfiddle.net/Rqs86/

于 2012-11-21T15:14:10.883 回答
2

test.bthis.a声明对象时的任何内容。

var foo = this;

你不会指望这里this提到foo,对吧?它在这里的工作原理完全相同:

var bar = [ this ];

var baz = { 'blag' : this };
于 2012-11-21T15:09:22.720 回答