官术网_书友最值得收藏!

Private variables

Closures are frequently used to encapsulate some information as private variables. JavaScript does not allow such encapsulation found in programming languages such as Java or C++, but by using closures, we can achieve similar encapsulation:

function privateTest(){
 var points=0;
  this.getPoints=function(){
    return points;
  };
  this.score=function(){
    points++;
  };
}

var private = new privateTest();
private.score();
console.log(private.points); // undefined
console.log(private.getPoints());

In the preceding example, we are creating a function that we intend to call as a constructor. In this privateTest() function, we are creating a var points=0 variable as a function-scoped variable. This variable is available only in privateTest(). Additionally, we create an accessor function (also called a getter)—getPoints()—this method allows us to read the value of only the points variable from outside privateTest(), making this variable private to the function. However, another method, score(), allows us to modify the value of the private point variable without directly accessing it from outside. This makes it possible for us to write code where a private variable is updated in a controlled fashion. This pattern can be very useful when you are writing libraries where you want to control how variables are accessed based on a contract and pre-established interface.

主站蜘蛛池模板: 九寨沟县| 山阴县| 昭平县| 台江县| 宜都市| 砀山县| 江永县| 阿坝县| 乐亭县| 鄂托克旗| 迭部县| 壶关县| 富宁县| 丰原市| 花莲市| 个旧市| 中江县| 榆社县| 东源县| 肇州县| 杂多县| 鹤壁市| 盘山县| 龙海市| 吴堡县| 无极县| 天台县| 安溪县| 衢州市| 莲花县| 萍乡市| 探索| 天津市| 甘孜县| 马公市| 天柱县| 瓦房店市| 济宁市| 介休市| 盱眙县| 玛沁县|