Javascript 窗口对象属性行为
当我们有普通的javascript对象时,我们可以使用类似于Javascript 窗口对象属性行为,javascript,javascript-objects,window-object,Javascript,Javascript Objects,Window Object,当我们有普通的javascript对象时,我们可以使用类似于objectName.proprtyName的语法来访问这些属性。如果我们只使用propertyName,那么我们将得到如下错误- const myObj={ 用户名:“约翰” }; console.log(myObj.userIdName)//约翰 console.log(userIdName)//错误“未定义” 到底是什么导致了窗口的这种行为对象 JavaScript有两种主要类型的环境记录(一种用于“保持”名称->值关联的构造)
objectName.proprtyName
的语法来访问这些属性。如果我们只使用propertyName
,那么我们将得到如下错误-
const myObj={
用户名:“约翰”
};
console.log(myObj.userIdName)//约翰
console.log(userIdName)//错误“未定义”
到底是什么导致了窗口的这种行为
对象
JavaScript有两种主要类型的环境记录(一种用于“保持”名称->值关联的构造):a和a
声明性环境记录以特定于实现的方式存储这些关联。这是最常见的环境记录类型,例如在调用函数时创建
如名称所示,对象环境记录使用实际的JavaScript对象作为“后端”。这意味着该环境中的每个条目都成为该“绑定对象”的属性,反之亦然
全局环境使用这样的对象环境,绑定对象可以通过浏览器中的窗口获得
我们可以为任何显式构建的对象(如第一个代码段中的对象)复制相同的行为吗
不推荐的对象仍然存在,并且可以使用提供的对象作为绑定对象创建对象环境记录。从:
with
语句将计算对象的对象环境记录添加到正在运行的执行上下文的词法环境中。然后,它使用这个扩展的词汇环境执行一条语句。最后,它恢复了原始的词汇环境
var obj={foo:42};
带(obj){
console.log(foo);
}
到底是什么导致了窗口的这种行为
对象
JavaScript有两种主要类型的环境记录(一种用于“保持”名称->值关联的构造):a和a
声明性环境记录以特定于实现的方式存储这些关联。这是最常见的环境记录类型,例如在调用函数时创建
如名称所示,对象环境记录使用实际的JavaScript对象作为“后端”。这意味着该环境中的每个条目都成为该“绑定对象”的属性,反之亦然
全局环境使用这样的对象环境,绑定对象可以通过浏览器中的窗口获得
我们可以为任何显式构建的对象(如第一个代码段中的对象)复制相同的行为吗
不推荐的对象仍然存在,并且可以使用提供的对象作为绑定对象创建对象环境记录。从:
with
语句将计算对象的对象环境记录添加到正在运行的执行上下文的词法环境中。然后,它使用这个扩展的词汇环境执行一条语句。最后,它恢复了原始的词汇环境
var obj={foo:42};
带(obj){
console.log(foo);
}
可用于此,但不推荐使用<代码>窗口===globalThis
(,)在浏览器中;这基本上就是它的特殊之处。的。类似的行为可能会在将来使用复制。可以用于此,但不推荐使用<代码>窗口===globalThis
(,)在浏览器中;这基本上就是它的特殊之处。的。类似的行为可能会在将来使用复制。