gpt4 book ai didi

javascript - jQuery 默默无闻

转载 作者:行者123 更新时间:2023-11-30 13:12:18 26 4
gpt4 key购买 nike

这有点时髦。但是请看下面的代码片段:

$('.classname').bind('click', somefunction);

function somefunction() {
console.log($(this)); // **displays[<div>,context<div>]**
}

如果我将以上内容调整为:

$('.classname').bind('click', function(){ somefunction(); });

function somefunction(){
console.log($(this)); // **displays [Window]**
}

我不太确定为什么“this”会根据函数的回调方式采用两个不同的值。问题是,我确实需要它是,上下文和要调用的函数,如

function(event){ somefunction(event); }

因为我需要这个事件。但不太确定这里发生了什么。

任何线索,人?

最佳答案

this 是函数的接收者。

当你执行obj.someFunction()时,它是obj在执行中。

但是如果你在没有明确接收者的情况下获取函数并执行它(并且它没有绑定(bind))它是全局范围,即 window :

function someFunction(){
console.log(this);
}
var f = obj.someFunction;
f(); // log the window

请注意,您可以绑定(bind) 函数,使用bind :

 var f = obj.someFunction.bind(obj);
f(); // log the obj

但通常的解决方案是使用闭包,这是另一个函数,来嵌入你想要的:

var f = function(){obj.someFunction()};
f(); // log the obj

这就是为什么你经常在 jquery 回调中看到这个结构:

$(someselector).click(function(event){
$(this).someFunction(event)
}); // this is $(this) and the event is received

关于javascript - jQuery 默默无闻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com