手写shadowReadonly和readonly

手写shadowReadonly和readonly

const readonlyHandler = {
 get(target,prop){
  const result = Reflect.get(target,prop)
  console.log(’拦截到了读取数据‘,prop,result);
  return result
 }
 set(target,props,value){
  console.log('只能读取数据,不能修改数据或者添加数据')
  return true
 }
 deleteProperty(target,prop){
  console.log('只能读取数据,不能删除数据')
  return true
 }
}
function shallowReadonly(target) {
//判断当前的数据是不是对象或者数组
 if(target && typeof target === 'object'){
  return new Proxy(target,readonlyHandler)
 }
 return target
}
function 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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值