问题标签 [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.

0 投票
3 回答
9593 浏览

javascript - ReferenceError 和全局对象

在浏览器window中的 JavaScript 中是全局对象,这意味着在全局范围内定义的每个变量都是window. 那么为什么我会得到这个结果:

小提琴

那两条线应该是一样的,不是吗?

0 投票
5 回答
3961 浏览

javascript - 检查是否在 JavaScript 中覆盖了全局属性/函数

JavaScript 使覆盖全局对象的属性和函数变得容易。我想找到一种方法来检查全局属性的原始版本是否已被替换。

考虑有人把它放在他们的 HTML 中:

如果 myscript.js 在某处调用 encodeURIComponent 函数,它现在的行为将无法预测。那么有没有一种方法可以在 myscript.js 内部检查是否有人在我使用之前覆盖了该函数?

0 投票
2 回答
1923 浏览

javascript - 模块模式中的这个关键字?

我刚刚开始在一家新公司工作,并注意到他们的许多 JS 对我来说看起来完全错误。我有点犹豫是否要在没有确认这是错误的情况下提出它,因为我还很初级,我不是 JS 专家,这只是我的第二天,我不想看起来很愚蠢。

所以,通常我希望模块模式看起来像:

他们在代码中的全部内容是:

现在当然是因为该函数没有被作为带有new关键字或方法的构造函数调用,this所以绑定到window并且它们定义thatthis. 所以他们基本上把所有东西都转储到了全局对象中,他们所有的子模块名称实际上都是window. 有人愿意这样做吗?或者这真的像我认为的那样错误吗?

编辑:

我在var子模块定义之前犯了一个错误,最初我写了一些稍微不同的东西,忘记删除var. 我也试图让这个例子更清楚一些,希望我现在的意思更明显。

编辑2:

此外,我查看了在 Firebug 中执行的脚本,它们肯定将所有内容添加到window,该对象完全是一团糟。

0 投票
2 回答
124 浏览

javascript - Javascript - 为什么调用函数在 closour 中定义?

我见过许多 js 框架(包括 jquery)在其主要功能范围内使用闭包。例如,

jquery 源, http://code.jquery.com/jquery-1.7.2.js

围绕“功能”需要额外的“封闭”吗?或者如果我们像这样使用它有什么区别,

两者都具有相同的行为,并且函数定义本身将所有局部变量放在一个新的范围内……那么为什么要额外的闭包呢?

0 投票
2 回答
80 浏览

javascript - 需要检测哪些