Невозможно переопределить метод плагина jquery

#jquery

#jquery

Вопрос:

Как переопределить метод приведенного ниже примера кода плагина jQuery извне.

     //This is simplified skeleton of infinatescroll plugin.
    (function ($)
    {
        var defaults = {
            prop: 'name'
        };

        var methods = {
            init: function (params)
            {
                //Some code
                return this;
            },
            retrive: function ()
            {
                console.log('Inside Plugin');
                return this;
            }
        };

        $.fn.my_plugin = function ()
        {
            //Some code
            return methods.retrieve.apply(this, arguments);
        };

    })(jQuery);
  

Я пытаюсь переопределить метод ‘retrive’, как показано ниже, но он не работает.

 (function ()
{
    var originalPlugin=$.fn.my_plugin;
    $.fn.my_plugin.retrive = function ()
    {
        console.log('Outsite Plugin');
    };

    originalPlugin.apply(this,arguments);

    $('body').my_plugin();

})();
  

Ответ №1:

можете ли вы позволить себе что-то подобное?

 <script type="text/javascript">
  //This is simplified skeleton of infinatescroll plugin.
    (function ($)
    {

        var defaults = {
            prop: 'name'
        };

        var methods = {
            init: function (params)
            {
                //Some code
                return this;
            },
            retrive: function ()
            {
                console.log('Inside Plugin');
                return this;
            }
        };

        $.fn.getObj = function(){
            return methods;
        };

        $.fn.my_plugin = function ()
        {
            //Some code
            return methods.retrive.apply(this, arguments);
        };


    })(jQuery);

    $(document).ready(function(){
      var originalPlugin=$.fn.my_plugin;
      console.log($.fn.getObj());
      $.fn.getObj().retrive = function(){
          console.log("look I am changed");
      }


      $('body').my_plugin();
    });
</script>