JSの高度なプロトタイプ、相続、閉鎖

高度なJavaScriptの

初日

1.プロセス指向とオブジェクト指向

  • プロセス指向:パフォーマーとして、プロセスのすべてのステップが関係している、すべて自分自身。

  • オブジェクト指向:司令官として、オブジェクトが必要なものを、オブジェクトが行うことができますことが懸念されます

  • 注:オブジェクト自体は、オブジェクトまたはプロセス内

2.オブジェクト指向プログラミング

オブジェクトの明確な区分は、労働協力→完了目標の→→→オブジェクトオブジェクト部門を要求します

3.オブジェクトとクラス

オブジェクト、具体的には、また、オブジェクトのインスタンスを知ら。

  • プロパティ:静的な特徴

  • 方法:機能特性。機能を割り当てます。

実行4.newキーワード

実行:VAR ZS =新しいのObj( 'ZS'、18)

  1. オブジェクトを格納するメモリ空間を申請します

  2. コンストラクタの内部ので、この(ポーター)現在作成されたオブジェクトへのポイント(現在の宇宙アプリケーション)へ

  3. 道のthis.key =値では、プロパティとメソッドを扱うヒープに。

  4. 変数は、スタック内のスペースを開くこの時間変数の代入演算子でこの点を作るために

  5. 新しいキーワードが終了し、変数名のメモリ・アドレスに戻ります。

5.プロトタイプを認識します

なぜプロトタイプを勉強?

前提:オブジェクトを作成する場合は、オブジェクトのプロパティが変更された場合、方法は、変更するには、複数のオブジェクトは、多くの方法を追加したメモリを取り上げる作成するとき

