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");
用户名变量未更新。
有什么建议吗?
答案 0 :(得分:3)
看起来您想使用myUser.user来引用更新的用户名值。 但是,如果是这种情况,它就不起作用。 setUsername更新用户名变量,但myUser.user仅指向用户名的初始值,即“”。它不会指向更新的用户名值
要解决问题,您可以更改
user: username,
到
user: function() {
return username;
},
答案 1 :(得分:1)
这可能是使用原型模型的更好案例:
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'
答案 2 :(得分:0)
....
},
user: username,
isCon: isConnected
user: username
强制评估username
,返回“”。这更容易弄清楚发生了什么
var obj = {
log: console.log("printed when init")
}