functiontest(){letname='init';functiongetName(){returnname;}functionsetName(newName){name=newName;}return{getName:getName,setName:setName,name:name}}lett1=test();t1.setName('liujiapeng')console.log(t1.getName())//liujiapengconsole.log(t1.name);//init为什么t1.name不能打印出修改后的值呢,我的理解是因为有闭包,因此t1创建的test上下文没有弹出,get和set函数中的name都是该上下文中的name。那为啥直接把name返回出去获取不到最新的值咧。小白上路,望大神指导~
2 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
functiontest(){letobj={name:'init'}functiongetName(){returnobj.name;}functionsetName(newName){obj.name=newName;}return{getName:getName,setName:setName,obj:obj}}lett1=test();t1.setName('liujiapeng')console.log(t1.getName())//liujiapengconsole.log(t1.obj.name);//liujiapeng去查(对象)值的引用和(简单)值的复制。return出去name的不是闭包里的那个name,是它的copy。
添加回答
举报
0/150
提交
取消