使用bind(this)和jQuery.each,模糊地使用“this”

时间:2017-09-11 10:14:00

标签: javascript jquery this

我有一个复杂的JS应用程序,OOP风格,其中使用了对象雇佣。班级祖父由班级父亲延长,由班级儿童延长。我有类Child的不同实例。

为避免财产混乱和混乱,我大量使用.bind(this)来回调。实施例

$(this.buttonId).click(function(evt)) {
    console.log(this.myProperty);
    this.myMethod();
}.bind(this));

通过这种方式,我确信this.myProperty和this.myMethod总是“我的”,而不是我父亲或我兄弟的。

现在我需要依靠jQuery.each method。但要访问每个项目,我再次需要“这个”!

$( "li" ).each(function( index ) {
  console.log( index + ": " + $( this ).text() );
});

因此,如果我将回调绑定到“this”(对象),它将变为:

$( "li" ).each(function( index ) {
    console.log( index + ": " + $( this ).text() );
    console.log(this.myProperty);
    this.myMethod();
}.bind(this));

导致模糊地使用“this”,这当然会导致很多错误。

有什么想法吗? 谢谢

1 个答案:

答案 0 :(得分:0)

在jquery-each函数之前设置局部变量:

var me = this;
$( "li" ).each(function( index ) {
    console.log( index + ": " + $( this ).text() );
console.log(me.myProperty);
});