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 相关文章推荐
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 Javascript
DLL+ ActiveX控件+WEB页面调用例子
Aug 07 Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
Node.js爬取豆瓣数据实例分析
Mar 05 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
微信小程序顶部导航栏可滑动并选中放大
Dec 05 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
Feb 02 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
Javascript执行上下文顺序的深入讲解
Nov 04 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 array_intersect()函数使用代码
2009/01/14 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
如何让CI框架支持service层
2014/10/29 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
JQuery选择器特辑 详细小结
2012/05/14 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Python虚拟环境项目实例
2017/11/20 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Pytorch 实现权重初始化
2019/12/31 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
六一儿童节新闻稿
2015/07/17 职场文书
2015双创工作总结
2015/07/24 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
学习nginx基础知识
2021/09/04 Servers