3

Given:

    var q = {};
    q.id = 1234;
    q.bonus = {
        'a':{
            'b':(function(){
                //i want to access q.id
                var id = this. ??? .id
            }),
        }
    };

What should be the ??? to access q.id.

4

3 回答 3

6

q.id在绑定的函数中访问要b使用Function.prototype.bind

var q = {};
q.id = 1234;
q.bonus = {
  'a':{
     'b': (function(){
       //i want to access q.id
       var id = this.id;
       console.log(id);
     }).bind(q),
  }
};

q.bonus.a.b();

您还可以使用Function.prototype.call更改上下文this

q.bonus.a.b.call(q);
于 2013-11-12T02:53:58.107 回答
1

您可以使用 call 或 apply 更改“this”值。

var q = {};
q.id = 1234;
q.bonus = {
    'a':{
        'b':(function(){
            //i want to access q.id
            var id = this.id
        }.call(q)),
    }
};
于 2013-11-12T02:57:54.940 回答
1

正如您从其他答案和评论中看到的那样,任何解决方案都涉及q按名称引用。因此,我只是q.id直接使用。

于 2013-11-12T03:26:34.027 回答