0

所以,我试图覆盖一个函数,但在该方法中包含它的原始方法jQuery.extend()

    var origFunction = $.fn.pluginFunction;
    $.fn.extend({
        pluginFunction: function() {
               // `origFunction` is available via Closure, 
               // now how can I declare the $.extended function here
               // to preserve the original methods and then override
               // only the following object?

                   myObject = {
                        'key1' : 'val1',
                        'key2' : 'val2',
                   }
        }
    });
4

3 回答 3

2

使用apply()调用原始文件。

origFunction.apply(this,arguments);

但如果myObject是 内部的局部变量origFunction,则不会有什么不同。

于 2012-10-04T17:44:54.537 回答
2

修改后的代码:调用origFunction使用 apply. 只有当它不是方法的私有变量时才更改 myObject(它应该可以从覆盖方法全局访问)。

var origFunction = $.fn.pluginFunction;
    $.fn.extend({
        pluginFunction: function() {
               origFunction.apply(this, arguments); // 
               // `origFunction` is available via Closure, 
               // now how can I declare the $.extended function here
               // to preserve the original methods and then override
               // only the following object?

                   myObject = {
                        'key1' : 'val1',
                        'key2' : 'val2',
                   }
        }
    });
于 2012-10-04T17:45:16.207 回答
0

用户申请()

apply 调用带有一组参数的函数。它不是 jQuery 的一部分,而是核心 Javascript 的一部分。但是,在 jQuery 文档中提到了它:

http://docs.jquery.com/Types#Context.2C_Call_and_Apply

句法:

somefunction.apply(thisobj, argsarray)

上面调用了函数 somefunction,在函数范围内将 this 设置为 thisobj,并将 argsarray 中的参数作为参数传递给函数。

于 2012-10-04T17:59:47.647 回答