提问者:小点点

我很难找到全局对象“window”的__proto__


我现在正在研究Chrome。

console.log(window.__proto__.__proto__.__proto__);

console.log(window.__proto__.__proto__.__proto__ === EventTarget.prototype);

我发现上面的第一段代码返回EventTarget.Prototype

这可以通过第二个代码来验证,它返回“true”

此外,下面的代码也返回true:

console.log(EventTarget.prototype.__proto__ === Object.prototype);

但是,当您跟踪EventTarget.Prototype的子项是谁时会出现问题。

console.log(window.__proto__.__proto__);

上面的代码返回下面。

WindowProperties{Symbol(Symbol.ToStringTag):“WindowProperties”。。。。}

当我试图跟踪构造函数“WindowProperties()”或对象“WindowProperties.Prototype”时,

控制台显示

未捕获的ReferenceError:在1:13未定义WindowProperties

为什么会出现这种情况?


共1个答案

匿名用户

因为没有向您的代码公开的名为WindowsProperties的内置全局。 仅仅因为某个东西存在并且有一个名称并不意味着您的代码可以访问它。 例如:

null

const example = (() => {
    return new class Something { };
})();
console.log(example.__proto__.constructor.name); // Something
console.log(Something); // ReferenceError: Something is not defined