vue3-club / vue3-docs

vue中文社区,vue3 中文文档
https://vue3js.cn
339 stars 50 forks source link

关于 https://vue3js.cn/es6/ 相关代码 #3

Closed chengazhen closed 4 years ago

chengazhen commented 4 years ago

相关问题我写在了代码里面

const target = {
  _id: '1024',
  name:  'vuejs'
}

const proxy = new Proxy(target, {
  get(target, propkey, proxy){
    if(propkey[0] === '_'){
      throw Error(`${propkey} is restricted`)
    }
    return Reflect.get(target, propkey, proxy) //这里target将会被改为 { name: [Circular], _id: '1024' },相当于改变了target,不理解这 
    一步是需要产生什么效果呢,如果不做任何操作也可以成功打印出来("vuejs")
  },
  set(target, propkey, value, proxy){
    if(propkey[0] === '_'){
      throw Error(`${propkey} is restricted`)
    }
    return Reflect.get(target, propkey, value, proxy)
  }
})
chengazhen commented 4 years ago

兄弟代码写的有点马虎哦,毕竟作为文档还是要认真一点

image

febobo commented 4 years ago

兄弟代码写的有点马虎哦,毕竟作为文档还是要认真一点

image

感谢建议,目前还没有审稿噢,后续会对全篇进行修正

Proxy的函数负责的是:拦截并定义拦截时具体的操作 Reflect的静态函数负责的是:最终执行对象的操作

上面的代码跟 return target[propkey] 效果是类似的,不要这句会报错噢