function Player(name)
{
this._name = name;
this._id = "Player"+(Player_ID++);
};
var newPlayer = new Player(newUnitName);
alert(JSON.stringify(newPlayer));
我想要做的是停止显示id值。有没有办法使id变量traient。 请帮忙
答案 0 :(得分:2)
每个对象都有一个方法toJSON()
,当使用JSON.stringify()
对象进行序列化时,会调用该方法。
来自MDN article的JSON.stringify():
如果要进行字符串化的对象具有名为
toJSON
的属性,其值为 是一个函数,然后toJSON()
方法自定义JSON 字符串化行为:而不是被序列化的对象, 调用时toJSON()
方法返回的值将被序列化
以下示例创建了一个不同的序列化函数,该函数将排除_id
:
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'}
检查工作demo。
答案 1 :(得分:1)
如果您不需要枚举此属性,则可以使用non-enumerable属性:
function Player(name)
{
this._name = name;
Object.defineProperty(this, '_id', {
enumerable: false
});
};
var newUnitName = "Foo";
var newPlayer = new Player(newUnitName);
alert(JSON.stringify(newPlayer));