当前位置:网站首页>Handwritten shallowreadonly and readonly
Handwritten shallowreadonly and readonly
2022-07-22 18:34:00 【Agwenbi】
1、shallowReadonly
const shallowReadonlyHandler = {
get(target,prop){
console.log(' Performed data acquisition operation ');
return Reflect.get(target,prop);
},
set(target,prop,val){
console.warn(' Read only data cannot be changed or added ');
return true;
},
deleteProperty(target,prop){
console.warn(' Read only data cannot be deleted ');
return true;
}
}
const shallowReadonly = (target) => {
if(target && typeof target === 'object'){
return new Proxy(target,shallowReadonlyHandler);
}
return target;
}
const user = shallowReadonly({
name:'Agwnebi',
age:25,
car:{
name:' BMW ',
color:'blue'
}
})
console.log(user.name);
user.age = 26;
console.log(user);
2、readonly
const readonlyHandler = {
get(target,prop){
console.log(' Data reading operation is performed ');
return Reflect.get(target,prop);
},
set(target,prop,val){
console.warn(' Read only data cannot be changed or added ');
return true;
},
deleteProperty(target,prop){
console.warn(' Read only data cannot be deleted ');
return true;
}
}
const readonly = (target) => {
if(target && typeof target === 'object'){
if(Array.isArray(target)){
target.forEach((item,index) => {
target[index] = readonly(item);
});
}else{
Object.keys(target).forEach(key => {
target[key] = readonly(target[key]);
});
}
return new Proxy(target,readonlyHandler);
}
return target;
}
const user = readonly({
name:'Agwnebi',
age:25,
car:{
name:' BMW ',
color:'blue'
}
})
console.log(user.name);
user.age = 26;
console.log(user);
边栏推荐
- Fcntl function
- 3.Transbot修改显示分辨率
- C # entry series (XXVII) -- Brief Analysis of LINQ
- 力扣解法汇总532-数组中的 k-diff 数对
- 数据湖(十八):Flink与Iceberg整合SQL API操作
- 2. Raspberry pie system backup
- 力扣解法汇总676-实现一个魔法字典
- 主动降噪耳机排行榜10强,主动降噪耳机十大品牌
- 力扣解法汇总324-摆动排序 II
- Design of miner type identification mechanism based on reputation management model
猜你喜欢
随机推荐
按结构体某一元素排序的小程序(fishing_3)
小程序实现列表和详情页
Verilog basic syntax (2)
24 条 SaaS 思考
开源dns软件PowerDNS BIND9 mydns
C # entry series (XXVII) -- Brief Analysis of LINQ
MySQL实现从其他表查询数据并插入另外一张表
Android互联网大厂面试经验
set up ovn based sr-iov test env (by quqi99)
女嘉賓報名
2、 Notes
小程序CMS动态处理数据之内容模型和内容集合的使用
3、 Generics
Internet download manager2022 trial (IDM for short)
pm的报警告:“npm WARN config global --global, --local are deprecated
力扣解法汇总745-前缀和后缀搜索
Reflection + annotation + generics
Js高级-对象的理解
力扣解法汇总814-二叉树剪枝
DistSQL 深度解析:打造动态化的分布式数据库