Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么";“窗口”;对象有这么多嵌套的“;“窗口”;物体?_Javascript_Object_Nested_Window - Fatal编程技术网

Javascript 为什么";“窗口”;对象有这么多嵌套的“;“窗口”;物体?

Javascript 为什么";“窗口”;对象有这么多嵌套的“;“窗口”;物体?,javascript,object,nested,window,Javascript,Object,Nested,Window,例如,您可以使用窗口对象调用警报函数: window.alert("Hello World!"); 您还可以在窗口对象中使用窗口对象: window.window.alert("Hello World!"); 见鬼,你甚至可以这样做: window.window.window.window.window.window.window.window.window.window.window.window.window.alert("Hello World!"); 我知道这是荒谬的,没有一个理智

例如,您可以使用
窗口
对象调用
警报
函数:

window.alert("Hello World!");
您还可以在
窗口
对象中使用
窗口
对象:

window.window.alert("Hello World!");
见鬼,你甚至可以这样做:

window.window.window.window.window.window.window.window.window.window.window.window.window.alert("Hello World!");
我知道这是荒谬的,没有一个理智的开发人员会在现实生活中这样做,但为什么这是可能的


为什么有这么多嵌套的
窗口
对象?

每个全局变量都是全局对象的属性<代码>窗口
是全局的,因此
窗口。窗口
必须存在并引用自身:


console.log(window.window==window)
它们不是嵌套对象-它们只是完全相同的对象。它(某种程度上)是自身的属性(因为所有全局对象都是
窗口
对象的属性,
窗口
是全局的…):

var myGlobal=“你好!”;
log(window.myGlobal==window.window.myGlobal);
console.log(窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗。窗w、 window.window.window.window.myGlobal==myGlobal);
让window属性引用对象本身的意义, 很可能使引用全局对象变得容易。否则, 您必须在窗口顶部执行手动var窗口=this;赋值 你的剧本

如下所述:

窗口对象的窗口属性指向窗口对象本身。因此,以下表达式都返回相同的窗口对象:

window.window
window.window.window
window.window.window.window
// ...
要创建自己的嵌套对象,请执行以下操作:

myObject = {}
myObject.myObject = myObject
与其说是“嵌套”的,不如说是指向同一个对象的所有链接。或者说是一个链接,可以重复多次。可能是