JavaScript 保護(hù)變量不被隨意修改的實(shí)現(xiàn)代碼
下面給大家分享代碼:
/*
* 1.如果在renderTitle,renderContent里面,這樣總數(shù)據(jù)誰(shuí)都能修改,不安全
* 改進(jìn)
* 1.規(guī)定一個(gè)專門修改數(shù)據(jù)的方法,如果想修改數(shù)據(jù)只能走這個(gè)方法
*
* action代表一個(gè)命令對(duì)象,就是一個(gè)普通的js對(duì)象,起碼需要一個(gè)字段控制命令類型type,其他字段隨意
*
* */
const CHANGE_FONT_SILE='CHANGE_FONT_SILE';
//設(shè)置一個(gè)閉包,把變量保護(hù)起來(lái),通過(guò)返回值調(diào)用
function createStore() {
let appState={
fontSize:'26px',
title:{
text:'標(biāo)題',
color:'red'
},
content:{
text:'類容',
color:'green'
}
}
//保護(hù)變量被修改,深克隆
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();
//取值函數(shù)
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里面初始值,單獨(dú)一個(gè)修改文件
store.dispatch({type:CHANGE_FONT_SILE,fontSize:'30px'})
renderApp();
總結(jié)
以上所述是小編給大家介紹的JavaScript 保護(hù)變量不被隨意修改的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JS實(shí)現(xiàn)網(wǎng)站菜單拖拽移位效果的方法
這篇文章主要介紹了JS實(shí)現(xiàn)網(wǎng)站菜單拖拽移位效果的方法,涉及JavaScript動(dòng)態(tài)操作頁(yè)面元素樣式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
細(xì)說(shuō)JavaScript中的變量,作用域和垃圾回收
這篇文章主要和大家介紹一下JavaScript中的變量,作用域和垃圾回收的定義與使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下2022-11-11
分享50個(gè)超級(jí)有用的JavaScript單行代碼(推薦!)
JavaScript是一種腳本語(yǔ)言,是直接在瀏覽器運(yùn)行的,下面這篇文章主要給大家介紹了50個(gè)超級(jí)有用的JavaScript單行代碼的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
JS寫的數(shù)字拼圖小游戲代碼[學(xué)習(xí)參考]
昨天沒(méi)事做,就用JS寫了個(gè)數(shù)字拼圖的小游戲,自?shī)首詷?lè)。 可惜關(guān)于逆序數(shù)的問(wèn)題還沒(méi)解決,現(xiàn)在有時(shí)是拼不成的,大家見(jiàn)諒了。2008-10-10
JavaScript實(shí)現(xiàn)重力下落與彈性效果的方法分析
這篇文章主要介紹了JavaScript實(shí)現(xiàn)重力下落與彈性效果的方法,結(jié)合實(shí)例形式分析了javascript重力下落及彈性效果的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(二) ECMAScript中的原始類型
ECMAScript有5種原始類型(primitive type),即Undefined、Null、Boolean、Number和String。ECMAScript提供了typeof來(lái)判斷值的類型2012-02-02
基于canvas實(shí)現(xiàn)超炫酷的流水燈效果
這篇文章主要為大家詳細(xì)介紹了基于canvas實(shí)現(xiàn)超炫酷的流水燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05

