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

ES5 set如何设置值?

ES5 set如何设置值?

慕村225694 2018-11-14 17:14:10
代码是这样的function(){        window.Observer = function(data){            this.data=data;            for(var key in this.data){                var val = this.data[key]; ---这里                this.walk(val,key);                   }        };        Observer.prototype.walk = function(val,key){            Object.defineProperty(this.data,key,{                enumerable: true,                configurable: true,                get:function(){                    return val;                },                set:function(newValue){                    val = newValue; --- 这里                }            })        };    })()  var app = new Observer({a:"a"}); console.info(app.data.a);         app.data.a = "b";  console.info(app.data.a);然后输出为 a b;为什么通过val = newValue可以设置a属性的值?val难道是一个引用?如果val存的是地址,可是这样为什么又不行var a = {b:0}var val = a.b; val = 1  //a.b仍然是0
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

val不是引用,就是值 ,之所以通过val = newValue可以设置app.data.a的值,是因为这是个闭包,里面保存了val的值,所以获得app.data.a的值时,调用get方法,返回的也是val.

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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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