浏览器控制台允许您使用树状结构检查对象,例如:
console.log(document);
然后我可以自由浏览对象,包括它的原型和原型的原型等等。我想复制这种行为,但在实现“原型的原型”功能时遇到了问题。
我的代码可以很好地在原型中获取密钥,但在尝试记录它们时会抛出一个错误。(我正在使用
var
以便更容易在控制台中重复测试。)
以下是演示该问题的简化版本:
var prototype = Object.getPrototypeOf(document);
var prototypeOfPrototype = Object.getPrototypeOf(prototype);
var keys = Object.getOwnPropertyNames(prototypeOfPrototype);
console.log(keys);
var values = keys.map((key) => {
console.log(prototypeOfPrototype[key]);
});
我得到的错误如下:
铬:
"Illegal invocation"
火狐浏览器:
"Uncaught TypeError: 'get implementation' called on an object that does not implement interface Document."
至少对我来说,这些并没有真正的帮助。如果有人知道为什么会发生这种情况,或者我如何在避免错误的同时实现此功能,我们将不胜感激。