覆盖JavaScript中的"私有"功能

Art*_*Art 12 javascript jquery patch jquery-ui

我正在修补一些jQuery的Draggable代码*.

目标是避免修改原始源文件并动态修补其中一个内部函数.

该函数_generatePosition声明如下:

(function($) {

    $.widget("ui.draggable", $.ui.mouse, {
        ...
        _generatePosition: function(event) {
            ...
        }
    }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

有可能实现动态替换吗?


*因此它计算相对于父元素顶部的捕捉网格,而不是相对于被拖动元素的顶部.有关详细信息,请参见此处

Jör*_*rer 11

您可以操纵单个实例:

.draggable().data("draggable")._generatePosition = function() {};
Run Code Online (Sandbox Code Playgroud)

或修改原型,影响所有实例:

$.ui.draggable.prototype._generatePosition = function() {};
Run Code Online (Sandbox Code Playgroud)