假设我有一个具有 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 代码,同时保留用户输入的内容。
唯一的问题是,这两个函数中的每一个都this
不再指代对象,它现在指的是我认为的泛型内联函数。
解决此问题的最佳解决方案是什么?