コア関数には以下が含まれます:
jquery の定義方法、呼び出し方法、拡張方法。コア メソッドの実装方法をマスターすることが、jQuery ソース コードを理解する鍵となります。ここですべてが突然明らかになりました。
1、定義方法、つまり入り口
// jQueryのローカルコピーを定義する
var jQuery = function( selector, context ) {
// jQueryオブジェクトは実際には単なるinitコンストラクターです '強化された'
Return new jQuery.fn.init(selector, context, rootjQuery);//jQuery オブジェクトは、jQuery のプロトタイプである jQuery.prototype.init の constructor強化版です
}
2 、および jQuery.fn の関係。 .init
//オブジェクト メソッドを定義します。つまり、$("xx") を通じてのみ呼び出すことができます。
jQuery.fn = jQuery.prototype = {
init:function( selector, context, rootjQuery ) {
return jQuery.makeArray( selector, this );
}
他にもたくさんの プロパティとメソッドがあります ,
プロパティは: jquery、constructor、selector、length
メソッドは: toArray、get、pushStack、each、ready、slice、first、last、eq、map、end、push、sort、splice
…
}
//後のインスタンス化のために init 関数に jQuery プロトタイプを与えます
jQuery.fn.init.prototype = jQuery .fn;
つまり、$("xx") にはインスタンス メソッドがあり、呼び出すことができます。 (jQuery.prototype で定義されたメソッドの呼び出し)
なぜ jQuery は jQuery.fn.init オブジェクトを返すのですか?
jQuery = function( selector, context ) {
// jQuery オブジェクトは実際には単なる init コンストラクターです。 '
return new jQuery.fn.init( selector, context, rootjQuery );
}
jQuery.fn = jQuery.prototype = {
…
}
jQuery.fn.init.prototype = jQuery. fn;
stackoverflow で同様の質問を見つけてください:
http://stackoverflow.com/questions/4754560/help- Understanding-jquerys-jquery-fn-init-why-is-init-in-fn
これも
http://stackoverflow.com/questions/1856890/why-does-jquery-use-new-jquery-fn-init-for-creating-jquery-object-but-i-can/1858537#1858537
私は信じていますコードはこの方法で記述されているため、新しい jQuery オブジェクトをインスタンス化するたびに new キーワードが必要なくなり、オブジェクト構築の背後にあるロジックをプロトタイプに委任することができます。前者は、ライブラリを使いやすくするためのものだと思います。後者は、初期化ロジックを 1 か所にきれいに保持し、渡された引数に正しく一致するオブジェクトを構築して返すために init を再帰的に呼び出すことを可能にします
jQuery .extend = jQuery.fn.extend = function() {
var target = argument[0] || {};
return target;
}
$.extend にほかならない extend を使うと便利です({ }); と $.fn.extend({}); fn を見たときに jQuery.prototype を理解して考えることができれば幸いです。
このスコープをもう一度見てみましょう:
$.extend ->this is $-> this.aa()
$.fn.extend->this is $.fn-> )
拡張実装の詳細を添付:
使用シナリオ:
1、パラメーターを 1 つだけ使用して一部の関数
を拡張します。例: $.extend({f1:function(){},f2:function(){},f3:function(){}})
2、複数のオブジェクトを最初のオブジェクトにマージします
(1) 浅いcopy の場合、最初のパラメータはターゲット オブジェクトです。たとえば
var a = {name:”hello”}
var b = {age:30}
$.extend(a,b);//a={name:”hello”,age:30}
(2) ディープコピー。最初のパラメータは TRUE で、2 番目のパラメータはターゲット オブジェクトです。たとえば、
var a = {name:{job:”it”}};
var b = {name:{age: 30 }};
//$.extend(a,b);
$ . extend(true,a,b);
console.log(a);
jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // 是不是深复制 Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // 不是对象类型 Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction(target) ) { target = {}; } // 扩展插件的情况 extend jQuery itself if only one argument is passed if ( length === i ) {//$.extend({f1:function(){},f2:function(){},f3:function(){}}) target = this;//this是$,或是$.fn --i; } for ( ; i <br>jQuery.extend({…}) 分析<p>書き方を見てみよう<br><br>jQuery.extend({</p><p>prop : ””</p><p>method:function(){}</p><p>});</p><p> これらのメソッドは jQuery の静的プロパティおよびメソッド (つまり、ツール メソッド) であることがわかります。将来的には、それらを直接提供できるようになります。ユーザー向け、または内部使用向け。 </p><p>特定の実装されたツールの属性とメソッドは (内部的に使用されるものもマークされています)</p><p>jquery.extend({<br><br>待機:内部)を待つファイルの数のカウンター(内部)<a href="http://www.php.cn/wiki/57.html" target="_blank"></a>holdready():dom trigger ready():dom triggerを準備<br><br>isfunction():それがそうであるかどうかfunction <br><br> Isarray (): 配列かどうか <br><br> type() <br>例外がスローされました<br><br> <br> parseHTML() () : JS<br><br>のグローバル解析<br> CamelCase() : キャメルケースを変換<br> <br> nodeName() : 指定されたノード名 (内部) かどうか <br><br> each() : コレクションを走査 <br><br> Trim() : 先頭と末尾のスペースを削除 <br><a href="http://www.php.cn/code/5808.html" target="_blank"> makeArray() : クラス配列を実数配列に変換 </a><br> inArray () : グループのバージョン番号indexOf<br> これを<br><br>を指すように変更します access() : 多機能値操作(内部) <br><br> now() : 現在時刻 <a href="http://www.php.cn/php/php-tp-throw.html" target="_blank"></a> swap() : CSSスワップ(内部) <br><br>} );<br><br>jQuery.ready.promise = function(){}; DOMの非同期操作を監視(内部)<br><br>function isArraylike(){} 配列状の判定(内部)<br></p>
以上がjqueryでコア関数インスタンスを解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
