gpt4 book ai didi

javascript - 为什么变量成为窗口对象上的键?

转载 作者:行者123 更新时间:2023-11-28 12:28:52 26 4
gpt4 key购买 nike

我注意到,当我在窗口对象上写入时,变量变成了键,它们的值变成了所述键的值。例如:

var variable = "value";
console.log(window.variable);//logs "value"

但是如果我创建一个自己的新对象,例如:

var o = {
key: "value",
var key2 = "value2"
}; // result: "syntax error"

我必须使用冒号来设置键/值对。即使使用构造函数,虽然我没有收到语法错误,但我似乎无法在构造函数内部或对象实例化期间或之后执行此操作:

function Blueprint(){
this.key = "value";
var key2 = "value2";
}

var o = new Blueprint;
console.log(o.key); //result: "value"
console.log(o.key2); //result: "undefined"

现在,我明白为什么在前一种情况下我生成了语法错误,以及为什么在后一种情况下我无法将 key2 附加到蓝图构造函数,但我不明白为什么在全局窗口对象上我我被赋予了自由范围,只需使用变量添加属性,它们就会立即成为窗口对象上的键。除了 Windows 对象之外,变量的行为似乎独立于对象和属性创建。

在尝试节点时,我还注意到全局对象上的类似行为。全局对象是唯一可以使用变量以这种方式设置键/值对的对象吗?如果是这样,为什么?为什么我们在全局范围内工作时不被迫做如下事情:

this.key = "value";

或者...

window.key = "value";

这只是对语言整体行为的一些警告,还是窗口对象相对于所有其他对象有一些内部一致的逻辑来解释这一点?

最佳答案

全局变量(与函数内声明的局部变量相反)成为全局对象的属性。

在浏览器中,全局对象是window

关于javascript - 为什么变量成为窗口对象上的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599741/

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