Lesen Sie den nativen JavaScript-Code

75

Gibt es eine Möglichkeit, die Deklaration des nativen JavaScript-Codes anzuzeigen? Immer wenn ich versuche, eine native Funktion in Chrome oder Firefox zu betrachten, heißt es " native code":

> String.fromCharCode
function fromCharCode() { [native code] }

Was bedeutet das und gibt es ein Tool, mit dem ich den tatsächlichen Code lesen kann?

emphaticsunshine
quelle

Antworten:

86

Der Grund, warum Chrome oder Firefox sagt, dass der Code nativ ist, ist, dass er wirklich nativ ist - die Entwickler von WebKit und Firefox haben diese Funktionalität in C oder C ++ codiert, nicht in JavaScript. Wenn Sie jedoch den tatsächlichen Code anzeigen möchten, können Sie sich die Quell-Repositorys für Chromium und Firefox ansehen .

Adam Mihalcin
quelle
17
Ich stimme zu, aber ich dachte, vielleicht gibt es eine Erweiterung, die das für mich erledigt. Ich kann in die Dokumentation schauen, habe aber nach einer Verknüpfung gesucht.
emphaticsunshine
Gibt es eine Möglichkeit, in nativen Webkit-Code für Safari zu schauen? Ich debugge ein Problem mit webkitAudioContext (HTML5 WebAudio API). Der Umgang mit ScriptProcessorNode funktioniert gut in Chrome und Firefox und verhält sich in Safari seltsam. Gibt es eine Möglichkeit zum Debuggen mit Safari-Code, da dieser nicht geöffnet ist ptrace?
Singleton
31

Nicht in der JavaScript-Umgebung, aber Sie können die Quelle für die Open-Source-Implementierungen anzeigen.

Google V8: http://code.google.com/p/v8/source/browse

Mozilla SpiderMonkey: https://developer.mozilla.org/en/SpiderMonkey

user1106925
quelle
8
Das ist sehr nützlich, aber ich habe in einer Konsole oder so gesucht. Eine Abkuerzung. Es war ärgerlich, zur Dokumentation zu gehen und danach zu suchen. Trotzdem danke für die Antwort.
emphaticsunshine
0

Firefox unterstützt jetzt die Überprüfung von "[nativen Code]" - Objekten über Standard-Entwicklungstools.

Um es in Aktion zu sehen:

  1. Update Firefox (funktioniert definitiv mit v68 +, funktioniert möglicherweise auch mit älteren Versionen)
  2. Öffnen DevTools
  3. Gehe zur Konsole
  4. Geben Sie den Namen eines nativen Objekts ein, z. B. "Dokument".
  5. Drücken Sie die Eingabetaste
  6. Verrückt nach all diesen kleinen Dropdown-Pfeilen

FireFox - "nativen Code" überprüfen - Dokumentobjekt

Chrome gibt leider immer noch ƒ Document () {[nativer Code]} zurück .

Chrome - Überprüfen Sie NICHT "nativen Code" - Enttäuschung

gitbfd
quelle
1
Dies zeigt nicht den Quellcode der Funktion, sondern nur die Objekteigenschaften des Funktionsobjekts wie dies der console.dir(Document)Fall ist.
Bergi
Ich stimme Bergi zu. Ich habe FF 80 verwendet, lief Number.prototype.constructor.toString()und bekam "function Number() { [native code] }"als Ausgabe.
Mr. Polywhirl