我如何使用`require`来重置类的原型

举个例子来说,这里有一些人为的东西:

var util = require('util'); var Me = require('./me.js'); console.log(util.inspect(Me.prototype.something.toString())); // #1 Me.prototype.name = function() { console.log('different'); }; console.log(util.inspect(Me.prototype.something.toString())); // #2 // re-init prototype var Me = require('./me.js'); console.log(util.inspect(Me.prototype.something.toString())); // #3 

输出:

 'function () {\n console.log(\'original\');\n}' 'function () {\n console.log(\'different\');\n}' 'function () {\n console.log(\'different\');\n}' 

为什么require调用重新初始化我的类的原型?

从Nodejs文档, LINK

模块在第一次加载后被caching。 这意味着(除其他外)每个调用require('foo')将返回完全相同的对象,如果它将parsing为相同的文件。

多次调用require('foo')可能不会导致模块代码被多次执行。 这是一个重要的function。 有了它,“部分完成”的对象可以被返回,从而允许传递依赖被加载,即使它们会导致循环。

如果你想要一个模块多次执行代码,那么导出一个函数,然后调用这个函数。

requirecaching代码,所以当被重新调用时,它不会重新加载它。 由于Me对象仍然在内存中,因此当您再次require时,它不会重新加载。

如果你想这样做,你必须从模块caching中删除Me

看到这个答案如何删除node.js中的“require”之后的模块?