2016-05-13 3 views
4

私は以下のようなES5コードでvarを持っています。変数からオブジェクトを作成するES6

var options = { 
    clientId : clientId 
    keepAlive : keepAlive, 
    clean : clean, 
    reconnectPeriod : reconnectPeriod, 
    will : lastWillMessage 
}; 

私はすべてのプロパティの値を渡したくない場合、私は

let options = {clientId,keepAlive,reconnectPeriod,lastWillMessage}; 

を言うことによってES6にこれを変更することができます。しかし、私はこれをどのように行うのですか?例えば、私はclientIdとkeepAliveを渡したいだけです。残りは、MQTTモジュールによって設定されたデフォルト値を持ちます。では、このオブジェクトの特定のプロパティの値のみを設定するにはどうすればよいですか?

+0

あなたのES6バージョンは 'clean'を省略し、' lastWillMessage'の名前も変更します。 –

+0

きれいにする必要があることをどのように知っていますか?オブジェクト内のプロパティの順序で値を選択しませんか? : – mayooran

+2

MQTTモジュールが不在パラメータのデフォルト値を設定すると、それらを省略することはできませんか?質問を理解しているとは思いませんか? –

答えて

0

は、私は、これは、あなたの質問に答えるわからないんだけど、Object.assignは役立つかもしれない:

MDNから
var options = getOptionsFromMQTT(); 

Object.assign(options, {options, {clientID, keepAlive}); 
// options now uses whatever values are assigned to clientID and keepAlive 

より:

Object.assign()メソッドをコピーするために使用されています1つ以上のソースオブジェクトからターゲットオブジェクトまでの、すべての列挙可能なプロパティの値。ターゲットオブジェクトを返します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

1

あなたは未定義のプロパティ値を持つmqtt.Clientオブジェクトを渡すと、それはデフォルトを使用します。次のように呼ばれる

function createClient(streamBuilder, clientId, keepAlive, reconnectPeriod, clean, will) { 
    let options = {clientId,keepAlive,reconnectPeriod, clean, will}; 
    mqtt.Client(streamBuilder, options); 
} 
すべてのオプションが、clientIdをするためにMQTTのデフォルト値を使用します。例えば

、キープアライブ:あなたはプロパティを使用する予定がないcreateClient(builder, 'a1', 0);場合は、それを省略し、オプションとしてそれを渡すことはありません。

関連する問題