问题标签 [global-object]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 检查是否在 JavaScript 中覆盖了全局属性/函数
JavaScript 使覆盖全局对象的属性和函数变得容易。我想找到一种方法来检查全局属性的原始版本是否已被替换。
考虑有人把它放在他们的 HTML 中:
如果 myscript.js 在某处调用 encodeURIComponent 函数,它现在的行为将无法预测。那么有没有一种方法可以在 myscript.js 内部检查是否有人在我使用之前覆盖了该函数?
javascript - 模块模式中的这个关键字?
我刚刚开始在一家新公司工作,并注意到他们的许多 JS 对我来说看起来完全错误。我有点犹豫是否要在没有确认这是错误的情况下提出它,因为我还很初级,我不是 JS 专家,这只是我的第二天,我不想看起来很愚蠢。
所以,通常我希望模块模式看起来像:
他们在代码中的全部内容是:
现在当然是因为该函数没有被作为带有new
关键字或方法的构造函数调用,this
所以绑定到window
并且它们定义that
为this
. 所以他们基本上把所有东西都转储到了全局对象中,他们所有的子模块名称实际上都是window
. 有人愿意这样做吗?或者这真的像我认为的那样错误吗?
编辑:
我在var
子模块定义之前犯了一个错误,最初我写了一些稍微不同的东西,忘记删除var
. 我也试图让这个例子更清楚一些,希望我现在的意思更明显。
编辑2:
此外,我查看了在 Firebug 中执行的脚本,它们肯定将所有内容添加到window
,该对象完全是一团糟。
javascript - Javascript - 为什么调用函数在 closour 中定义?
我见过许多 js 框架(包括 jquery)在其主要功能范围内使用闭包。例如,
jquery 源, http://code.jquery.com/jquery-1.7.2.js
围绕“功能”需要额外的“封闭”吗?或者如果我们像这样使用它有什么区别,
两者都具有相同的行为,并且函数定义本身将所有局部变量放在一个新的范围内……那么为什么要额外的闭包呢?