我是nodejs的新手。
我有这个脚本:book.js
var page = 0;
exports.setPageCount = function (count) {
page = count;
}
exports.getPageCount = function(){
return page;
}
以及以下脚本:scripts.js
var bookA = require('./book');
var bookB = require('./book');
bookA.setPageCount(10);
bookB.setPageCount(20);
console.log("Book A Pages : " + bookA.getPageCount());
console.log("Book B Pages : " + bookB.getPageCount());
我得到的输出:
Book A Pages : 20
Book B Pages : 20
所以,我修改了脚本:
module.exports = function(){
var page = 0;
setPageCount : function(count){
page = count;
},
getPageCount : function(){
return page;
}
}
我期待以下输出:
Book A Pages : 10
Book B Pages : 20
但仍然得到了原始结果,有没有人知道我在哪里犯了错误?
答案 0 :(得分:2)
有几种方法可以解决这个问题,你的最后一次尝试几乎是有效的 - 修改你的模块是这样的:
module.exports = function() {
var pages = 0;
return {
getPageCount: function() {
return pages;
},
setPageCount: function(p) {
pages = p;
}
}
}
和你的用法如下:
var bookFactory = require('./book');
var bookA = bookFactory();
var bookB = bookFactory();
bookA.setPageCount(10);
bookB.setPageCount(20);
console.log("Book A Pages : " + bookA.getPageCount());
console.log("Book B Pages : " + bookB.getPageCount());