Was macht ” [native code] ” bedeuten?

Lesezeit: 3 Minuten

Ich habe versucht, den jQuery-Code zu untersuchen, also habe ich Folgendes verwendet:

document.write($.constructor);

jsfiddle

Ich habe dieses Ergebnis erhalten:

function Function() { [native code] }

Was macht [native code] bedeuten? Warum kann ich den echten Code nicht sehen?

Getestet mit Google-Chrome

  • Hilft das: stackoverflow.com/questions/9103336/read-javascript-native-code?

    – Rob W

    27. Juni ’12 um 20:56

  • @RobW. ähm, tut es, aber ich verstehe immer noch nicht, warum bekomme ich diesen Wert? Wie kann jQuery ctor nicht in js sein? (wohl wissend, dass constructor is js ist nicht wie bei allen anderen Sprachen) es gibt kein CC++ im Quellcode…

    – gdoron unterstützt Monica

    27. Juni ’12 um 20:57


  • Es gibt eine Funktion zurück. Sehen Sie es sich in einer Warnung an ()

    – Alex W

    27. Juni ’12 um 20:58

  • @AlexW. Wie meine Frage sagt… ?!

    – gdoron unterstützt Monica

    27. Juni ’12 um 21:00

  • Möglicherweise constructor -Methode wird vom JS-Objekt geerbt, das Teil der grundlegenden Browserfunktionalität ist.

    – Vision

    27. Juni ’12 um 21:00


Wenn Sie Funktionen in einer interpretierten Sprache definieren (im Gegensatz zu einer kompilierten Sprache). Sie haben Zugriff auf die Datei / den String / den Text, der die Funktion definiert.

In JavaScript können Sie beispielsweise den Definitionstext einer von Ihnen definierten Funktion lesen.

Wenn Sie versuchen, dasselbe für eine Funktion zu tun, die inbegriffen durch Konstruktion in JavaScript wird es nicht als Text, sondern als Binär implementiert. Es gibt keinen Grund, den Binärcode anzuzeigen, der diese Funktion implementiert, da er nicht lesbar und möglicherweise nicht einmal verfügbar ist.

jQuery erweitert das standardmäßige JavaScript-Verhalten. Dies ist einer der Gründe, warum es im Gegensatz zu beispielsweise Prototype.js so hoch geschätzt und gelobt wurde. Prototyp war Ändern das natürliche Verhalten von JavaScript, das zu möglichen Inkonsistenzen führt, wenn Prototype zusammen mit einem anderen Codestück verwendet wird, das auf normaler Funktionalität beruht.

tl;dr:

jQuery erweitert JavaScript, es gibt Funktionen, die mit nativem Code implementiert werden (was in Bezug auf die Leistung eine gute Sache ist).

  • Diese Antwort erklärte das Geheimnis von [native code] sehr gut. Danke schön.

    – Der Qodesmith

    5. Okt ’16 um 16:52

  • was meinst du mit “in der konstruktion enthalten”?

    – doubleOrt

    9. September ’17 um 9:29

  • @doubleOrt Ich glaube, er bezieht sich auf den Motor

    – jataud

    17. Mai ’18 um 19:05

  • @Mihai Stancu Könnten Sie den Teil “in der Konstruktion enthalten” erklären?

    – Minh Nghĩa

    15. Okt. 19 um 7:40 Uhr

$, jQuery ist nur eine Funktion. Ohne es aufzurufen, ist es nur eine gewöhnliche Funktion. Der Konstruktor einer Funktion ist Function, somit $.constructor zeigt an [native code].

  • Nur um sicher zu gehen, es hat überhaupt nichts mit jQuery zu tun, die andere Antwort hat mich verwirrt.

    – gdoron unterstützt Monica

    27. Juni ’12 um 21:08

  • @gdoron jQuery ist in diesem Fall irrelevant.

    – Rob W

    27. Juni ’12 um 21:09

  • @RobW Ich habe diesen Code jQuery.colorbox.close() und wie man in natives Javascript konvertiert

    – Yatin Mistry

    19. Feb. ’15 um 7:48


Was macht native code bedeuten
dunkles Diatel

bind macht dies mit Funktionen:

var f = function() { /* source code */ };
console.log(f.toString());
function () { /* source code */ }
var a = {};
f = f.bind(a);
console.log(f.toString());
function () { [native code] }
f = new Function('/* source code */');
console.log(f.toString());
function anonymous() { /* source code */ }
f = f.bind(a);
console.log(f.toString());
function () { [native code] }

entweder bind gibt einen Verweis auf eine Art Wrapper-Code zurück, oder toString betrachtet die gebundene Kopie als nativ, da sie nicht direkt vom Benutzer erstellt wird

Wenn Sie jedoch nur die Funktion direkt protokollieren, ohne toString() zu verwenden, druckt (in Chrome) der Quellcode der ursprünglichen ungebundenen Funktion:

f = f.bind(a);
console.log(f)
ƒ () { /* source code */ }

in FF funktioniert dies jedoch nicht – FF gibt das Funktionsobjekt aus, ohne den Quellcode

.

471710cookie-checkWas macht ” [native code] ” bedeuten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy