【问题标题】:Can you pass an objects method as a callback in JavaScript?您可以在 JavaScript 中将对象方法作为回调传递吗?
【发布时间】:2011-06-20 17:34:04
【问题描述】:

所以我有一个对象,让我们用一个子对象调用它 A它工作。有没有可能?

例子:

var A = {
  B: {
    CallMe: function() {
      alert('I\'ve been Called!');
    }
  }
}

var objImage = new Image();
objImage.onLoad = A.B.CallMe;
objImage.src = '/img/some_image.png';

【问题讨论】:

  • 请注意 CallMe 将在 objImage 而不是 A.B 的上下文中执行。因此,CallMe 中的关键字 this 会在回调时引用 objImage
  • @BiAiB 有没有办法让这个引用父方法而不是调用者?

标签: javascript image object methods callback


【解决方案1】:

你应该将它绑定到 .onload 属性而不是 .onLoad - 这应该修复它,愚蠢的错字 - 这是最糟糕的

【讨论】:

  • 我虽然可能有点愚蠢,比如我把方法名写错了,但这显然是漫长的一天。干杯!
【解决方案2】:

它工作正常...你只需要调用它 (objImage.onLoad();):

var A = {
  B: {
    CallMe: function() {
      alert('I\'ve been Called!');
    }
  }
}

var Image = function(){

}
Image.prototype.onLoad = null;

$(document).ready(function() {
    var objImage = new Image();
    objImage.onLoad = A.B.CallMe;

    objImage.onLoad();
});

这里的测试代码: http://www.jsfiddle.net/yAJfd/1/

【讨论】:

  • onload 的重点是您不需要需要显式调用它。它应该响应图像的加载事件。
  • 糟糕,我的错。那么他想要的是绑定一个事件监听器?
  • 是的,图像有一个onload,您可以绑定到该onload,当图像完成加载时触发处理程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
相关资源
最近更新 更多