mozilla 的术语“全局对象”让我困惑
有几个朋友建议我阅读 developer.mozilla.org/en/JavaScript/Reference/Global_Objects:
此处的术语“全局对象”[1] 不应与全局对象[2]混淆。这里,全局对象[3]指的是全局范围内的对象。全局对象[4]本身可以在全局范围内通过this
访问。事实上,全局范围由全局对象[5]的属性组成(包括继承的属性,如果有的话)。
老实说,我对上面的话完全困惑了。第一句话告诉我不要混淆
,但它确实让我困惑。嗯,英语不是我的母语,也许这就是原因。 出现了 5 次全局对象
和 3 次全局范围
!
全局对象
[4,5]是指全局对象
[1]还是全局对象
[2]?
Several friends suggest me to read developer.mozilla.org/en/JavaScript/Reference/Global_Objects:
The term "global objects"[1] here is not to be confused with the global object[2]. Here, global objects[3] refer to objects in the global scope. The global object[4] itself can be accessed by this
in the global scope. In fact, the global scope consists of the properties of the global object[5] (including inherited properties, if any).
Honestly, I am completely confused by above words. The first sentence tells me not to be confused
but it does confuse me. Well, English is not my mother language, maybe this is the reason.
There appear 5 times of global object(s)
and 3 times global scope
!
Does global object
[4,5] mean global objects
[1] or global object
[2]?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Mozilla 的措辞毫无帮助。我建议你忽略它。
有一个全局对象。这是 ECMAScript 语言规范 中定义明确的构造。它有几个目的,其中最重要的是全局对象的属性在任何地方都可用。这就是 Mozilla 所说的“全局对象”;它们更准确、更有用地称为“全局对象的属性”。
本文所说的全局作用域是指不在任何函数内部的代码。在这样的代码中,
this
是对全局对象的引用。在浏览器内的 JavaScript 中,window
可以被认为是全局对象并且可以在任何地方访问。综上所述,2、4、5是同一个东西。 1 和 3 对于“全局对象的属性”来说是一个糟糕的名称,您应该忘记它。
Mozilla's wording is unhelpful. I suggest you ignore it.
There is one global object. This is a well-defined construct within the ECMAScript language specification. It has several purposes, not least of which is that properties of the global object are available everywhere. This is what Mozilla means by "Global Objects"; they're more accurately and helpfully called "properties of the global object".
What the article means by global scope is code that is not inside any function. In such code,
this
is a reference to the global object. In JavaScript within browsers,window
can be thought of as being the global object and is accessible everywhere.In summary, 2, 4 and 5 are the same thing. 1 and 3 are a poor name for "properties of the global object" that you should forget about.
简短回答:
4
和5
相当于2
。长答案:“全局对象”是 JavaScript 的一种语言构造,可以使用代码中的
global
或window
变量进行访问。该对象包含以某种方式定义的一切。“全局对象”是指在 JavaScript 环境的主范围内定义的所有对象。主作用域(或“全局作用域”)是指“全局对象”的直接子对象(属性)。
如果我在任何函数之外的 JavaScript 中定义变量
myVariable
,则该变量位于“全局范围”中,即可以使用global.myVariable
(或window. myVariable
),其中global
是对“全局对象”的引用。我建议看看 JavaScript 的函数作用域是如何工作的: https://developer.mozilla.org /en/JavaScript/Reference/Functions_and_function_scope
Short answer:
4
and5
are equivalent to2
.Long answer: "global object" is a language construct of JavaScript and can be accessed using the
global
orwindow
variables in your code. This object contains everything that is somehow defined."global objects" means all objects that are defined in the main scope of a JavaScript environment. The main scope (or "global scope") means immediate children (properties) of the "global object".
If i define a variable
myVariable
in JavaScript outside of any function, this variable is in the "global scope" i.e. accessible by usingglobal.myVariable
(orwindow.myVariable
) whereglobal
is a reference to the "global object".I recommend taking a look at how JavaScript's function scope works: https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope
全局对象是主要对象。把它想象成上帝。就像上帝一样,只有一个全局对象。在浏览器内部,
window
标识符引用它。全局对象是所有属于上帝属性的对象(全局对象)。浏览器内置了许多全局对象,例如
location
、document
、XMLHttpRequest
、alert
方法、 您可以通过以下方式创建其他全局对象:
最好将全局对象称为“全局变量”、“全局函数”、“全局成员”、“全局属性”等,以免与 Global 对象混淆。
The Global object is the main object. Think of it as God. Like God, there is only one Global object. Inside the browsers, the
window
identifier refers to it.Global objects are all the objects that are properties of God (the Global object). The browsers have lots of global objects built-in, like
location
,document
,XMLHttpRequest
, thealert
method, etc.You can create additional global objects by:
It is probably best to refer to global objects as "global variables", "global functions", "global members", "global properties", etc. so that they are not confused with the Global object.