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

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.

主站蜘蛛池模板: 德庆县| 文安县| 习水县| 桦南县| 鞍山市| 长沙县| 颍上县| 盱眙县| 磴口县| 四川省| 渝中区| 白河县| 白河县| 靖西县| 台江县| 隆化县| 普格县| 清水河县| 惠水县| 阜城县| 成都市| 安新县| 常德市| 罗平县| 民乐县| 怀来县| 阜新| 家居| 佛教| 苗栗市| 酒泉市| 明光市| 英山县| 天峨县| 定日县| 富源县| 曲阳县| 布尔津县| 呼伦贝尔市| 桃源县| 巴南区|