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判断是否按回车键并解决浏览器之间的差异
May 13 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
Oct 22 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
Aug 02 Javascript
JSON 对象未定义错误的解决方法
Sep 29 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
jquery表单验证插件validation使用方法详解
Jan 20 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
js 闭包深入理解与实例分析
Mar 19 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
JS实现仿京东淘宝竖排二级导航
2014/12/08 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
Async Validator 异步验证使用说明
2017/07/03 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
Python批量修改文本文件内容的方法
2016/04/29 Python
python验证码识别的实例详解
2016/09/09 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
关于Keras Dense层整理
2020/05/21 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
业务员自荐信范文
2014/04/20 职场文书
2014年护理部工作总结
2014/11/14 职场文书
工程部文员岗位职责
2015/02/04 职场文书
努力学习保证书
2015/02/26 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记