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中消除闭包的一般方法介绍
Mar 16 Javascript
jQuery中extend函数详解
Jul 13 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
解决wx.onMenuShareTimeline出现的问题
Aug 16 Javascript
微信小程序开发之map地图实现教程
Jun 08 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
uni app仿微信顶部导航条功能
Sep 17 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 Javascript
JavaScript setInterval()与setTimeout()计时器
Dec 27 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制作静态网站的模板框架(一)
2006/10/09 PHP
php遍历CSV类实例
2015/04/14 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
网站上面有这种切换效果
2006/06/26 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
python读写csv文件实例代码
2019/07/05 Python
python中如何使用insert函数
2020/01/09 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
公司司机岗位职责
2014/02/07 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
python的变量和简单数字类型详解
2021/09/15 Python
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python