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 相关文章推荐
js wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
jQuery删除节点用法示例(remove方法)
Sep 08 Javascript
详解jQuery简单的表单应用
Dec 16 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
angularJs提交文本框数据到后台的方法
Oct 08 Javascript
vue watch关于对象内的属性监听
Apr 22 Javascript
Vue中props的详解
May 16 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 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 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP中的替代语法介绍
2015/01/09 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
PHP attributes()函数讲解
2019/02/03 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
如何开发出更好的JavaScript模块
2017/12/22 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
jquery检测上传文件大小示例
2020/04/26 jQuery
JavaScript中的Proxy对象
2020/11/27 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
酒店管理毕业生自我鉴定
2014/03/02 职场文书
股东协议书范本
2014/04/14 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书