Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用'requires'重置类原型`_Javascript_Node.js - Fatal编程技术网

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')可能不会导致模块代码丢失 执行多次。这是一个重要特征。有了它, 可以返回“部分完成”的对象,从而允许传递 即使会导致循环,也要加载依赖项

如果您想让模块多次执行代码,请导出 一个函数,并调用该函数

可能有帮助:也有帮助