详解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 相关文章推荐
jquery图片上下tab切换效果
Mar 18 Javascript
面向对象Javascript核心支持代码分享
May 23 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
Vue.js学习笔记之 helloworld
Aug 14 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
js实现文字列表无缝滚动效果
Jun 23 Javascript
vue ssr 指南详读
Jun 29 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
一起来了解一下JavaScript的预编译(小结)
Mar 01 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
PHP递归的三种常用方式
2019/02/28 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
prototype1.4中文手册
2006/09/22 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
深入理解Python3中的http.client模块
2017/03/29 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
大学生毕业自我鉴定
2013/11/06 职场文书
一年级学生期末评语
2014/04/21 职场文书
小学元宵节活动总结
2015/02/06 职场文书
工作自我推荐信范文
2015/03/25 职场文书
小学六年级毕业感言
2015/07/30 职场文书
《我是什么》教学反思
2016/02/16 职场文书