Hacker News new | ask | show | jobs
by ghostdiver 4519 days ago
It forces programmer to make few more steps during debugging process, using conditional breakpoints in particular.

not a big deal to put conditional breakpoint in handleStreamEvent whereever it is, but in long run it just a waste of time.

  this.setup = function () {
    this.on('tweet', this.handleStreamEvent.bind(this, 'tweet'));
    this.on('retweet', this.handleStreamEvent.bind(this, 'retweet'));
  };
This pattern will be obsolote as soon as arrow function gets implemented by all major browsers:

  this.setup = function () {
    this.on('tweet', () => this.handleStreamEvent('tweet'));
    this.on('retweet', () => this.handleStreamEvent('retweet'));
  };
2 comments

Those are not equivalent. You still have to pass on the parameters:

    this.setup = function () {
      this.on('tweet', (e, data) => this.handleStreamEvent('tweet', e, data));
      this.on('retweet', (e, data) => this.handleStreamEvent('retweet', e, data));
    };
Good catch. Once they are added though, it feels a lot more readable than the "bind" alternative.
Ah, but what is the value of 'this' when those handler functions are called?
Arrow functions preserve the 'this' of their enclosing context: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... :)