gpt4 book ai didi

javascript - 关注属性(property)创造事件?

转载 作者:搜寻专家 更新时间:2023-11-01 04:33:55 25 4
gpt4 key购买 nike

我需要能够确定何时创建对象(不是 DOM 元素 -- JavaScript 对象)。

An answer to this question有一些非常有用的代码用于创建可观察的属性,因此您可以在属性更改时触发函数。

在我的情况下,我需要在创建对象/属性时做一些事情,而不是更改现有属性,而我对此类问题的有限理解并没有帮助我弄清楚是否或如何在之后使用该代码来执行此操作多眯着眼睛。

情况是:页面加载了一堆脚本。一些脚本创建其他脚本需要的东西,例如:

ThisStuff = (function () {
// blah blah
return self;
} ());

一些其他代码需要初始化这个 ThisStuff,只要它可用,这可能是在 DOM 加载完成之后。用户实际上并不立即需要 ThisStuff,因此在脚本加载完成时发生它是可以的。所以我想做一些事情:

$(document).ready(function() {
wheneverIsAvailable(window,'ThisStuff', function(object) {
object.init(args);
})
});

我意识到这个问题还有其他解决方案(更改脚本顺序,或按需加载脚本),但由于架构的原因,这些解决方案很困难。因此,与其他解决方案相比,我只对一种方法感兴趣。如果 jQuery 提供了一些这样的功能,那也很好,因为我正在使用它。

最佳答案

您可以让 setInterval 每秒检查多次以观察特定变量。您可以检查它是否使用 obj.hasOwnProperty(prop) 创建。创建时,调用该函数并清除间隔。

它可能很脏,但它也可能适合您。

编辑: 我为您编写了代码:http://jsfiddle.net/jhXJ2/2/ .它还支持向函数传递额外的参数。

window.__intervals = [];

function wheneverIsAvailable(obj, prop, func) {
var id = (Math.random()+"").substring(2);
var args = arguments;
window.__intervals[id] = window.setInterval(function() {
if(obj.hasOwnProperty(prop)) {
window.clearInterval(window.__intervals[id]);
func(Array.prototype.slice.call(args, 3));
// Call function with additional parameters passed
// after func (from index 3 and on)
}
}, 1000/ 50);
}

wheneverIsAvailable(window, 'test', function() {
alert(arguments[0]);
}, 'Woot!');

window.setTimeout('window.test = 123', 1000);

关于javascript - 关注属性(property)创造事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316666/

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