Javascript閉パッケージ関数の簡単な学習

2058 ワード

閉パッケージ関数は何ですか?勉强を始めたとき、みんな理解しにくいです.彼の公式解釈から言えば、比較的概念化されている.
しかし、私たちもやはり閉鎖の意味から出発します.閉パッケージとは、関数に自由に独立した変数があることを意味します.すなわち、閉パッケージに定義された関数は、作成時の環境を「記憶」することができる.公式の説明が終わったら、簡単なカウントの例を見てみましょう.

var c = 0;
function count(){
c++;
}
count();// 1
count();// 2

この例は、グローバル変数を用いる実現されるが、ここでは、cという変数も他の方法で呼び出すやすく、この場合cの記憶値が変更される可能性があるという問題がある.このcountカウントの失効をもたらす.では、どうやってこの問題をうまく処理しますか.局所変数を用いて処理することを考える.例:

function count(){
 var c = 0;
 function add(){
  c++;
 }
 add();
}
count();// c = 1
count();// c = 1

このように作成すると、内部変数はcount関数の作成実行時にのみ存在し、実行が完了すると関数全体が破棄されるからである.記憶のある能力に達することはできない.どうやって実現するの?では、閉鎖で解決します.もう一度言います:閉パッケージ=関数+環境

function count(){
  var c = 0;
  function add(){
   c++;
  }
  return add;
}
var ct = count();
ct(); // c = 1
ct(); // c = 2

この時、私たちはこの閉パッケージを通じてカウントを完了することができます.ctは閉包関数であり、内部の環境はこの局所変数cである.ここで我々が達成したのは内部データであり、外部が操作する.では、閉鎖パッケージにはこれ以外に何か機能がありますか?
プライベートメソッドをクローズドパッケージでシミュレートするのはJAVAのプライベートメソッドやプライベート変数に似ていて、自分で操作するしかありません!外部操作の場合、開示の方法を設定操作する必要がある.

var person = (function(){
  var _name = "    ";
  var age = 20;
  return {
   add:function(){
     age++;
   },
   jian:function(){
     age--;
   },
   getAge:function() {
     return age;
   },
   getName:function(){
     return _name;
   },
   setName: function (name) {
     _name = name;        
   }
  }
})();
person.add();
var age = person.getAge();
console.log(age)
person.setName("       :bianchengderen")
console.log(person.getName())

ここは分かりやすいでしょう.ちょっとオブジェクト向けにプログラミングした感じです.もちろんJavascriptは現在もオブジェクト向けプログラミングの特徴がある.この点は後で説明します.これまで、カウントから内部私有化の例まで、閉パッケージについて説明してきましたが、その理由を簡単に理解していただきたいと思います.もちろん、閉パッケージには他の機能利用が便利です.
以上が本稿のすべてですが、javascriptプログラムの設計を学ぶのに役立つことを願っています.