JS块级作用域和私有变量实例分析


Posted in Javascript onMay 11, 2019

本文实例讲述了JS块级作用域和私有变量。分享给大家供大家参考,具体如下:

块级作用域

(function(){
  //这里是块级作用域
})()

例如:

(function(){
  for(var i=0;i<5;i++){
    alert(i);//0,1,2,3,4
  }
})();
alert(i);//error

上例中,定义了一个块级作用域,变量i在块级作用域中可见的,但是在块级作用域外部则无法访问。

这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

私有变量

任何在函数中定义的变量,都可以认为是私有变量。因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。

我们把有权访问私有变量和私有函数的公有方法称为特权方法:

function MyObject(){
//私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //特权方法,特权方法作为闭包有权访问在构造函数中定义的所有变量和函数
  this.publicMethod = function (){
    privateVariable++;
    return privateFunction();
  };
}
var obj = new MyObject();
obj.publicMethod();//

原型模式定义共有方法:

(function(){
  //私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //构造函数
  MyObject = function(){
  };
  //公有/特权方法
  MyObject.prototype.publicMethod = function(){
    privateVariable++;
    return privateFunction();
  };
})();

模块模式:

var singleton = function(){
//私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //特权/公有方法和属性
  return {
    publicProperty: true,
    publicMethod : function(){
      privateVariable++;
      return privateFunction();
    }
  };
}();

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用jQuery实现检测浏览器及版本的脚本代码
Jan 22 Javascript
基于Jquery的温度计动画效果
Jun 18 Javascript
js下通过getList函数实现分页效果的代码
Sep 17 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
js计算文本框输入的字符数
Oct 23 Javascript
JS运动特效之完美运动框架实例分析
Jan 24 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
JavaScript栈和队列相关操作与实现方法详解
Dec 07 Javascript
javascript实现遮罩层动态效果实例
May 14 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 #Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 #Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 #jQuery
JS实现获取当前所在周的周六、周日示例分析
May 11 #Javascript
js核心基础之构造函数constructor用法实例分析
May 11 #Javascript
js核心基础之闭包的应用实例分析
May 11 #Javascript
vue下载excel的实现代码后台用post方法
May 10 #Javascript
You might like
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP copy函数使用案例代码解析
2020/09/01 PHP
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 爬虫模拟登陆知乎
2016/09/23 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
硕士研究生自我鉴定范文
2013/12/27 职场文书
霸王洗发水广告词
2014/03/14 职场文书
英语专业求职信
2014/07/08 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript