Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写javascript中的深层函数_Javascript_Jquery_Overriding - Fatal编程技术网

重写javascript中的深层函数

重写javascript中的深层函数,javascript,jquery,overriding,Javascript,Jquery,Overriding,我对javascript非常陌生,但我已经承担了一项任务,以更好地理解它。但是,我在使用jQuery时遇到了一些问题。下面的javascript是第三方jQuery插件中的代码,我希望能够在这里重写funFunction()函数来实现我自己的实现。这可能吗?如果可能,我怎么做?我已经进行了大量的搜索,并尝试了多种方法来覆盖函数,例如: jQuery.blah.funFunction = function() { alert("like this"); }; 主要代码: (function($)

我对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表,而WP表又使用这个插件。我不想更改这个插件的核心代码,因为如果有任何更新,我必须确保我的前任确切地知道我做了什么


我已经编写了很长一段时间了,我觉得我应该能够轻松地学习javascript,同时也可以学习jQuery。我确切地知道我需要做什么,只是不知道如何重写这个函数。

jQuery的好处是,如果插件不能完全满足您的需要,您可以

  • 寻找另一个做同样事情的插件
  • 抓取插件,如果是GPL,就修复它
我的经验是,大多数插件都很好,但它们不是由神编写的,所以有时候会出现问题,或者有时候你需要的东西恰好与设计师的预期不符


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

不管怎样,谁会关心次要库的更新?只要所使用的版本符合需要,并且没有适用的bug,升级就没有好处

在任何情况下,我都不建议以如下字符串形式检索可访问的父函数:
functionsstring=”“+functionName
编辑需要编辑的内容,然后重新生成函数:
functionName=eval(“+functionsstring+”)
。但这样做是可能的

当您将函数转换为字符串时,不同的浏览器返回的结果略有不同,但它们都是该确切函数的有效声明,所以您应该能够通过正则表达式消除差异


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

只是想一想:如果你想熟悉Javascript,jQuery不是一种方式。先试试纯Javascript。你不能覆盖它。。。它是一个局部变量,仅在定义它的范围内(以及在任何闭包中)可用。我将投反对票——如果您熟悉一般编程,如果您保持概念清晰,您应该能够同时学习Javascript和jQuery。请记住,jQuery是Javascript,它利用语言的灵活性提供工具和功能。我的投票是先了解DOM和JS几天,然后您可以使用jQuery(或Ext core)了解它可以帮助您解决哪些问题。嘿,我很感谢您的评论,我将在结尾添加更多的信息,说明为什么我不想重写插件。@PintSizedCat-无论您的偏好如何…不幸的是,在这种情况下,您都不能编辑您想要编辑的内容,而不这样做:a)在插件内或b)另一个插件,可能是您自己的。好的,我会让它打开,以防有人找到一些奇妙的方法;)您对$.extend的呼叫没有任何作用。。。它是?