javascript - 在 jQuery 回调中获取父对象

标签 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

最佳答案

一个常见的 JavaScript 习惯用法是将 this 的值保存到一个变量中,例如 meself,然后使用 that 在回调中。

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

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

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

关于javascript - 在 jQuery 回调中获取父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707252/

相关文章:

javascript - JavaScript 匹配语句返回什么?

Javascript函数未从输入框获取值并循环遍历数组

javascript - Nuxtjs 和 Axios 上的计算属性?

javascript - 当选择按钮组中的特定按钮时,如何分配不同的 url 链接?

javascript - Java AES/ECB/PKCS5Padding 加密到 crypto-js 解密

javascript - jQuery跨域AJAX请求在一个页面上有效,但在另一个页面上无效

actionscript-3 - 如何在 Emacs 中控制左括号后的缩进

javascript - 什么是 strophe 以及如何将它与 JQuery 一起使用?

javascript - 在 Phaser 的多边形区域内约束 Sprite

javascript - 根据用户输入动态地将试验添加到实验中?