锋芒神话霜 2020-02-12 08:32 采纳率: 50%
浏览 330
已结题

求教在我这个教学实例里ES6写法函数和以前写法的结果为何会不同

const obj = {
  _name: '0',
  get aaa() {
    console.log('123')
    return this._name
  },
  set aaa(val) {
    this._name = val
  }

}
console.log("TCL: obj.aaa", obj.aaa)
obj.aaa = 2


console.log("TCL: obj", obj)

const obj1 = {
  _name : '2'
}

Object.defineProperty(obj1,'name',{
  get: function(){
    return this._name
  },
  set: (val)=>{
    this._name = val
  }
  // set: function(val){
  //   this._name = val
  // }
})

Object.defineProperty(obj1,'age',{
  value: 19,
  enumerable: true
})

obj1.name = 3
console.log('obj1._name',obj1)

for (let i in obj1){
  console.log('i',i)
}

程序作用是老师给我们讲解如何在ES5实现get和set方法,注意注释部分,我注释掉的代码是可以正确运行的,但是上面的ES6写法的SET却不行,还提示_name从未被使用,我觉得很奇怪,如果成功的话下obj1里的_name的值会被改变

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2020-02-12 12:22
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题