【发布时间】:2017-07-11 14:20:29
【问题描述】:
假设我有这个名为 import.js 的示例文件
var self;
function Test(a,b){
this.a = a;
this.b = b;
self = this;
}
Test.prototype.run = function(){
console.log(self.a, self.b)
}
module.exports = Test
当我需要该文件并创建一个新的“对象”时,一切正常,但是当我创建第二个对象时,它们都可以访问自己,只有后一个有效。
var Test = require('./import.js');
var one = new Test(1,2);
one.run()
1 2
var two = new Test(3,4);
two.run()
3 4
one.run()
3 4
有没有办法重新要求文件以创建单独的范围?
把它当作两个不同的变量是行不通的,
var Test1 = require('./import')
var Test2 = require('./import')
var one = new Test1(1,2);
var two = new Test2(3,4);
one.run()
3 4
但是复制文件正是我想要的......
var Test1 = require('./import1');
var Test2 = require('./import2');
var one = new Test1(1,2);
var two = new Test2(3,4);
one.run();
1 2
是的,将self 重写为this 会起作用,但是,这是否可以在不修改或复制 import.js 文件的情况下实现?
【问题讨论】:
标签: javascript node.js scope closures