为了账号安全,请及时绑定邮箱和手机立即绑定

Proxy()代理后怎么修改name?为什么报错?

{

//ES6

let Person = {

name: 'es6',

sex: 'male',

age:15

}

let person = new Proxy(Person, {

get(target, key){

return target[key];

},

set(target, key, value){

if(key !== 'sex'){

target[key] = value;

}

}

});

//读取

console.table({

name: person.name,

sex: person.sex,

age: person.age,

});

//修改

person.name = 'es6-cname';

//读取

console.table({

name: person.name,

sex: person.sex,

age: person.age,

});

}


正在回答

3 回答

在Proxy代理里面set那里加个return就好了    

set(target,key,value){

      if(key!=='sex'){

       return target[key]=value;

      }

    }


4 回复 有任何疑惑可以回复我~
#1

离离画 提问者

谢谢,终于发现问题了?
2018-03-22 回复 有任何疑惑可以回复我~

老师啊,少写了一个return 

0 回复 有任何疑惑可以回复我~

赋值方法被代理了,应该是 person.set(key, value),试试看?

0 回复 有任何疑惑可以回复我~
#1

离离画 提问者

不对。。这样也报错。。。
2018-03-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
ES6快速入门
  • 参与学习       64179    人
  • 解答问题       142    个

用最通俗、形象的方法描述ES6的强大并教会你正确的学习方法。

进入课程

Proxy()代理后怎么修改name?为什么报错?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号