Как перегрузить функцию JavaScript? (смена редактора Slickgrid) - PullRequest
1 голос
/ 21 июля 2011

Я использую 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;
    }

Есть ли способ заменить мою функцию?

1 Ответ

2 голосов
/ 21 июля 2011

Вам нужно f_loadValue.call(this, item);

В противном случае старый loadValue get вызывается с контекстом (this) как window (по умолчанию).

Связанный:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...