我最近一直想探索 JavaScript 的一些数据结构,但我意识到我没有一个简单的方法来做到这一点。以下面的代码为例:
var a="asdf";
问题是,a
并不存在于它自己的空间中。它实际上成为 window
对象的一个属性。这导致了一些问题,例如“是否有任何东西拥有该窗口对象?”和“控制台是附加到窗口的对象吗?”
我认为能够看到变量或对象的父对象(假设它存在)会非常好。有没有办法让控制台告诉你这一点?
最佳答案
每个 javascript 环境都有某种全局对象,用于“保存”全局变量和任何其他全局可访问的内容。在浏览器 JavaScript 环境中,这个全局对象是 window
对象。正如您所发现的,浏览器中的所有全局变量实际上都是 window
对象的属性。在其他 javascript 环境(例如服务器端 JS)中,全局对象不是窗口对象,但仍然存在一个具有类似工作原理的全局对象(尽管它没有相同的内置浏览器窗口属性)。
没有通用的方法来查询变量并找出其包含的对象是什么。而且,在某些情况下(例如函数中的局部变量),没有可访问的 javascript 包含可从中访问变量的对象。
window
对象本身本质上是由浏览器拥有或控制的。每次浏览器打开一个新的浏览器窗口或选项卡时,它都会创建一个新的窗口对象。然后,它将文档加载到该窗口对象中进行显示,然后该页面中的 javascript 就可以访问 window
和 document
对象。
关于JavaScript - 获取父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060498/