我现在正在研究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
为什么会出现这种情况?
因为没有向您的代码公开的名为WindowsProperties
的内置全局。 仅仅因为某个东西存在并且有一个名称并不意味着您的代码可以访问它。 例如:
null
const example = (() => {
return new class Something { };
})();
console.log(example.__proto__.constructor.name); // Something
console.log(Something); // ReferenceError: Something is not defined