这是一段js代码 
function User(properties) {
            for (var i in properties) {
            var p=i;
                (function (which) {
                    which['get' + p] = function () {
                        return properties[p];
                    };
                    which['set' + p] = function (val) {
                        properties[p] = val;
                    };
                })(this);
            }
        }
        var user = new User({ "name": 'Mike', "age": 27 });        user.setname('Nike');
        alert(user.getage());
        alert(user.getname());
为什么alert(user.getage());得到的还是‘Nike’?

解决方案 »

  1. function User(properties) {
      for (var i in properties) {
      var p=i;
      (function (which, p) {
      which['get' + p] = function () {
      return properties[p];
      };
      which['set' + p] = function (val) {
      properties[p] = val;
      };
      })(this, p);
      }
      }
      var user = new User({ "name": 'Mike', "age": 27 });你说的问题不存在帮你修改的是一个闭包问题
      

类似问题 »