Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 如何扩展JS组件?_Javascript_Jquery - Fatal编程技术网

Javascript 如何扩展JS组件?

Javascript 如何扩展JS组件?,javascript,jquery,Javascript,Jquery,我有这个自定义组件 (function ($) { $.fn.stuff = function (options) { var myStuff = this; myStuff.render_item = function () { // Do something return "default result"; }; myStuff.test = function ()

我有这个自定义组件

(function ($) {   
    $.fn.stuff = function (options) {
        var myStuff = this;

        myStuff.render_item = function () {
           // Do something
            return "default result";
        };

        myStuff.test = function () {
            myStuff.render_item;
        };

        return myStuff;
    };

}(jQuery));
我想“扩展”这个组件并重新声明“render_item”函数,而不直接编辑文件,因为它来自一个库

我怎样才能做到这一点?
谢谢。

您可以像这样使用猴子补丁:

(function($) {
  $.fn.old_stuff = $.fn.stuff;
  $.fn.stuff = function(options) {
    var myStuff = $(this).old_stuff(options);
    myStuff.old_render_item = myStuff.render_item;
    myStuff.render_item = function() {
      // do something
      myStuff.old_render_item();
      // do something else
    };

    return myStuff;
  };

}(jQuery));

一个典型的猴子补丁就可以了。无法访问创建函数的代码,因此必须在创建函数后替换它。