如何重载 JavaScript 函数? (更改 Slickgrid 的编辑器)

发布于 2024-11-26 01:49:46 字数 855 浏览 1 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ま柒月 2024-12-03 01:49:46

您需要 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) as window (the default).

Related:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文