我需要有关典型案例的帮助,但我不知道如何做到这一点,而不是像.. in ..或forEach这样的脏东西。 所以,我有一个对象有一些方法和bool字段显示,需要打印日志或不。这样的事情:
var sender = {
showLogs: true,
doSomething: function(){
"do something";
if (this.showLogs)
console.log("Sender do something")
}
}
显然,会有很多相同的代码,重复每个方法:
if(this.showLogs)
console.log("Sender do x");
最佳做法是将此代码移至新方法中:
..
log: function(message){
if (this.showLogs)
console.log(message)
}
..
并调用此方法而不是重复if ... passage:
..
doSomething: function(){
"do something";
this.log("Sender do something");
}
..
但是如果我需要在一个日志中记录未知数量的参数,例如:
this.log("Start at: ", start time,", Value send: ", data);
所以,问题是:我如何使用相同的参数调用我的函数中的console.log,无论它们被发送了多少?
答案 0 :(得分:1)
为什么在调用日志函数之前不用x参数格式化消息,以便只记录一个格式化的字符串?
答案 1 :(得分:1)
使用Function#apply和arguments对象来调用带有传递给父函数的参数的函数。
log: function(message){
if (this.showLogs)
console.log.apply(null,arguments);
}
您还可以使用带有参数的spread operator,这样您就不必致电.apply
log: function(message){
if (this.showLogs)
console.log(...arguments);
}