0
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");

ユーザー名変数は更新されません。

何かアドバイス?

4

3 に答える 3

3

更新されたユーザー名の値を参照するために myUser.user を使用したいようです。ただし、その場合は機能しません。setUsername はユーザー名変数を更新しますが、myUser.user はユーザー名の初期値である "" のみを指します。更新されたユーザー名の値を指しません

問題を解決するには、変更できます

user: username,

user: function() {
    return username;
},
于 2012-08-13T02:20:59.377 に答える
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' 
于 2012-08-13T02:17:29.680 に答える
0
    ....
    },
    user: username,
    isCon: isConnected

user: usernameを強制的usernameに評価し、"" を返します。これは何が起こったのかを理解するのがより簡単です

   var obj = {
        log: console.log("printed when init")
   }
于 2012-08-13T02:23:41.060 に答える