gpt4 book ai didi

javascript - [ meteor 来电] : Loses prototype information

转载 作者:行者123 更新时间:2023-12-03 10:22:11 28 4
gpt4 key购买 nike

我的对象使用 javascript 对象原型(prototype)。

我定义了以下内容:

Game = function(id, userId, tiles){
this._userId = userId;
this._tiles = tiles;
};

Game.prototype = {
get userId() {
return this._userId;
},
get tiles() {
return this._tiles;
}
}

然后,我通过 Meteor 调用在服务器上创建一个游戏并使用返回值:

Meteor.methods({
'fetchGame': function(userId){
var future = new Future();
var url = "http://...";

Meteor.http.get(url, function(err, res){
if (err){
future.return({status: "error", error: err});
} else {
var game = new Game(userId, res.data);
future.return({status: "success", data: game});
}

});
return future.wait();
}

});

奇怪的是,我可以在方法内部调用原型(prototype)函数:

console.log(game.userId)
console.log(game.tiles)

但不是在返回对象时:

   Meteor.call('fetchGame', userId, function(error, result) {
var game = result.data;
console.log(game.userId)
console.log(game.tiles)
});

game.userIdgame.tiles 均返回未定义,尽管该对象已正确返回(具有 _userId 和 _tiles 值)。

就好像在从 future 返回的过程中原型(prototype)函数丢失了。

这到底是什么原因?

最佳答案

传入或传出方法的数据将通过 EJSON 进行序列化。转换会剥离实例的原型(prototype)数据(函数未序列化),从而留下一个简单的对象。没有办法解决这个问题,但这就是它发生的原因。

关于javascript - [ meteor 来电] : Loses prototype information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com