详解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 相关文章推荐
javascript操作文本框readOnly
May 15 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
jQuery选择id属性带有点符号元素的方法
Mar 17 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
Nov 10 Javascript
javascript实现获取浏览器版本、浏览器类型
Dec 02 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 Javascript
vue.js删除列表中的一行
Jun 30 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 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_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python写入已存在的excel数据实例
2018/05/03 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
python连接PostgreSQL过程解析
2020/02/09 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
高中运动会入场词
2014/02/14 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
春季防火方案
2014/05/10 职场文书
文明演讲稿范文
2014/05/12 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技