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 for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
使用node+vue.js实现SPA应用
Jan 28 Javascript
javascript js 操作数组 增删改查的简单实现
Jun 20 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
利用原生JavaScript实现造日历轮子实例代码
May 08 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
vue+echarts实现多条折线图
Mar 21 Vue.js
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
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python中格式化format()方法详解
2017/04/01 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
linux 下selenium chrome使用详解
2020/04/02 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
初中校园广播稿
2014/02/02 职场文书
员工安全生产承诺书
2014/05/22 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
教师工作决心书
2015/02/04 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers