gpt4 book ai didi

javascript - 不确定如何从新范围调用我的函数

转载 作者:行者123 更新时间:2023-11-28 07:01:58 24 4
gpt4 key购买 nike

希望这个标题是正确的:)

我使用模块化模式:

(function (vvv, $, undefined) {
'use strict';

vvv = (function () {
vvv.functionName = (function () {
...
});
......
}(
window.vvv = window.vvv || {},
jQuery
));

我还使用 David Walsh 制作的去抖功能

vvv.debounce = (function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
});

我使用 debounce 函数在特定窗口大小上调用其他函数。但现在在这些函数中我的主 vvv 对象不存在。现在为了快速解决这个问题,我只需调用 window.vvv.myfunction()。修复很好,但重点是我希望所有函数都在 vvv 对象中。不知道为什么,这更多是出于好奇:)你会如何解决这个问题?

最佳答案

手动将对象绑定(bind)到新函数。我猜你想做这样的事情:

vvv.debounce(function() { /* do stuff */ }.bind(vvv), 100);

但是请检查.bind()的浏览器兼容性,并非所有IE版本都支持此功能。您还可以使用jQuery.proxy:

vvv.debounce($.proxy(function() { /* do stuff */ }, vvv), 100);

这应该也适用于 IE。

关于javascript - 不确定如何从新范围调用我的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054703/

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