Javascript jquery中此引用的范围?

Javascript jquery中此引用的范围?,javascript,jquery,this,Javascript,Jquery,This,在第一种情况下指的是对象,但在第二种情况下指的是锚定标记。当我们在另一个函数中调用该函数时,this怎么会变回object呢?为什么?这个是由jQuery操作的,这样您就可以轻松地访问已选择的DOM元素或触发其事件的DOM元素。这显然会在应用对象的方法时引起问题,因为的上下文丢失了 看看jQuery的方法。这将允许您确定此的范围,以引用obj的上下文 var obj = { doIt : function(){ console.log(this) } }

第一种情况下指的是对象,但在第二种情况下指的是锚定标记。当我们在另一个函数中调用该函数时,this怎么会变回object呢?为什么?

这个
是由jQuery操作的,这样您就可以轻松地访问已选择的DOM元素或触发其事件的DOM元素。这显然会在应用对象的方法时引起问题,因为
的上下文丢失了

看看jQuery的方法。这将允许您确定
的范围,以引用
obj
的上下文

var obj = {     
    doIt : function(){
       console.log(this)
    }
}
$('a').on('click', function(){
    obj.doIt(); // this now refers to object      
});

$('a').on('click', obj.doIt); // this refers to anchor tag.
要了解不同情况下的差异,您需要了解作为
.on()
方法的第二个参数(或第三个…)引用的函数是在DOM元素的上下文中应用/调用的。也就是说,函数中的
this
引用元素。但是,在第一个示例中,您只是在没有任何预设上下文的情况下调用
obj.doIt()
方法,因此
this
引用了
obj

,因为它取决于函数的调用-它没有我所知道的proxy()方法的“作用域”,这是一种有点类似的原生JS调用和应用方法。当它在函数调用中时,它的值为什么会发生变化?.Updated:)-也许这可以更好地解释它。
$("a").on( "click", $.proxy(obj.doIt, obj));