75

jQueryコードを調査しようとしたので、これを使用しました:

document.write($.constructor);

jsfiddle

私はこの結果を得ました:

function Function() { [native code] }

とは[native code]どういう意味ですか? 実際のコードが表示されないのはなぜですか?

でテスト済みGoogle-Chrome

4

3 に答える 3

58

(コンパイルされた言語ではなく)インタプリタ言語で関数を定義する場合。関数を定義するファイル/文字列/テキストにアクセスできます。

たとえばJavaScriptでは、定義した関数の定義本文を読み取ることができます。

JavaScriptの構築に含まれている関数に対して同じことを行おうとすると、テキストとしてではなくバイナリとして実装されます。その関数を実装するバイナリコードは読み取り可能ではなく、使用できない可能性があるため、表示する理由はありません。

jQueryはデフォルトのJavaScriptの動作を拡張します。これは、たとえばPrototype.jsとは対照的に、非常に高く評価され、賞賛された理由の1つです。Prototypeは、JavaScriptの自然な動作を変更し、通常の機能に依存する他のコードと一緒にPrototypeを使用すると、矛盾が生じる可能性がありました。

tl; dr:

jQueryはJavaScriptを拡張し、ネイティブコードを使用して実装された機能があります(パフォーマンス的には良いことです)。

于 2012-06-27T21:00:09.783 に答える
25

$jQuery単なる関数です。呼び出さなければ、ただの普通の関数です。関数のコンストラクタはFunctionであるため、$.constructorが表示されます[native code]

于 2012-06-27T20:59:35.613 に答える