function student () { var name = 'xxx'; var getName = function () { return name } var setName = function (newName) { name = newName; } return { getName: getName, setName: setName, name: name }}var studentA = student();console.log(studentA.getName())studentA.setName("aaa");console.log(studentA.getName())console.log(studentA.name);为啥输出了是按道理不是名字已经变成aaa了吗?更具指导是要在get和set里面都加上this.name就可以了,请问是为什么,我之前写的两个name不是同一个作用域?我知道了,我把闭包分配的空间和return的空间混淆在一起了,所以没用this是对闭包的 空间的修改然后用this是对这个return的对象的修改
添加回答
举报
0/150
提交
取消