NodeJs_2
今天主要学习NodeJs的模块(Module)
创模块
我们创建一个Js文件,命名为mymodule.js
var name;
exports.setName = function(n){
name = n;
};
exports.getName = function(){
return name;
};
我们来使用这个模块,在同一个目录下创建一个test.jsvar m = require('./mymodule');
m.setName('Tony');
console.log(m.getName());
我们来运行一下:node test.js
就可以看到输出: Tony还没完,我们对test.js稍加修改
var m1 = require('./mymodule');
m1.setName('Tony');
var m2 = require('./mymodule');
m2.setName('Nick');
console.log(m1.getName());
输出的结果却是 Nick所以可以得出在一个Js里面无论调用了多少require,实质上指向的同一个地址,所以m2改变了Name的值,m1也所至而变了,这个不难理解
我们可以用创建新对象的方式来处理这问题
将mymodule.js改为
function People(){
var name;
this.setName = function(n){
name = n;
};
this.getName = function(){
return name;
};
};
module.exports = People;
将test.js改为
var People = require('./mymodule');
p = new People();
p.setName('T');
p2 = new People();
p2.setName('B');
console.log(p.getName());
运行的结果是:T
这个很明显创建了两个不同的对象,所以p2值变了,和p没有任何关系,他们分别拥有各自独立的内存空间,互不干涉