JavaScript 保护变量不被随意修改的实现代码


Posted in Javascript onSeptember 27, 2017

下面给大家分享代码:

/*
* 1.如果在renderTitle,renderContent里面,这样总数据谁都能修改,不安全
* 改进
* 1.规定一个专门修改数据的方法,如果想修改数据只能走这个方法
*
* action代表一个命令对象,就是一个普通的js对象,起码需要一个字段控制命令类型type,其他字段随意
*
* */
const CHANGE_FONT_SILE='CHANGE_FONT_SILE';
//设置一个闭包,把变量保护起来,通过返回值调用
function createStore() {
  let appState={
    fontSize:'26px',
    title:{
      text:'标题',
      color:'red'
    },
    content:{
      text:'类容',
      color:'green'
    }
  }
  //保护变量被修改,深克隆
  let getState=()=>JSON.parse(JSON.stringify(appState));
  //改变变量的方法
  let dispatch=(action)=>{
    switch(action.type){
      case CHANGE_FONT_SILE:
        appState.fontSize=action.fontSize;
      default:
        return;
    }
  }
  //返回出去的修改和取值的接口
 return{
   getState,
   dispatch
 }
}
let store=createStore();
//取值函数
function renderTitle() {
  let titleEle = document.querySelector('#title');
  titleEle.innerHTML = store.getState().title.text;
  titleEle.style.color = store.getState().title.color;
  titleEle.style.fontSize = store.getState().fontSize;
}
function renderContent() {
  let titleEle=document.querySelector("#content");
  titleEle.innerHTML=store.getState().content.text;
  titleEle.style.color=store.getState().content.color;
  titleEle.style.fontSize=store.getState().fontSize;
}
function renderApp() {
  renderTitle();
  renderContent()
}
//修改appState里面初始值,单独一个修改文件
store.dispatch({type:CHANGE_FONT_SILE,fontSize:'30px'})
renderApp();

总结

以上所述是小编给大家介绍的JavaScript 保护变量不被随意修改的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 面向对象特性
Dec 28 Javascript
js左侧多级菜单动态的解决方案
Feb 01 Javascript
javascript 函数参数限制说明
Nov 19 Javascript
jQuery 版元素拖拽原型代码
Apr 25 Javascript
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
DOM 事件的深入浅出(一)
Dec 05 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
js如何获取图片url的Blob值并预览示例代码
Mar 07 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 #Javascript
微信小程序 按钮滑动的实现方法
Sep 27 #Javascript
详解Vue-cli代理解决跨域问题
Sep 27 #Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 #jQuery
javascript 作用于作用域链的详解
Sep 27 #Javascript
深入理解Vue2.x的虚拟DOM diff原理
Sep 27 #Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 #Javascript
You might like
关于PHP实现异步操作的研究
2013/02/03 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
详解Python with/as使用说明
2018/12/13 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
药学专业大专生的自我评价
2013/12/12 职场文书
大一自我鉴定范文
2013/12/27 职场文书
师德模范事迹材料
2014/06/03 职场文书
导航工程专业自荐信
2014/09/02 职场文书
学雷锋倡议书
2015/01/19 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
工程移交协议书
2016/03/24 职场文书
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
mysqldump进行数据备份详解
2022/07/15 MySQL