【发布时间】:2015-03-19 17:44:13
【问题描述】:
假设我想编写一个插件,一个修改在不同模块中导出的对象的模块。如何修改原始对象的方法之一?这是我要开始工作的代码。我觉得这里缺少一些基本的东西。
server.js
var Fun = require('./fun2');
var fun = new Fun('honey');
console.log(fun.allTheBest(3));
fun.hiccup();
fun.js
var Fun = function(b) {
this.best = b;
this.allTheBest = function(n) {
var theBest = '';
for (var i = 0; i < n; i++) {
theBest += this.best + ' ';
}
return theBest;
};
};
module.exports = Fun;
fun2.js
var Fun = require('./fun');
var oldAllTheBest = Fun.prototype.allTheBest;
Fun.allTheBest = function (n) {
console.log("I'm starting allTheBest.");
return oldAllTheBest.apply(this, n);
};
Fun.prototype.hiccup = function() {
console.log('Hic!');
};
module.exports = Fun;
这是我得到的输出:
honey honey honey
Hic!
但我预料到了:
I'm starting allTheBest.
honey honey honey
Hic!
【问题讨论】:
标签: javascript node.js requirejs commonjs