在jQuery回调中获取父对象

时间:2012-01-03 02:18:53

标签: javascript

这是我的问题:

var greatapp = {
  start : function(){
    $.AJAX({
      url : 'foo.com',
      success : function(data){
        greatapp.say(data);
      }
    })
  },

  say : function(s){
    console.log(s);
  }
}

我不喜欢这个例子的事实是我在success函数中重复自我,通过定义对象的名称而不仅仅是this这显然不起作用,因为它在外部功能。

如何在JS对象中只使用名称greatapp一次?

1 个答案:

答案 0 :(得分:10)

常见的JavaScript习惯用法是将this的值保存到meself等变量中,并在回调中使用

这将起作用,因为回调可以访问在封闭范围内声明的变量 - 换句话说,回调将形成self上的闭包

var greatapp = {
  start : function(){
    var self = this;
    $.AJAX({
      url : 'foo.com',
      success : function(data){
        self.say(data);
      }
    })
  },

  say : function(s){
    console.log(s);
  }
}