我以为我可以使用 setter 来更改闭包变量,但是当我直接访问该变量时,它没有改变。只有当我使用 getter 访问它时,我才能得到预期的重新分配变量。是否在某个不同的范围内创建了第二个变量?这里发生了什么?
var obj = (function () {
var name = "one";
var setName = function(strName) {
name = strName;
};
var getName = function() {
return name;
};
return {
name: name,
setName: setName,
getName: getName
};
}());
obj.setName("two");
alert("obj.name is: " + obj.name); // Prints "one", but why not "two"?
alert("obj.getName() is: " + obj.getName()); // Prints "two" as I'd expect.
我已将上面的示例添加到小提琴中