0

次の 2 つのコード サンプルは、就職の面接で私に与えられましたが、うまく動作させることができませんでした。

//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');

したがって、指定された 2 つのコードを変更することはできません。呼び出されたクラスEvent()は機能するはずなので、2 つのコード サンプルは両方とも「Hello world」を出力します。今、私は完全な答えを求めているわけではありません。私はJavascriptのClassesCustom eventsが苦手です。私は基本を知っていますが、あなたが私の言いたいことを知っているなら、それはまだ私の手の中にありません. 私はチュートリアルを探していましたが、どこから始めればよいかを教えてくれる「もっと賢い」人が必要です。

ありがとう!

4

2 に答える 2

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 に答える