2016-07-05 11 views
0

申し訳ありませんが、正確に何が検索されるかはわかりませんでした。私はnodejsを使ったWebchatサーバーを持っていますが、私はプレーヤークラスを作っていますが、プレーヤークラスをすべてのユーザーを含むプレーヤー配列にプッシュし、player.idなどのプレーヤークラスを更新すると、 。これをどうすれば解決できますか?ユーザーアレイをユーザーに更新された状態に保つ方法

var User = require('./User.js'); 



var wsID = 1; // should be random just for this example 

var USERS = {}; 

    USERS[wsID] = { 
    socket: "", 
    clientDetails: { 
     username: "", 
     isGuest: "" 
    } 
    } 
user = new User(); 
user.setUsername("test"); 
USERS[wsID].username = user.getUsername; // works perfectly 
user.setUsername("updatedit"); // fails to update array 
console.log(USERS[wsID].username); // returns test and not updatedit... 

クラスファイル:

var wsId, 
     socket, 
    username, 
isGuest; 

function User() { 

} 

    User.prototype.getUsername = function(){ 
    return this.username; 
    } 

    User.prototype.setUsername = function(name){ 
    this.username = name; 
    } 
module.exports = User; 

答えて

0

あなたがこれを行うときは、参照が不足している:

USERS[wsID].username = user.getUsername; 

あなたが別のオブジェクトにプロパティの現在の値をクローンしているためです。これを解決する1つの方法は、コードを変更して、インスタンス "user"を "clientDetails"内に保持するようにして、更新され続けるようにします。

user = new User(); 
user.setUsername("test"); 
USERS[wsID].clientDetails = user; // carry the entire instance 
user.setUsername("updatedit"); 
console.log(USERS[wsID].clientDetails.username); // should return "updatedit" 
関連する問題