以下脚本呈现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);
这里发生的是,_input
来自kendo的ComboBox
库得到了增强,可以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, arguments)
它,因为这样可以防止该方法签名将来发生任何更改
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句