2

通常、defaultOptions でオプションを拡張すると、新しいオブジェクトが作成されますが、オプション オブジェクトを再利用したいと思います。以下のコードを参照してください。

私は基本的に次のことをしたい:

var defaultOptions = {'width': '10px', 'size': '10px'};

var options = {'width': '300px', 'name': 'sam'};

// I want to re-use the same options variable as target for extend
var optionsAfterExtend = $.extend(options, defaultOptions, options);

// should return true
alert(options.width == '300px');
alert(optionsAfterExtend == '300px');
alert(options.size == '10px');
alert(optionsAfterExtend == options);

// Because I may add extra info to the options object which the client using my plugin can use / re-use
optionsAfterExtend.data = 'sam';

// So now optionsAfterExtend.data and options.data should both equal 'sam'

長い間検索してjquery拡張ドキュメントを読んでみましたが、適切な方法が見つかりませんでした。私がこれを欲しがるのは愚かなことですか?だとしても、どうすればうまくいくのか、今でも気になるところです。

4

1 に答える 1

3

このextendメソッドは、最初のパラメーターとして送信したオブジェクトにすべてのプロパティをコピーしました。他のオブジェクトを組み合わせた新しいオブジェクトを作成するには、最初のパラメーターとして空のオブジェクトを指定します。

var optionsAfterExtend = $.extend({}, defaultOptions, options);

optionsオブジェクトも変更し、オブジェクトを同じにしたい場合は、新しいオブジェクトを作成し、それを拡張して元に戻しoptionsます。

var o = $.extend({}, defaultOptions, options);
var optionsAfterExtend = $.extend(options, o);
于 2013-03-19T13:53:39.287 に答える