javascript 之封装技巧

  • 技术--- 闭包

javascript中的对象属性都是公开的,外界都可访问到,例:

1 function cat(){
2     this.name = '猫';
3     this.climb = function(){
4         alert('我会爬树!');    
5     }
6 }
7 var boshi = new cat();
8 alert(boshi.name);
9 boshi.climb();

cat对象中被实例化,name属性和climb方法都能被直接调用,没有被私有,但是我们可以用闭包模拟封装

 1 function cat(){
 2     var age = 28;
 3     this.name = '猫';
 4     this.climb = function(){
 5         alert('我会爬树!');    
 6     }
 7     this.tellage = function(addage){
 8         return '我一般告诉别人年龄是'+(age+addage);
 9     }
10 }
11 var boshi = new cat();
12 alert(boshi.name);
13 alert(boshi.age);        //由于age是局部变量,所以访问不了
14 alert(boshi.tellage(-10));    //tellage方法是个模拟开放接口,开放年龄

这里的age就可模拟成一个私有属性,运用闭包(指在一个函数内定义的局部变量,被此函数内定义子函数所调用,也就是子函数访问上级函数定义的变量)可模拟封装,当然封装私有方法也可以的。

posted on 2014-04-11 12:08  hminfei  阅读(426)  评论(0)    收藏  举报

导航