2017-06-19 36 views
0

私は典型的なケースで助けが必要ですが、私は.. in ..またはforEachのような汚いものなしでこれをどうやって行うのか分かりません。 私はいくつかのメソッドとboolフィールドを持つオブジェクトを持っている、ログを印刷するかどうかを示します。そのような何か:JS親関数の引数を持つ関数の中で関数を呼び出す方法は?

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を繰り返す代わりにこのメソッドを呼び出します。継承:

.. 
    doSomething: function(){ 
    "do something"; 
    this.log("Sender do something"); 
    } 
.. 

しかし、私は次のように、1つのログで引数の未知のquanityをログに記録する必要がある場合:

this.log("Start at: ", start time,", Value send: ", data); 

ので、質問がある:どのように私には関係なく、同じパラメータで私の関数の内部にconsole.logを呼び出すことはできません彼らのどれが救出されたのでしょうか?

答えて

1

argumentsオブジェクトを使用して、親関数に渡された引数を持つ関数を呼び出します。

log: function(message){ 
    if (this.showLogs) 
    console.log.apply(null,arguments); 
} 

また、あなたが.apply

log: function(message){ 
    if (this.showLogs) 
    console.log(...arguments); 
} 
+0

感謝を呼び出す必要はありませんので、それを作るの引数、とspread operatorを使用することができます!できます! – Teo

1

ログ機能を呼び出す前にxパラメータでメッセージをフォーマットして、書式設定された1つの文字列だけをログに記録するのはなぜですか?

+0

ない私が必要なものが、いいアイデアすぎ/ – Teo

関連する問題