2016-04-28 3 views
1
function Player(name) 
    {    
     this._name = name;      
     this._id = "Player"+(Player_ID++); 
    }; 

var newPlayer = new Player(newUnitName); 
alert(JSON.stringify(newPlayer)); 

Was ich tun möchte, ist die Anzeige der ID-Wert zu stoppen. Gibt es eine Möglichkeit, die ID variabel zu gestalten? Bitte helfenErstellen Sie transiente JavaScript-Variable in einem Objekt

+2

Mögliche Duplikate von [JSON stringify: Wie bestimmte Felder von der JSON-Zeichenfolge ausgeschlossen werden] (http://StackOverflow.com/questions/4910567/JSON-Stringify-how-to-exclude-certain-fields-from-the -json-string) –

Antwort

2

Jedes Objekt verfügt über eine Methode toJSON(), die aufgerufen wird, wenn das Objekt sollte mit JSON.stringify() serialisiert werden.

Von MDN article auf JSON.stringify():

Wenn ein Objekt hat toJSON eine Eigenschaft Zeichenfolge wird Wert mit dem Namen dessen ist eine Funktion, dann ist die toJSON() Methode JSON individualisiert stringification Verhalten: statt das Objekt wobei serialisierten kehrte der Wert durch die Methode, wenn toJSON() serialisiert werden

genannt

Im folgenden Beispiel wird eine andere Serialisierung-Funktion, die die _id ausschließen:

var Player_ID = 0; 
function Player(name) {    
this._name = name;      
this._id = "Player"+(Player_ID++); 
this.toJSON = function() { 
    return { 
    _name: this._name 
    }; 
}; 
}; 

var newPlayer = new Player('Name 1'); 
console.log(JSON.stringify(newPlayer)); // prints {"_name": 'Name 1'} 

Überprüfen Sie die Arbeits demo.

1

Wenn Sie über diese Eigenschaft nicht aufzählen müssen Sie non-enumerable Eigenschaften verwenden können:

function Player(name) 
 
     {    
 
      this._name = name;      
 
      Object.defineProperty(this, '_id', { 
 
       enumerable: false 
 
      }); 
 
     }; 
 

 
    var newUnitName = "Foo"; 
 
    var newPlayer = new Player(newUnitName); 
 
    alert(JSON.stringify(newPlayer));

+0

Wie können wir auf 'console.log (newPlayer._id)' zugreifen? – JagsSparrow

Verwandte Themen