gpt4 book ai didi

javascript - 如何调用 javascript 扩展(重写?)函数?

转载 作者:行者123 更新时间:2023-12-03 10:09:36 25 4
gpt4 key购买 nike

我正在尝试扩展 kendo.ui.validator (类似于 jQuery 验证器)我正在重写日期函数,但我应该使用相同的逻辑重载 mvcdate 函数。重写的日期函​​数被调用并正确运行。

我不想复制和粘贴,因此尝试从 mvcdata 覆盖调用覆盖的数据函数,但没有成功。语法是 this.rules.date(input) 我完全是 javascript OOP 部分的初学者,所以我不知道我在做什么,尽管我的语法似乎是合理的。我错过了什么?

(function ($, kendo) {
$.extend(true, kendo.ui.validator, {
rules: {
date: function (input) {
if (input.is("[data-val-date]")) {
var value = input.val();
var check = false;
//var m = moment(value.toString(), "YYYY-MM-DD HH:mm:ss", true);
var m = moment(value.toString(), defaultJavaScriptDateFormat, true);
check = m.isValid();
//var message = "";
//if (!check) {
// message = "Invalid " + m.invalidAt() + ". Please enter a correct date";
//}
//input.attr("data-val-date", message);
return !input.is("[data-val-required]") || check;
}
return true;
},
mvcdate: function (input) {
// Here I try to call the overrided date function to prevent copy and paste, this cause runtime error in chrome:
return this.rules.date(input);
}
},
messages: {
date: function (input) {
return input.attr("data-val-date");
}
}
});
})(jQuery, kendo);

最佳答案

您可以使用直接方法调用来访问您的函数:

mvcdate: function (input) {
return kendo.ui.validator.rules.date.call(this, input);
}

如果kendo.ui.validator是使用new关键字创建的对象的实例,并且您的date函数是您的原型(prototype)的一部分可以使用原型(prototype)来调用它:

mvcdate: function (input) {
return kendo.ui.validator.prototype.rules.date.call(this, input);
}

关于javascript - 如何调用 javascript 扩展(重写?)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30192655/

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