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

ES6解构赋值的疑问

ES6解构赋值的疑问

慕斯709654 2018-10-18 18:15:31
学习ES6,对代码中一处不理解:const { printName } = logger;我认为此句执行后printName是undefined,但实际打印出来确是printName(name = 'there') {this.print(Hello ${name});}我的理解是,Logger类没有显性设置constructor,那么此处实例logger是空对象{},printName和print方法都是Logger.prototype这个对象上的方法。所以对象解构赋值后,printName就是undefined。请指教!资料链接:http://es6.ruanyifeng.com/#do...的继承const { printName } = logger;class Logger {   printName(name = 'there') {    this.print(`Hello ${name}`);   }  print(text) {    console.log(text);   } } const logger = new Logger(); const { printName } = logger; printName(); // TypeError: Cannot read property 'print' of undefined
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

根据文档,Destrucuring assignment是会对prototype里面的属性进行解构的哦,

所以printName打印结果是printName(name = 'there') {this.print(Hello ${name});}是正确的

至于printName()的报错,是因为printName()中的thiswindow,所以没有this.print这个函数。


查看完整回答
反对 回复 2018-11-14
  • 1 回答
  • 0 关注
  • 519 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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