Javascript 如何使用'requires'重置类原型`
举个例子,这里有一些人为的东西:Javascript 如何使用'requires'重置类原型`,javascript,node.js,Javascript,Node.js,举个例子,这里有一些人为的东西: 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.prototy
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
不调用re init Me类原型?require
缓存代码,因此在重复调用时不会再次重新加载。由于Me
对象仍在内存中,因此当再次需要它时,不会重新加载它
如果要执行此操作,必须从模块缓存中删除Me
请参见Nodejs文档中的回答
模块在第一次加载后被缓存。这意味着
(除其他事项外)每个对require(“foo”)的调用都将得到
返回的对象完全相同,如果它将解析为相同的
文件
多次调用require('foo')可能不会导致模块代码丢失
执行多次。这是一个重要特征。有了它,
可以返回“部分完成”的对象,从而允许传递
即使会导致循环,也要加载依赖项
如果您想让模块多次执行代码,请导出
一个函数,并调用该函数
可能有帮助:也有帮助