• 技术--- 闭包

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

 function cat(){
this.name = '猫';
this.climb = function(){
alert('我会爬树!');
}
}
var boshi = new cat();
alert(boshi.name);
boshi.climb();

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

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

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

最新文章

  1. HDU 5446 中国剩余定理+lucas
  2. Aspx生命周期
  3. 廖雪峰js教程笔记 2
  4. NSISの堆栈操作
  5. 【bzoj1053】反素数
  6. SQL Server 数据库初始化准备脚本
  7. python模拟Get请求保存网易歌曲的url
  8. cmake手册详解----转
  9. Laravel 5.2 教程 - 邮件
  10. Primavera——免费版本的下载和使用
  11. Pandas 使用笔记
  12. Redis入门指南之二(安装及配置)
  13. ASP.NET MVC 导入Excel文件
  14. jedisClient操作redis实现增删改查功能
  15. BZOJ.2462.[BeiJing2011]矩阵模板(二维Hash)
  16. 对于多个button要在同一个监听器中实现自己的单击事件的方法小诀窍。
  17. spring boot上传 下载图片。
  18. 分享一个经验,代码打开mysql链接,执行存储过程时,提示:Table 'mysql.proc' doesn't exist
  19. Android6.0------权限管理
  20. 电子相册之bitmap

热门文章

  1. 理解iPhone高清分辨率的问题
  2. [codevs1554]最佳课题选择
  3. Java笔记(八)……数组
  4. 五指cms安装说明
  5. uvalive 7331 Hovering Hornet 半平面交+概率期望
  6. cloudstack安装篇3-SELinux配置、NTP时间同步、配置ClouStack软件库
  7. HW4.4
  8. .NET Compact Framework Data Provider for SQL Server CE
  9. Spark RDD概念学习系列之RDD的容错机制(十七)
  10. linux定时器用法