我有一个使用以下代码的app.js:
var addnote = (title,body) => { /* enter code here */ }
module.exports = {addnote};
我可以向该文件添加另一个具有不同参数的addnotes
函数吗?
答案 0 :(得分:1)
JavaScript中的函数重载不像其他编程语言(例如C#和Java)那样存在。
您应该做的是将对象作为参数附加属性,然后将其过滤掉。
您可以从小的“映射函数”中调用不同的函数,只要不大就可以在其中实现逻辑(保持代码清晰)。
function foo(parameters){
var title = parameters.title;
var body = parameters.body;
if(parameters.extraProperty){
// oh we have extraProperty passed in too, run a different function?
bar(title, body, parameters.extraProperty); // ??
}
}
foo({title: 'Title', body: 'Body', extraProperty: 'This is extra...'});
答案 1 :(得分:0)
如果这是您自己的自定义模块,则可以使用函数覆盖的概念,其中每个子类可以有自己的处理方式,也可以有默认的处理方式。
class Parent {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello ${this.name}`);
}
}
class Child1 extends Parent {
constructor(name) {
super(name);
}
greet() {
console.log(`Hey there ${this.name}. This is Child 1`);
}
}
class Child2 extends Parent {
constructor(name) {
super(name);
}
greet() {
console.log(`Hi there ${this.name}. This is Child 2`);
}
}
const o1 = new Child1('Foo')
const o2 = new Child2('Foo')
o1.greet();
o2.greet();
但是,如果您尝试覆盖外部模块中的功能(您无权访问该代码,例如库),我的建议是在其中创建包装器并添加功能。