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中的new的使用方法与注意事项
May 16 Javascript
模仿jQuery each函数的链式调用
Jul 22 Javascript
Javascript this指针
Jul 30 Javascript
简单方法判断JavaScript对象为null或者属性为空
Sep 26 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
Feb 12 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
vue组件间通信六种方式(总结篇)
May 15 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
element 动态合并表格的步骤
Dec 31 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
我的论坛源代码(七)
2006/10/09 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
js实现图片3D轮播效果
2019/09/21 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
python fabric实现远程部署
2017/01/05 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python3 flask实现文件上传功能
2020/03/20 Python
在python中pandas的series合并方法
2018/11/12 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
品管员岗位职责
2013/11/10 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技