Использование Function.createDelegate

При создании своего приложения (App) для sharePoint на JavaScript в примерах  вы обязательно столкнетесь с Function.createDelegate при регистрации callback`а executeQueryAsync:

context.executeQueryAsync(
    Function.createDelegate(this, _onSucceed),
    Function.createDelegate(this, _onFail)
);

Второй вариант это:

context.executeQueryAsync(_onSucceed, _onFail);

Чем они отличаются?

Все достаточно просто: при использовании Function.createDelegate в вызываемой функции передается контекст из первого аргумента. Т.е. в первом случае при в _onSucceed this будет ссылаться на переданный аргумент, это может быть как вызвавшая ф-ция, тогда нужно первым аргументом передать this, либо любой другой объект, например:

Function.createDelegate(window, _onSucceed) 

или

Function.createDelegate(new myWidget(), _onSucceed)

Во втором случае в _onSucceed this будет ссылаться на себя.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *