第1部分:
如何从回调中动态引用父属性?
例如,如果我们有这种结构。
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
jQuery(function(){
alert( this.htmlClass );
});
});
}
目前,这将返回“undefined”作为其重新呈现jQuery函数,而不是父类。
第2部分:
最有活力的做法是什么?支持下一个条件。
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
var self = this;
jQuery(function(){
if( !jQuery('body').hasClass( self.htmlClass ) ){
self = {};
}
});
});
}
目前,如果你这样做 - 那么someClass保持不变,并且不会成为空对象。 因此,将其直接分配给另一个变量似乎不起作用。
答案 0 :(得分:1)
使用作为您想要记住的“this”的变量:
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
var that = this;
jQuery(function(){
alert( that.htmlClass );
});
});
}
局部变量命名的标准包括self
,THIS
,that
等。只需选择你喜欢的东西(我倾向于在面向对象的JS中使用THIS
,但我主要使用C#所以任何“thisy”对我都有好处):))
答案 1 :(得分:0)
通常的做法是在变量中引用this
上下文:
bindEvents: function(){
var self = this; // keep a reference to this
jQuery(function(){
alert( self.htmlClass );
});
});
另一个解决方案是binding特定上下文的功能:
bindEvents: function(){
jQuery(function(){
alert( this.htmlClass );
}.bind(this));
});