如何重载 JavaScript 函数? (更改 Slickgrid 的编辑器)
我正在使用 Slickgrid,我想改变编辑器的行为。我尝试重载其中一个函数,而不是复制和粘贴,但它不起作用。我无法读取 loadValue 函数。
loadValue 定义为(省略了一些代码)
IntegerCellEditor : function(args) {
this.loadValue = function(item) {
defaultValue = item[args.column.field];
$input.val(defaultValue);
$input[0].defaultValue = defaultValue;
$input.select();
};
}
我尝试的是:
function tristateIntegerCellEditor(check_field) {
var f = IntegerCellEditor;
var f_loadValue = f.loadValue;
f.loadValue = function(item) {
f_loadValue(item);
if (check_field) {
if (!item[check_field]) {
$select.disable();
}
}
};
return f;
}
有什么方法可以替代我的函数吗?
I'm using Slickgrid and I would like to change behavior of editor. Instead of copy&paste I tried to overload one of functions but it doesn't work. I cannot read loadValue function.
loadValue is defined as (some code omitted)
IntegerCellEditor : function(args) {
this.loadValue = function(item) {
defaultValue = item[args.column.field];
$input.val(defaultValue);
$input[0].defaultValue = defaultValue;
$input.select();
};
}
What I tried is:
function tristateIntegerCellEditor(check_field) {
var f = IntegerCellEditor;
var f_loadValue = f.loadValue;
f.loadValue = function(item) {
f_loadValue(item);
if (check_field) {
if (!item[check_field]) {
$select.disable();
}
}
};
return f;
}
Is there any way to substitute my function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要
f_loadValue.call(this, item);
否则,将使用其上下文 (
this
) 作为window< 调用旧的
loadValue
get /代码>(默认值)。相关:
You need
f_loadValue.call(this, item);
Otherwise the old
loadValue
get's called with it's context (this
) aswindow
(the default).Related: