Javascript 如何覆盖jquery插件中的js函数并访问私有成员
我想知道是否有人能帮忙 我有一个jQuery插件,代码如下:Javascript 如何覆盖jquery插件中的js函数并访问私有成员,javascript,jquery-plugins,overriding,Javascript,Jquery Plugins,Overriding,我想知道是否有人能帮忙 我有一个jQuery插件,代码如下: .... $.Autocompleter.Select = function (options, input, select, config) { var list; .... return { emptyList: function (){ list && list.empty(); } } } originalAutoC
....
$.Autocompleter.Select = function (options, input, select, config) {
var list;
....
return {
emptyList: function (){
list && list.empty();
}
}
}
originalAutoCompleteSelectFunction = $.Autocompleter.Select;
$.Autocompleter.Select = function (options, input, select, config) {
var ret = originalAutoCompleteSelectFunction.apply(this, arguments);
ret.emptyList = function() {
console.log ("hello");
console.log ("The list=" + list);
};
return ret;
};
我想重写emptyList函数;并编写了以下代码:
....
$.Autocompleter.Select = function (options, input, select, config) {
var list;
....
return {
emptyList: function (){
list && list.empty();
}
}
}
originalAutoCompleteSelectFunction = $.Autocompleter.Select;
$.Autocompleter.Select = function (options, input, select, config) {
var ret = originalAutoCompleteSelectFunction.apply(this, arguments);
ret.emptyList = function() {
console.log ("hello");
console.log ("The list=" + list);
};
return ret;
};
这算是可行的,但是:
Nathan我试过console.log(“list=“+this.list”);但这不起作用,我还尝试创建了一个getter函数:ret.getList=function(){return this.list;}虽然我可以调用getter,但它仍然无法访问'list'变量。这可能是不可能的。也许只是改变插件本身。或者,检查它是否提供回调函数选项,允许您执行任何您尝试执行的操作。我真的不想更改插件源代码-这看起来很糟糕(您希望有人入侵您的代码吗?如果有,您会支持他们吗?(不是说我们获得了对该插件的支持))。我的第一个想法是回电话,但我不认为它是这样写的,因此想覆盖一些functions@ScottE-是的,没错;但对于任何类型的覆盖,无论我是否访问私人成员,都可以这样说。重写一个函数/方法/任何东西大概是因为基本功能没有达到我现在想要的效果?