这个速记更聪明

时间:2014-04-27 08:51:52

标签: javascript shorthand

我有两种情况我宣布var that = this并且我想知道是否有一种更智能的方式来处理它,如call()apply()所以我不必创建匿名函数吗?

var that = this;
this.listenTo( foo, 'event', function() {
    that.trigger( 'change' );
});

var that = this;
this.listenTo( foo, 'event', function( bar ) {
    that.add( bar );
});

2 个答案:

答案 0 :(得分:1)

没有经过测试(特别是我认为这很有意义),但是这样怎么样:

this.triggerFn = function(ev) {
    return function() {
        this.trigger(ev);
    }.bind(this);
}.bind(this);

this.addFn = function() {
    return function(bar) {
        this.add(bar);
    }.bind(this);
}.bind(this);

this.listenTo( foo, 'event', this.triggerFn('change'));

this.listenTo( foo, 'event', this.addFn( bar ));

对于绑定polyfill,请参阅that

答案 1 :(得分:1)

Function#bind()

这样的事情:

this.listenTo( foo, 'event', function() {
    this.trigger( 'change' );
}.bind(this));

this.listenTo( foo, 'event', function( bar ) {
    this.add( bar );
}.bind(this));