Sri*_*ala 5 javascript global-variables javascript-events
我想注意在 Javascript 中创建新的全局变量,以便在创建全局变量时,会触发一个事件。
我听说过 watch() 函数,但这仅用于监视特定的变量名称。我想要一个大杂烩。
如果您已经知道哪些名称污染了您的全局命名空间(请参阅在 javascript 中拦截全局变量定义),您可以使用此技巧来确定它何时实际发生:
window.__defineSetter__('someGlobalVar', function() {
debugger;
});
Run Code Online (Sandbox Code Playgroud)
运行此程序时,请务必打开开发人员工具。显然,只有当您的浏览器支持时才有效__defineSetter__,但对于现代浏览器来说也是如此。另外,完成后不要忘记删除调试代码。
在这里找到的。
我不知道如何在创建 var 后立即“按需”进行这项工作,但我可以建议一种轮询方法。在浏览器窗口中,所有全局的都成为全局“窗口”对象的成员。(因为从技术上讲,“窗口”是“全局对象”)。所以你可以做类似下面的事情:
1)枚举窗口上的所有属性
window.proplist = window.proplist || {};
for (propname in window) {
if (propname !== "proplist") {
window.proplist[propname] = true;
}
}
Run Code Online (Sandbox Code Playgroud)
2) 设置一个计时器来定期“轮询”窗口以获取新属性
setInterval(onTimer, 1000);
Run Code Online (Sandbox Code Playgroud)
3) 唤醒定时器回调并寻找新的 props
function onTimer() {
if (!window.proplist) {
return;
}
for (propname in window) {
if (!(window.proplist[propname])) {
window.proplist[propname] = true;
onGlobalVarCreated(propname);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |