我可以用Javascript为我创建的对象创建自定义事件吗?

我可以用Javascript为我创建的对象创建自定义事件吗?,javascript,events,methods,object,Javascript,Events,Methods,Object,假设我有一个对象,其成员函数返回自身: /* -- Object 1 -- */ function Object1(){ this.me = new Image(10,10); this.me.src = "someImgUrl.jpg"; this.publish = function(){ return this.me; } } 生产中: var Obj1 = new Object1(); document.body.append

假设我有一个对象,其成员函数返回自身:

/* -- Object 1 -- */
function Object1(){
    this.me      = new Image(10,10);
    this.me.src  = "someImgUrl.jpg";
    this.publish = function(){
        return this.me;
    }
}
生产中:

var Obj1 = new Object1();
document.body.appendChild( Obj1.publish() );
现在,假设我想创建一个事件,该事件在调用对象的publish()方法时触发,但在返回图像后触发(类似于“onPublished()”事件)。例如,将图像尺寸更改为100x100。我将如何创建它,以及在哪里“附加”它

如果我说得不够清楚,请告诉我。这是我能想到的最简单的演示。

一个简单的例子:

function Object1() {
    'use strict';

    this.me = new Image(10, 10);
    this.me.src = "someImgUrl.jpg";
    this.publish = function() {
        if (typeof this.onPublish === "function") {
            setTimeout(this.onPublish, 1);
        }

        return this.me;
    };
}

var Obj1 = new Object1();
Obj1.onPublish = function() {
  // do stuff
};

Obj1.publish();

或者,您可以使用一些第三方框架(例如)在对象上定义自定义事件。有两种方法,但我只介绍一种:

var DataListener = function() { 
    var fire = bob.event.namedEvent(this, 'received'); 
    this.start = function(count) { 
        for (var i = 0; i < count; i++) { 
            fire(i + 1); 
        } 
    }; 
}; 
var listener = new DataListener(); 
listener.add_received(function(data) { 
    console.log('data received: ' + data); 
}); 
listener.start(5); 
// Output: 
// data received: 1 
// data received: 2 
// data received: 3 
// data received: 4 
// data received: 5
var-DataListener=function(){
var fire=bob.event.namedEvent(此为“已接收”);
this.start=函数(计数){
对于(var i=0;i
看起来它将在返回图像之前执行onPublish()事件(如果不是这样,请告诉我)。如果我希望它在返回后触发,我会怎么做?你说的“在发布方法返回图像之前”是什么意思?当然,onPublish()方法是在publish()调用返回之前调用的,但您的意思是在图像加载之后吗?@ajax81-我已经更新了示例。现在它是异步的,所以它会将回调添加到事件循环中,就像事件处理程序应该是这样。我懂了。非常感谢,加拉姆巴斯。谢谢你抽出时间。