Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 丢失了对象内函数的作用域_Javascript_Jquery - Fatal编程技术网

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
值由函数的调用方式决定。因此,我们必须确切地知道你在哪里失去了它,以及它是如何被调用的,这样我们才能就如何修复提出正确的具体建议。这应该在评论中:)你是对的,有时候最简单的就是我们最不期望的。你不知道这张通行证要用多久,非常感谢。不客气。我用更多的解释更新了答案。