onSelect 属性を持つ jquery プラグインがあるとします。ユーザーはそれを関数に設定し、その関数が呼び出されるとthis
、プラグインが適用されるオブジェクトを参照します。すべてが良いです。
このプラグインをラップするプラグインを書きたい場合は、onSelect にコードを挿入するために、次のようにします。
// Get whatever the user put in
var extOnSelect = options['onSelect'];
// delete the onSelect attribute
delete options['onSelect'];
// re-add onSelect as an anonymous function that calls my method and the user's
var options = $.extend({
'onSelect': function() { onSelect(); extOnSelect(); }
}, options);
// call the plugin that I am wrapping / injecting extra onSelect code into
$(this).externalPlugin(options);
次に、ユーザーが入力した内容を保持しながら、独自の onSelect コードを渡します。
唯一の問題は、これら 2 つの関数のそれぞれがthis
オブジェクトを参照しなくなったことです。現在は、一般的なインライン関数を参照していると思います。
これを修正するための最良の解決策は何ですか?