jquery - 尝试理解这个代码块

标签 jquery kendo-ui kendo-combobox

以下脚本呈现 Kendo UI 组合框控件所需的字段背景颜色。虽然这个脚本运行得很好,但我发现很难理解它。

据我所知,它从附加自定义属性或方法开始 所谓的 _input 到 Kendo ui 组合框对象并分配给新变量 _originalFunction 但不是使用这个变量,而是在下一行中再次使用这个链接对象,我真的不知道获取返回结果并将其分配给此 来自监听事件的匿名函数。

总的来说,我并不真正了解这个函数内部发生了什么以及返回值是什么。

有人可以用我能理解的方式解释一下吗?

(function ($) {
    var _originalFunction = kendo.ui.ComboBox.fn._input;
    kendo.ui.ComboBox.fn._input = function (e) {
        var result = _originalFunction.call(this, e);
        if (this.input) {
            this.input.addClass('required');
        }
        return result;
    }
})(jQuery);

最佳答案

这里发生的是,kendo 的 ComboBox 库中的 _input 得到了增强,以向输入元素添加一个 required 类。

如果您在赋值行中使用 _originalFunction 而不是 kendo.ui.ComboBox.fn._input ,那么您仅更改局部变量 的值_originalFunction,不是kendo引用的函数

(function ($) {
    var _originalFunction = kendo.ui.ComboBox.fn._input; // store the original function to a variable so that it can be called later
    kendo.ui.ComboBox.fn._input = function (e) { // overwrite the _input  function
        var result = _originalFunction.call(this, e); // call the original function to apply default functionality
        if (this.input) { // additional functionality is added here
            this.input.addClass('required');
        }
        return result;
    }
})(jQuery);

原始方法接受单个参数,因此当我们调用原始方法时,我们需要使用与预期相同的上下文和参数,这就是 _originalFunction.call(this, e )。但它应该更好地编写为 _originalFunction.apply(this, argument) 因为它可以安全地防止该方法签名的任何 future 更改

关于jquery - 尝试理解这个代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938550/

相关文章:

kendo-ui - 自定义下拉列表作为 Kendo Tree 中的一个项目

javascript - kendo ui 组合框中的 OptGroup

javascript - Php JavaScript刷新某些div

javascript - 从下拉列表中删除重复项

javascript - 如何在我们的 javascript 中触发 Bootstrap

javascript - 隐藏 kendoMultiSelect 的 headerTemplate

javascript - 我如何在 Angular2 中使用 jQuery 插件?

javascript - Kendo Validate - 忽略特定输入

kendo-ui - Kendo UI DataSource 将参数传递给服务的问题

javascript - 如何将自定义属性添加到剑道组合框