覆盖javascript中的深层函数

时间:2010-04-08 21:42:24

标签: javascript jquery override

我对javascript很新,但已承担了一项任务,以便更好地使用它。但是,我遇到了jQuery的一些问题。以下javascript是第三方jQuery插件中的代码,我希望能够覆盖funFunction()函数来执行我自己的实现。这是可能的,如果是的话,我该怎么做?我一直在做相当多的搜索,并尝试了一些使用以下方法覆盖函数的方法:

jQuery.blah.funFunction = function() { alert("like this"); };

主要代码:

(function($) { 
    $.extend( {
        blah: new function() { 
          this.construct =  = function(settings) {
              //Construct... stuff
          }; 
          function funFunction() {
            //Function I want to override
          } 
        } 
    });
})(jQuery);

对于那些对此感兴趣的人,我试图覆盖tablesorter,以便用户对列进行排序的唯一方法是按升序排列。

编辑:

有一个wordpress安装使用WP-Table-Reloaded,后者又使用这个插件。我不想更改这个插件的核心代码,因为如果有更新,我就必须确保我的前任确切知道我做了什么。

我已经编程了很长时间,觉得我应该能够轻松地获取javascript,同时还要查看jQuery。我确切地知道我需要做什么,而不是我如何覆盖这个功能。

2 个答案:

答案 0 :(得分:2)

关于jQuery的好处是,如果插件不能完全按照你的意愿行事,你可以

  • 寻找另一个做同样事情的插件;
  • 抓住插件,如果是GPL,只需修复它

我的经验是,大多数插件都非常好,但它们不是由神灵编写的,所以有时会出现问题,或者有时候你需要的只是设计师所期望的那样。

现在:你真的应该认真考虑一下你想做什么以及你的需求是什么,作为一个新手,对你做“正确的做事方式”有什么样的假设'带来参加聚会。每个编程环境都有自己的个性,通常几乎是一个文化实体。事情可能看起来很奇怪,或者很糟糕,或者丑陋,但作为一个局外人,你应该暂停判断,直到你真正习惯了所有的习语。

答案 1 :(得分:0)

谁还关心小型图书馆的更新?只要使用的版本执行所需的操作并且没有适用的错误,升级就没有收获。

在任何情况下,我绝不会建议将可访问的父函数检索为如下字符串:functionAsString=""+functionName编辑需要编辑的内容,然后重新生成函数:functionName=eval("("+functionAsString+")")。但是有可能这样做。

当您将函数转换为字符串时,不同的浏览器会返回略有不同的结果,但它们都是针对该确切函数的有效声明,因此您应该能够正确地解决这些差异。

或者,您可以使用ajax调用检索脚本文件,然后执行与上面相同的操作。我仍然不会推荐它。