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