160、クロージャ、高次機能、オーバーロード、多型、プロトタイプチェーン、クリアタグ

1 、閉鎖

HTTPS:ソース1が定義 //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
 、即ち、内部機能は、外部スコープの機能にアクセスすることができ、機能を直接外部スコープ内部機能にアクセスすることはできません:定義自体1内部機能は、外部の干渉によって影響されません。このメカニズムは、関数クロージャと呼ばれています。

ソース定義2:178ページの「JavaScriptの高度なプログラミング」
2定義自体:他の機能範囲にアクセスする権利変数関数(できます)。

前記閉鎖:関数function

利点:変数の戻り値は、関数がグローバル変数を減らすために関数内で外部変数にアクセスできるように、外に参照されているようクロージャは機能させることができます。
短所:機能のリード範囲を解放することはできませんが、メモリを取ります。


2 、高次機能
定義:そのようなマップ、forEachのようなその他の操作機能の機能、


3 オーバーロードに、

2つのJavaであれば署名のこれら二つの定義(タイプ及びパラメータの数)が異なることができるように、関数定義として定義することができます。JSが署名されていない、それが過負荷にすることはできません。

4 、多型

同様の動作は、上記異なるオブジェクトに適用される異なる実行結果を生成することができます。たとえば、「コール」アヒルのリスニングは「ガラガラ」鶏のリスニングが発行されます発行しますと言う「おしゃべりを。」

5 、プロトタイプチェーン

VAR OBJ = {}
関数fn(){}
// 1、および関数プロトタイプオブジェクト
 OBJ .__ proto__ ===のObject.prototype。
FN .__ proto__ === Function.prototype。
fn.prototype = {};
fn.prototype .__ proto__ ===のObject.prototype
.__プロト__ = EventEmitter.prototype Drag.prototype; //これは、より安全な継承されたメソッドで、このように継承に一般ノードです。IEはサポートしていません。
Drag.prototype =新しい持つEventEmitter; // 安全このように対向する、上部文言
 // 2、のようなプロトタイプオブジェクトクラスと機能
 のObject.prototype = {};
Object.prototype .__ proto__ === nullを
Function.prototype = {};
Function.prototype .__ proto__ ===のObject.prototype
// 3、プロトタイプオブジェクトクラスと機能クラスのクラス
 オブジェクト.__ proto__ === Function.prototypeを
機能.__ proto__ === Function.prototype
// https://www.jianshu.com/p/686b61c4a43d

 

6 自殺に関する質問、5
OBJ .__ = proto__
FN .__ proto__ =
fn.prototype =
fn.prototype .__ proto__ =

Object.prototype =
Object.prototype .__ proto__ =
Function.prototype =
Function.prototype .__ proto__ =

オブジェクト.__ proto__ =
機能.__ proto__ =

7 クリアをマーキング、
変数以下のマークを削除します: 1 )環境変数 2 )変数は、環境変数で参照されています
最後に: 1 )マークされ、それらの変数の破壊 2 )彼らが占めるメモリ空間を回復
 

 

 

 

おすすめ

転載: www.cnblogs.com/gushixianqiancheng/p/11949507.html