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 相关文章推荐
浅谈javascript的调试
Jan 28 Javascript
javascript制作的简单注册模块表单验证
Apr 13 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
Vue-input框checkbox强制刷新问题
Apr 18 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
Oct 01 Javascript
微信小程序实现可长按移动控件
Nov 01 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
php Memcache 中实现消息队列
2009/11/24 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
php验证手机号码
2015/11/11 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
类之Prototype.js学习
2007/06/13 Javascript
javascript eval函数深入认识
2009/02/21 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
200行python代码实现2048游戏
2019/07/17 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
员工合理化建议书
2014/05/19 职场文书
学习保证书100字
2015/02/26 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
macos系统如何实现微信双开? mac登录两个微信以上微信的技巧
2022/07/23 数码科技