从其他函数访问“this”类型的JavaScript变量
Accessing "this" Type JavaScript Variables From Other Functions
我有一个事件触发,即使它在我尝试从中访问变量的函数内部,我也得到了Uncaught TypeError: Cannot read property '...' of undefined
. 所以,让我们说:
( function($) {
$.fn.main = function() {
this.setting = 1;
$("#someElement").scroll( function() {
console.debug(this.setting);
} );
}
} )(jQuery);
我确信这与时间有关,但话又说回来,我可能是错的。 我应该复制this
并将其公开吗? 任何人? 谢谢。
this
的值不能固定在闭包中,因为this
动态获取其值。
尝试:
var self = this;
并参考自我。
只需将this
复制到另一个变量
( function($) {
$.fn.main = function() {
this.setting = 1;
var that = this;
$("#someElement").scroll( function() {
console.debug(that.setting);
} );
}
} )(jQuery);
( function($) {
$.fn.main = function() {
this.setting = 1; // "this" refers to the "$.fn.main" object
$("#someElement").scroll( function() {
console.debug(this.setting); // "this" refers to the "$('#someElement')" object
} );
}
} )(jQuery);
如果要使用 $.fn.main
中的this
,可以存储变量。以下方法将起作用:
( function($) {
$.fn.main = function() {
var that = this
that.setting = 1; // "this.setting" would also work
$("#someElement").scroll( function() {
console.debug(that.setting); // You need to reference to the other "this"
} );
}
} )(jQuery);
滚动方法内部的this
正在引用滚动方法。该方法必然会在 id 为 'someElement' 的元素的滚动事件上调用。并且绑定对象的作用域将丢失。
相关文章:
- javascript解释器如何理解变量的数据类型
- 可变大小的JavaScript字符串如何成为基元类型
- 为什么不'我们在javascript中使用函数参数的数据类型
- Javascript 可选类型提示
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 如果连接类型为none,则Javascript Function Only警报
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- 什么是上下文中静态类型javascript的示例,以更好地进行单元测试
- 什么是非法调用类型JavaScript中的错误
- 自定义对象/类型 Javascript
- 记事本++:行注释的类型(javascript 和 html),具体取决于 TAG
- 验证表单编号类型 Javascript
- 检查类型Javascript
- 嵌套具有属性回退的同类型javascript对象
- Gmail类型javascript不允许重复无效字符
- 函数作为返回类型javascript
- 最快的方法来检查对象键值类型(javascript)
- 引用数据类型 JavaScript
- 文件类型- Javascript:匹配文件类型时的错误