详解js私有作用域中创建特权方法


Posted in Javascript onJanuary 25, 2016

本文实例分享了js私有作用域中创建特权方法,供大家参考,具体内容如下

特权方法就是有权访问私有变量和私有函数的公有方法:

function MyObject(){
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  this.publicMethod = function(){
    privateVariable ++;
    return privateFunction();
  };
}  
var x = new MyObject();
console.log(x.publicMethod()) ;//false

私有作用域中定义私有变量和函数,同样也可以创建特权方法,如:

(function(){
  var privateValue = 10;
  function privateFunction(){
    return false;
  }
  
  MyObject = function(){}; //没有var 属于全局变量,严格模式下会报错
  
  MyObject.prototype.publicMethod = function(){
    privateValue ++;
    return privateFunction();
  };
})();

var instance = new MyObject();
console.log(instance.publicMethod());

这里就可以看出实际上就是在私有作用域中定义了一个全局的构建函数;其中的一个方法就是返回私有作用域中的一个私有变量和属性。写成下面这样就可以更好地了解:

Obj = function(){};

(function(){
  var x = 10;
  function y(){
    return x + 10;
  }

  Obj.prototype.say = function(){
    console.log(y());
  };
})()

var ins = new Obj();
ins.say();

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
通过length属性判断jquery对象是否存在
Oct 18 Javascript
javascript打印html内容功能的方法示例
Nov 28 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
vue组件学习教程
Sep 09 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
Sep 25 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
超赞的jQuery图片滑块动画特效代码汇总
Jan 25 #Javascript
理解js对象继承的N种模式
Jan 25 #Javascript
解决js函数闭包内存泄露问题的办法
Jan 25 #Javascript
JavaScript数据类型学习笔记
Jan 25 #Javascript
分步解析JavaScript实现tab选项卡自动切换功能
Jan 25 #Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 #Javascript
Jquery实现纵向横向菜单
Jan 24 #Javascript
You might like
理解PHP中的stdClass类
2014/04/18 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python二分法实现实例
2013/11/21 Python
浅析Python多线程下的变量问题
2015/04/28 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
Python实现Dijkstra算法
2018/10/17 Python
最小二乘法及其python实现详解
2020/02/24 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
远程调用的原理
2014/07/05 面试题
旅游管理本科生求职信
2013/10/14 职场文书
企业文明单位申报材料
2014/05/16 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
Python基础之Socket通信原理
2021/04/22 Python
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
mysql联合索引的使用规则
2021/06/23 MySQL
python实现层次聚类的方法
2021/11/01 Python