Javascript 对象方法不更新变量

Javascript object method does not update variable

本文关键字:更新 变量 方法 对象 Javascript      更新时间:2023-09-26
var myUser = (function () {
    var username = "",
    var isConnected = false;
    return {
        setUsername: function (n) {
            username = n;
        },
        setConn: function (connStatus) {
            isConnected = connStatus;
        },
        user: username,
        isCon: isConnected
    };
}());

当我打电话时

myUser.setUsername("user123");

用户名变量不会更新。

有什么建议吗?

看起来您想使用 myUser.user 来引用更新的用户名值。但是,如果是这种情况,则不起作用。setUsername 更新用户名变量,但 myUser.user 仅指向用户名的初始值,即 "。它不会指向更新的用户名值

要解决此问题,您可以更改

user: username,

user: function() {
    return username;
},

这可能是使用原型模型的更好情况:

function User(prop) {
  prop = prop || {};
  this.username = prop.username || '';
  this.isConnected = prop.isConnected || false;
}
User.prototype = {
  setUser: function(uname) { this.username = uname; },
  setConn: function(status) { this.isConnected = status; }
};
var myUser = new User();
myUser.setUser('user1234');
// OR
var myUser = new User({ username: 'user1234' });
console.log(myUser.username); //=> 'user1234' 
    ....
    },
    user: username,
    isCon: isConnected

user: username强制计算username,返回 "。这更容易弄清楚发生了什么

   var obj = {
        log: console.log("printed when init")
   }