JS在回调时引用“this”
JS Refrencing "this" when in callback
Part 1:
如何从回调中动态引用父属性?
例如,如果我们有这个结构。
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
jQuery(function(){
alert( this.htmlClass );
});
});
}
目前,这将返回"undefined"作为其引用jQuery函数,而不是父函数。
篇二:
执行此操作的最动态方法是什么? 支持下一个条件。
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
var self = this;
jQuery(function(){
if( !jQuery('body').hasClass( self.htmlClass ) ){
self = {};
}
});
});
}
目前,如果您这样做 - 那么 someClass 保持不变,并且不会成为空对象。因此,将其直接分配给另一个变量似乎不起作用。
使用范围限定为您要记住的"this"的变量:
var someClass = {
htmlClass : 'aFunClass',
bindEvents: function(){
var that = this;
jQuery(function(){
alert( that.htmlClass );
});
});
}
局部变量的命名标准包括self
、THIS
、that
等。只要选择你喜欢的东西(我倾向于在面向对象的 JS 中使用 THIS
,但我主要使用 C#,所以任何"thisy"对我都有好处):)
常见的做法是在变量中保留对this
上下文的引用:
bindEvents: function(){
var self = this; // keep a reference to this
jQuery(function(){
alert( self.htmlClass );
});
});
另一种解决方案是将函数绑定到特定上下文:
bindEvents: function(){
jQuery(function(){
alert( this.htmlClass );
}.bind(this));
});
相关文章:
- jQuery$(this)引用未定义
- Javascript对象文字,如何使用“this”来引用对象中的变量
- 为什么当我尝试将函数绑定到自身时,“this”对象仍然引用窗口
- 为什么“exports”在nodejs模块中引用与“this”相同的对象
- React如何调用ES6类的呈现函数,使“this”不引用类本身
- 在 javascript 中将“this”引用传递给方法的提示
- 如何避免“this”引用 DOM 元素,并引用对象
- 主干:在回调中维护对模型的“this”引用的最简单方法
- jQuery Resize 会丢失“this”引用
- 将“this”引用到自定义变量
- 如何使“this”引用成员函数而不是其所有者类的实例
- Google Geocoder 和 TypeScript 中的“this”引用
- Javascript“this”-引用包含对象
- 我以为我有一个this引用传递到Javascript闭包中的私有函数,我想错了
- 我怎样才能确保'this'引用对象文字中的对象文字
- Ajax.BeginForm JavaScript回调参数导致$(this)引用窗口而不是窗体
- 如何防止方法's ' this '引用调用它的对象
- 有没有可能保护'this'引用绑定对象内的函数
- “this”引用在nodeJs中不起作用
- JavaScript 'this' 引用了错误的范围