我有一个复杂的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”,这当然会导致很多错误。
有什么想法吗? 谢谢
答案 0 :(得分:0)
在jquery-each函数之前设置局部变量:
var me = this;
$( "li" ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
console.log(me.myProperty);
});