2017-05-31 9 views
0

に結果を拡張私は、次の(一例)をやってる:割り当てはjqueryのこの

function NameConfig(cfg) { 
    var config = $.extend({ 
     name: 'John', 
     lastName: 'Doe' 
    }, cfg); 
} 

今、「この」にこの設定を割り当てるために、私はこの1つの操作を行います。

for (var key in config) 
    this[key] = config[key]; 

私にできることそれはより良い方法で?

+2

? 2番目のコードサンプルのループは 'config'のクローンになりますが、' this'は何を指していますか? –

+0

'これは' NameConfig'を参照するべきですか、間違っていますか? –

+0

あなたはどこかで '新しいNameConfig'をやっていますか?その場合、 'NameConfig'インスタンスを参照します。それ以外は明示的に設定されていないものは参照しません – atomrc

答えて

0

ここではとします(thisを設定します)。

今私はjQueryのextendメソッドがあなたがしたいことをまったく行うと思います。ドキュメントを引用すると、次のように表示されます。

2つ以上のオブジェクトの内容をまとめて最初のオブジェクトにマージします。

だから、単に

function NameConfig(cfg) { 
    var config = $.extend(this, { 
     name: 'John', 
     lastName: 'Doe' 
    }, cfg); 
} 

を行うことができますし、期待どおりに動作します。

言われているように、簡単に名前空間の問題があるので、thisに直接書き込むことはお勧めできません。 は多分ちょうどトリックを行うだろうthisconfigプロパティを追加すること(もちろん、あなたのユースケースに応じて)

this.config = $.extend(/*...*/)

正確にあなたが達成しようとしている何