【发布时间】:2014-03-24 02:40:28
【问题描述】:
我有两种自定义类型,Board 和 Tile。两者都需要与EJSON 兼容。但是,Board 包含一个二维数组Tiles:
function Board(size) {
this.tiles = [];
for (var row = 0; row < size; row++) {
this.tiles[row] = [];
for (var col = 0; col < size; col++) {
this.tiles[row][col] = new Tile(row, col);
}
}
/* ... */
}
我的问题是关于Board 上的toJSONValue 方法。我是否需要像这样显式转换嵌套的Tiles:
Board.prototype.toJSONValue = function() {
var value = {};
value.tiles = _.map(this.tiles, function(row) {
return _.map(row, function(tile) {
return tile.toJSONValue();
});
});
return value;
};
或者嵌套的EJSON 类型会自动转换,允许我做这样的事情:
Board.prototype.toJSONValue = function() {
return { tiles: this.tiles };
};
我怀疑第一种方法会导致我的Tile 对象被视为普通对象,而不是使用我为它们定义的EJSON 接口。但第二种方式似乎是对 toJSONValue 方法的无效使用。这让我想知道是否甚至可以使用EJSON 嵌套自定义类型?
【问题讨论】:
标签: javascript meteor