我转过几个弯 绕过那个小雨楼
拿着蒲扇摆着衣衫渡着紧箍咒
不问天涯不停留 喝过几壶酒
不过年少白头道义放胸口
倘若明天之后 遥看前尘剑封侯
似那天上神仙无所求
朝朝暮暮君如梦醒十分不为何理由
是真是假是惶恐是无休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
又过了几个弯 算尽天量道莫慌
踏这田园闻这芳草香
跌跌撞撞仗剑天涯折煞不枉无笔良
是梦是幻是温柔是家乡
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
谁能与我一醉方休
Object.freeze() 冻结对象
const是禁止修改指向,而不是不能改值,由于常量的修改是直接赋值,所以使用const声明的变量是无法修改的。
但是object却是可以修改的,我们可以对这个object对象写入数据,那如果我们要禁止这个对象被读写呢?
我们可以利用Object.freeze()
方法来实现。
const obj = {
one : 1
}
一般我们可以通过obj.one = xx
来修改值,现在我们要防止这个值被修改:
const obj = Object.freeze({
one : 1
})
obj.one = 5;
console.log(obj) //{one:1}
无法被修改。
但是还有一种情况,就是如果这个one是一个对象呢,几遍我们给obj冻结了,one依旧可以被修改到,所以最好的办法就是进行一次遍历
let obj = {
one : { two: 2}
}
var freeze = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach((key,i) =>{
if(typeof obj[key] === "object"){
Object.freeze(obj[key]);
}
});
};
freeze(obj);
通过Object.keys获取到对象所有的key的数组,forEach遍历这个数组,然后判断对象里面key对应的值是否为object,如果是就冻结它。
这样一来对象里面的子级对象就不能被修改了,但是子级里面的子级如果是一个对象,依旧可以被修改,这个就看需求了,真的需要,你在遍历一下也不是不行。设置不行可以用其他办法,我记得有一个Object的方法,即可以拿来做监控,又能禁止写入呢。
2
评论(0)