传递/路由包含函数原型的对象

我一直在与NodeJS,ExpressJS和AngularJS做一些工作。

我目前正在开发一个graphics绘制项目,需要在后端完成所有的处理,所以前端只显示结果。 这需要我将包含数据函数原型的一些对象路由到前端。 到目前为止,我还没有碰到这最后一部分。 当我从前端调用$http.get ,并且我的路由以res.send(object)响应时,在节点后端的console.log ,对象被打印完成,其原型函数完成,但是在我的浏览器中检索到的对象只打印数据/文本部分,完全抛弃所有的function。

请参阅下面的代码片段以获得要点:

sample backend ExpressJS routes code snippet

 // let's create an object, function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; // a function prototype this.fooBar = function(){ return 'Yes'; } }; // open up a route app.get('/getObject', function(req, res){ var baby = new Person("John", "Doe"); console.log(baby) //this console logs the following, as expected: // Person { firstName: 'John', lastName: 'Doe', fooBar: [Function] } // respond with the entire object res.send(baby) }); 

sample front end AngularJS code snippet

 $http.get('/getObject') .success(function(data){ console.log(data) // THIS, however, only console logs the data, and discards the function // Object {firstName: "John", lastName: "Doe"} }) .error(function(err){ console.log(err) }); 

这让我挠了脑袋,试图弄清楚问题是来自Express / Node,还是来自Angular的结尾,或者两者兼而有之? 我会很感激这方面的一些帮助,因为我真的很喜欢把整个对象(包括原型函数)传递到前端,用于一些最小的操作。 如果这是不可能的,至less指向一个合适的解决方法的方向:-)。 谢谢!

函数不可序列化。 出于这个原因,他们将被跳过,而不是通过HTTP调用发送。

从MDN的文档JSON.stringify()

如果undefined ,则在转换过程中遇到函数或符号时,会将其省略(在对象中find该对象时)或检查为空(在数组中find时)。 JSON.stringify还可以在传递“纯”值(如JSON.stringify(function(){})JSON.stringify(undefined)

相反,只有在客户端传输数据并重新组合你的JS对象。