解決策:同じ方法を共有することが提案されています

  • オブジェクトのプロトタイプは、自動的に割り当てられるの関数としてのシステムです。

    • コンストラクタのプロトタイプは、関連する機能に来ます

  • プロトタイプを取得:==コンストラクタ名.prototype ==

  • 使用:メソッド名==プロトタイプオブジェクト=関数(){//} ==プログラムの実行。

  • 処置:プロトタイプの方法で、共有することができる==インスタンスコンストラクタは、オブジェクト関連==を作成します

  • オブジェクトインスタンスのプロパティまたはメソッドをコールするときに、検索プロセスは、このです。

    • 見つけるために、オブジェクト自体のインスタンスを起動し、検索していない場合

    • システムは、に至るまでになり__proto__、プロトタイプのルックスに記憶されたプロトタイプの住所

  • 関係のコンストラクタとプロトタイプ:

    • コンストラクタは、プロトタイププロトタイプによって得ることができます

    • プロトタイプのコンストラクタは、コンストラクタによって取得することができます

6.プロトタイプチェーン

  • 自然は:オブジェクトのインスタンスは、プロセスのプロパティやメソッドを呼び出すことです

  • 次のようにプロトタイプチェーンのプロセスは、次のとおりです。

    • 見つけるために、オブジェクト自体のインスタンスを起動し、検索していない場合

    • システムは、に至るまでになります__proto__プロトタイプが見つからない場合は、プロトタイプのルックスに記憶されたプロトタイプの住所

    • プロトタイプは合格します___proto__ように、プロトタイプの試作品を見つけるでしょう、と

       
       
       
      オブジェクトはコンストラクタで
      オブジェクトのプロトタイプ:のObject.prototype 
      オブジェクトは先祖クラスである
      理由:すべてのオブジェクトに関係なく、あらゆるタイプの、オブジェクトに属する
      最終的にはすべてがオブジェクトであることを理解
       

次の日

1.継承

  • 親クラスとサブクラスの関係:継承

  • 役割:コードの冗長性を減らします

2.原型継承

  • どのように原型継承?

    • 具体的な例にサブクラスプロトタイプの親クラスのポイントを変更します。子类.prorotype= new 父类()新しいオブジェクトへのメソッドのプロトタイプ点、あなたは、そのプロパティを使用して新しいプロトタイプを呼び出すことができますし、新しいプロトタイプ手法のプロトタイプ

    • 新しいプロトタイプのサブクラスのコンストラクタに追加します。 子类.prorotype.constructor=子类

  • 長所と短所:

    • //長所:パーフェクト継承されたメソッド

    • //短所:完璧ではない継承されたプロパティ、プロパティの変更が要件を満たしてする必要はありません

3.借入の継承

メソッド呼び出しの使用

  • 目的:他の関数での借り入れの操作

  • 実装:この内部関数のポイントを変更します

  • 構文:函数名.call(借用者,实参,实参...)

  • どのように継承を借りるには?

    • サブクラスのコンストラクタで親クラスのコンストラクタメソッドの呼び出しによって呼び出され、

    • ウェイズ:親は.call(オブジェクトのこのサブアドレス、引数...)

  • 長所と短所:

    • 利点:パーフェクト継承プロパティ

    • 短所:メソッドは継承できません

使用方法は適用されます

.Apply関数名(借り手、[引数...])(必須配列に引数ことを除いて、同じものを呼び出して使用)

バインドを使用する方法

  • 構文:関数名.bind(借り手、引数...)

  • :すぐに新しい関数を返す実行されないだろう、あなたは新しい関数を呼び出す必要があります

 
 
 
 
 
使用Fn バインド(OBJ、10、20)(); 関数はそれを呼び出す必要があり、コールの効果は、同じの適用します
メソッドのダミー配列arrayの借用
アレイ。プロトタイプ。押す。コール(OBJ、XX)。
 VaRのR&LT = 数学。最大(適用ARR、ARR); 最大アレイの数学物体抽出方法を借ります
 

 

相続4.組み合わせ

プロトタイプ+借入

  • プロセス:

    • 原型継承は、継承されたメソッドを継承することができない欠点を補うために借りています。

    • 借入継承されたプロトタイプ継承は完璧な継承されたプロパティの欠点を補うことができません。

  • 短所:過剰は、鎖特性のプロトタイプを作成します

三日目

関数のパラメータの関数として、1 - コールバック

一般的な構文:

  • function 函数名(v){ v() }

  • function 函数名(v){ v(实参,实参) }

  • 原理:

    • 引数と関係のパラメータは、引数が仮パラメータに割り当てられています

  • 実用的なアプリケーションのシナリオ:内部機能が、あなたはコールバック関数を使用して、着信外部プログラムを受け入れるために必要がある場合

関数の戻り値の関数として、2

  • 構文:

    • function 函数名(){ return function(){ // 执行代码 }; }

    • function 函数名(){ var i = function(){ // 执行代码 }; return i }

  • 原理:returnキーワードバレーの使用。データを返します

  • シナリオ:クロージャが適用されます

クロージャ

クロージャは、内部ブリッジ機能と外部接続の関数であります

要約:

  • ライフサイクル変数:のメモリ内の変数の作成破壊

    • グローバル変数:プログラムが閉じられたときにShishengは→破壊し、プログラムを開きます→

    • ローカル変数:関数呼び出しの終了後に実行を破壊するときShisheng→関数が呼び出されます→

  • GC:フルネームGのarbageのCのollection

    • 不使用のデータガベージコレクション、リサイクルと破壊。

    • データは、データが使用されていないされていません。

  • 閉鎖:内部関数サブルーチン、橋

  • 役割:

    • ローカル変数のライフサイクルを延長

    • ローカル変数のセキュリティを維持

  • どのようにプログラムの閉鎖があるかどうかを検出します:

    • デバッグ:サブルーチン内のブレークポイントを設定、閉鎖がある場合はリフレッシュ権利を検出

    • ルール:

      1. 外側の機能と副機能

      2.外側の機能は、ローカル変数を持っている必要があります

      3.ローカル変数外の機能機能を動作させるために

      1. 機能や外部の関連付けをしてみましょう。

 
 
 
 
 
関数XP(){
  あります= 10;
  関数DP(){
    コンソール。ログインする(A)
  }
  リターンDP;
}
BS = )(XP。
BS()。
外部サブルーチンコール、サブルーチン外の関数呼び出しのローカル変数、クロージャを生成します
 

JSパラメータの関数がローカル変数であり、関数は内部、外部のない機能で使用することができます

 
 
 
 
 
閉鎖クラシックケース
(ボタンなど)は、ページ上の要素のセットがありますが、ショーの要素の要素のインデックスをクリックします。
VaRのbtns = ドキュメント。querySelectorAll('ボタン');
    ため(VAR iは= 0; iは< 。btns 長さを、私は++){
      (関数(I){
        // VAR I、ネストされたローカル変数の生成機能、パラメータがローカル変数であり、内層関数は、変数の関数を使用します
        btns [ i]を。onclickの= 関数(){
          警告(I);
        }
      })(I)。
    }
 

 

おすすめ

転載: www.cnblogs.com/bgd150809324/p/11352272.html