プロトタイプチェーンclass キーワードは ES6 で導入されましたが、JS はまだプロトタイプベースであり、class は実際には構文上の糖衣です。 たとえば、people クラスがあります。 クラス People { コンストラクタ(props) { プロパティの名前を変更します。 } 走る() { コンソールログ('実行') } } 新しい人民階級を通じて、張三や李斯など多くの人々が生み出されます。 let lisi = new People('李四') しかし、広大な人間の海の中には、並外れた才能を持った人々のグループがいます。彼らはスーパーヒーローと呼ばれています。 クラスHeroはPeopleを拡張します{ コンストラクタ(props) { スーパー(小道具); this.power = props.power } ヘイハ() { アラート(this.power) } } Hero クラスは People を継承しているので、ヒーローはまず run メソッドを持つ個体であり、次に Hero には普通の人にはない超能力 heyHa メソッドがあります。大砲の超能力を持つジンクスというヒーローを次のように定義できます。 Jinx = new Hero({ name: 'jinx', power: 'cannon!' }) とします。 インスタンス Jinx は run メソッドを定義していませんが、プロトタイプ チェーンを使用すると、People プロトタイプにこの run メソッドがあること、つまり、その暗黙的なプロトタイプ __proto__ がコンストラクターのプロトタイプを指していることを確認できます。 インスタンスがメソッドまたはプロパティにアクセスする場合、インスタンス自体から開始し、プロトタイプ チェーンを遡って検索します。 Jinx.heyHa() // 大砲! // このメソッドがある場合 Jinx.run = () => console.log('i just fly!') Jinx.run() // ただ飛ぶだけ! では、 しかし、 これまでのところ、完全なプロトタイプ チェーン図は次のようになります。 プロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装することができますクラス JQuery { コンストラクタ(セレクタ、ノードリスト) { const res = nodeList || document.querySelectorAll(セレクタ); 定数長さ = res.length; (i = 0; i < 長さ; i++) の場合 { this[i] = res[i] } this.length = 長さ; this.selector = セレクター; } eq(インデックス) { 新しいJQuery(undefined、[this[index]])を返します。 } それぞれ(fn) { for(i = 0; i < this.length; i++) { const ele = this[i] fn(要素) } これを返します。 } on(type, fn) { this.each(ele => { を返します。 ele.addEventListener(タイプ、fn、false) }) } // 他のDOM APIを拡張する } const $$ = (セレクター) => new JQuery(セレクター); $$('body').eq(0).on('click', () => alert('click')); コンソールで実行すると、結果は次のようになります。 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: n 個のコンテナ要素による無限スクロールの実装コード
多くの場合、ホームページを作成するときに、Web ページ ヘッダー属性の設定を無視します。 Web ...
この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...
1. CSSをアルファベット順に並べるアルファベット順ではありません:コードをコピーコードは次のとお...
共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...
1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...
シーンについて話すメールを送信サードパーティのウェブサイトにHTMLを埋め込む他の編集者の記事をコピ...
1. 公式サイトのmysqlダウンロードページからmysql-5.7.21-windowx64.zi...
目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...
#docker ps チェック、すべてのポートがマップされています コンテナID イメージ コマンド...
仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...
目次序文keep-avlive フック関数keep-avliveはどのコンポーネントをキャッシュする...
目次最初の方法アプリ.vueホーム.vueホームコンテンツ.vueデータの応答性レスポンシブプロパテ...
MySQL 8.0.22のダウンロード、インストール、設定方法、参考までに具体的な内容は次のとおりで...
目次1. Vue環境を構築する2. Vue スキャフォールディングツール3. プロジェクトを作成する...
● 新しいプロジェクトのセキュリティを確保するためにクラウド データを購入する予定でした。 Alib...