Javascript 丢失了对象内函数的作用域
我有一个问题,当对象在事件Javascript 丢失了对象内函数的作用域,javascript,jquery,Javascript,Jquery,我有一个问题,当对象在事件$(窗口)中运行时,我正在丢失对该对象属性的引用。请调整大小 我能做的就是保持这个范围 例如: var testObject = { init: function () { this.divOriginal = $('.selector-tag'); this.resizeNow(); }, resizeNow: function () {
$(窗口)中运行时,我正在丢失对该对象属性的引用。请调整大小
我能做的就是保持这个范围
例如:
var testObject = {
init: function () {
this.divOriginal = $('.selector-tag');
this.resizeNow();
},
resizeNow: function () {
//some another code here....
//....
//..
$(window).resize(this.resizeUpdate.bind(this)); //without bind(this) the scope is window
},
resizeUpdate: function() {
console.log($(this));
var scrollWrapper = $(this)[0].divOriginal;//the only way to refer to the divOriginal
scrollWrapper.css('border','1px solid red');
}
}
testObject.init();
有一种更干净的方法可以访问对象的属性?您可以使用this
而不是$(this)
访问对象,因为您将对象绑定到事件处理程序调用的方法
请参见函数.prototype.bind()上的:
bind()方法创建一个新函数,该函数在调用时具有
此关键字设置为提供的值,并具有给定的
调用新函数时,将在任何函数前面提供参数
请准确解释哪些代码丢失了对属性的引用,并向我们展示如何调用该代码。函数中的this
值由函数的调用方式决定。因此,我们必须确切地知道你在哪里失去了它,以及它是如何被调用的,这样我们才能就如何修复提出正确的具体建议。这应该在评论中:)你是对的,有时候最简单的就是我们最不期望的。你不知道这张通行证要用多久,非常感谢。不客气。我用更多的解释更新了答案。