【发布时间】:2014-01-30 16:05:01
【问题描述】:
我使用sails.js,我想知道声明为sails 控制器的var 的范围变量和生命周期。
var user = {};
module.exports = {
index: function (req, res) {
user.connected = false;
return res.view({
user: user
});
},
member: function (req, res) {
user.connected = true;
return res.view('home/index', {
user: user
});
}
};
首先,我尝试仅在member 函数中设置user,但是一旦我访问/member 网页,用户就会被user.connected=true 初始化,当我访问/index 页面时它仍然处于连接状态.所以我将user.connected=false 添加到index 函数中,它可以正常工作。
但我完全不明白。据我所知,user 是HomeController.js 脚本的局部变量,每次加载文件时都应将其销毁,并在每次调用时重置为{}。
其实我在写这个问题的时候,也在想一些事情……
因为我使用module.exports,函数索引和成员被加载到内存中,调用不是在HomeController.js脚本上而是在module.exports全局对象上完成的,因为user是一个对象,他被“指针”引用,它不是副本,而是每个函数内部的引用,所以当我对其进行更改时,它在使用引用的任何地方都发生了变化。它就像一个模块内的全局对象,很奇怪。
我说的对吗?我错过了什么?你对此有更高级的解释吗?谢谢。
【问题讨论】:
标签: javascript node.js controller sails.js