Наименование: createFunctionDelegate () против createDelegateFunction ()? - PullRequest
1 голос
/ 09 января 2011

Похоже, я не могу выбрать между двумя именами для функции:

createFunctionDelegate() и createDelegateFunction().

Если это имеет значение, целью функции является то, что она создает новую функцию, которая вызывает предоставленную функцию обратного вызова в контексте второго аргумента. Например:

var foo = {
    init: function() {
        setTimeout(App.createFunctionDelegate(this.method, this));
    },

    method: function() {}
}

Когда запускается foo.init(), он устанавливает тайм-аут, который вызывает функцию, которая делегирует выполнение другой функции (this.method), вызываемой в контексте this (foo).

Во всяком случае, я не уверен, каким образом я должен назвать эту функцию. Это важно для меня, потому что я собираюсь использовать его в сотнях мест, и иногда я набираю одно, а иногда и другое. Это должно измениться, я должен выбрать.

Ответы [ 2 ]

3 голосов
/ 09 января 2011

Я бы не использовал ни один из них.То, что вы хотите сделать, будет предложено bind() в ES5.Я бы определил Function.prototype.bind, если он еще не существует, как описано здесь (но внимательно прочитайте описание и возможные недостатки).

Таким образом вы убедитесь, что используете встроенную функциональность, еслиэто поддерживается.

0 голосов
/ 09 января 2011

Как насчет просто создать делегат (this.method, this)?

В качестве примечания, в других местах, где я видел такой метод (и писал их), упорядочение параметров - это контекст, функция, поэтому createDelegate (this, this.method)

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