Im Folgenden finden Sie die Liste der Debugger-Abfragen und Antworten in einem node.js auf globale Bereichsebene ausgeführt:Node.js Globaler Scope
this.toString()
"[object Object]"
Object.getPrototypeOf(this).toString()
"[object Object]"
Object.getPrototypeOf(Object.getPrototypeOf(this))
null
this.constructor
function Object() { [native code] }
Object.prototype.toString()
"[object Object]"
Object.prototype.toString.call(this)
"[object Object]"
Function.prototype.toString()
"function() {}"
Function.prototype.toString.call(this)
TypeError: Function.prototype.toString is not generic
Der erste Satz von Antworten darauf hin, dass Der globale Gültigkeitsbereich wird durch ein Objekt repräsentiert, das Object.prototype erwartungsgemäß erweitert. Ich würde also erwarten, dass das Aufrufen von Function.prototypes .toString() auf dieses fehlschlagen würde, wie es tatsächlich tut (siehe die letzte Abfrage). Ich habe erwartet, dass die Abfrage voraus, dass eine implizite diese übergeben und so ebenfalls fehlschlagen, aber es gibt function() {}.
Warum der Unterschied, und welche Funktion wird in der Antwort referenziert?
Die zweite bis letzte entspricht "Function.prototype.toString.call (Function.prototype)". Der Wert von "this" aus dem globalen Bereich wird von diesem nicht verwendet. –