gpt4 book ai didi

javascript - 如何将 this 上下文传递给函数?

转载 作者:IT老高 更新时间:2023-10-28 13:14:49 24 4
gpt4 key购买 nike

我认为这很容易用谷歌搜索,但也许我没有问正确的问题......

如何在给定的 javascript 函数中设置“this”所指的内容?

例如,与大多数 jQuery 函数一样,例如:

$(selector).each(function() {
//$(this) gives me access to whatever selector we're on
});

如何编写/调用我自己的独立函数,这些函数在调用时具有适当的“this”引用?我使用 jQuery,所以如果有特定于 jQuery 的方法,那将是理想的。

最佳答案

Javascript 的 .call().apply() 方法允许您为函数设置 context

var myfunc = function(){
alert(this.name);
};

var obj_a = {
name: "FOO"
};

var obj_b = {
name: "BAR!!"
};

现在你可以打电话了:

myfunc.call(obj_a);

这会提醒 FOO。反过来,传递 obj_b 会提醒 BAR!!.call().apply() 之间的区别在于 .call() 如果您要传递参数,则采用逗号分隔的列表到你的函数和 .apply() 需要一个数组。

myfunc.call(obj_a, 1, 2, 3);
myfunc.apply(obj_a, [1, 2, 3]);

因此,您可以使用 apply() 方法轻松编写函数 hook。例如,我们想为 jQuerys .css() 方法添加一个特性。我们可以存储原始函数引用,用自定义代码覆盖函数并调用存储的函数。

var _css = $.fn.css;
$.fn.css = function(){
alert('hooked!');
_css.apply(this, arguments);
};

由于魔术 arguments 对象是一个类似数组的对象,我们可以将它传递给 apply()。这样我们保证所有参数都传递给原始函数。

关于javascript - 如何将 this 上下文传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630054/

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