gpt4 book ai didi

jquery - 尝试理解这个代码块

转载 作者:行者123 更新时间:2023-12-01 04:52:38 24 4
gpt4 key购买 nike

以下脚本呈现 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com