0

在一次工作面试中给了我以下两个代码示例,但我无法让它工作:

//CODE1:
var e = new Event();

e.on('myevent', function (a, b) {
    console.log(a + ' ' + b);
});

e.trigger('myevent', ['Hello', 'world']);


//CODE2:  
e.on('hello', function() {
    console.log('Hello');
    this.trigger('world');
}).on('world', function() {
    console.log('World');
}).trigger('hello');

因此不能修改给定的两个代码,调用的Event()应该可以工作,因此两个代码示例都会输出“Hello world”。现在,我不要求一个完整的答案。我不擅长Javascript中的ClassesCustom 事件。我知道基础知识,但它还没有真正掌握在我手中,如果你知道我的意思的话。我一直在寻找教程,但我需要“更聪明”的人来告诉我应该从哪里开始,可能会为我的问题提供一些好的教程链接。

谢谢!

4

2 回答 2

2

.on() 用于将事件绑定到元素。您不能将事件绑定到事件,请参阅示例代码:

$('div').on('hello', function() {
    console.log('Hello');
    $(this).trigger('world');
}).on('world', function() {
    console.log('World');
}).trigger('hello');
于 2013-11-22T10:21:14.180 回答
1

演示http://jsfiddle.net/uAQn9/

代码:

function Event() {

}

Event.prototype = {

  trigger:function(eventName, arParam) {
    $(window).trigger(eventName, arParam);
  },

  on: function(eventName, cb) {
    var event = this;
    $(window).on(eventName, function(e) {
      var args = Array.prototype.slice.call(arguments);
      cb.apply(event, args.slice(1));
    });
    return this;
  }
}

//CODE1:
var e = new Event();

e.on('myevent', function (a, b) {
    console.log(a + ' ' + b);
});

e.trigger('myevent', ['Hello', 'world']);


//CODE2:  
e.on('hello', function() {
    console.log('Hello');
    this.trigger('world');
}).on('world', function() {
    console.log('World');
}).trigger('hello');
于 2013-11-22T10:51:59.257 回答