gpt4 book ai didi

javascript - 如果全局变量变得未定义,则立即触发函数

转载 作者:行者123 更新时间:2023-11-28 18:29:02 25 4
gpt4 key购买 nike

我有全局变量,例如window.remote.storageData 在脚本运行时填充。然而,在某些情况下,它会变得未明确定义。在这些情况下,我想触发函数以重新加载它。我为此使用了 setInterval :

setInterval(function(){...},timer);

但是,如果变量在计时器范围内变得未定义,我的代码中就会出现错误。微小的计时器间隙卡住了我的应用程序,那些计时器少于 500 的解决方案效果不佳。

是否有一些方法可以在变量值改变时立即触发函数?

最佳答案

如果您使用 ES5 浏览器并且 remote 未卡住,您可以使用自定义 get/set 定义属性。

(function(remote) {
var value = remote.storageData;

try {
Object.defineProperty(remote, 'storageData', {
get: function() { return value;}

set: function(newVal) {
if(typeof newVal === 'undefined') {
newVal = //some code to get value
}

value = newVal
}
})
} catch(e) {
console.log(e)
}
}(window.remote))

但是某些代码仍然可以替换整个 window.remote 对象。在这种情况下,您需要在 window 本身上使用自定义 get/set 来定义 remote 属性。

关于javascript - 如果全局变量变得未定义,则立即触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500243/

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