goog.bind
- решение общего назначения. Например:
goog.bind(this.someFunction, this);
goog.bind(this.someFunction, this, arg1);
goog.bind(this.someFunction, this, arg1, arg2);
Фреймворк, как правило, спроектирован так, что этого можно избежать, поэтому обычно не требуется явно вызывать goog.bind
.
Например, goog.events.EventHandler
автоматически связывает обратные вызовы с обработчиком, который вы установили в его конструкторе.
var handler = new goog.events.EventHandler(this);
handler.listen(something, 'something', this.someFunction); // no need to bind
Функции массива также поддерживают аргумент обработчика.
goog.array.forEach(elements, this.someFunction, this);
var items = goog.array.map(elements, this.someFunction, this);
И так далее. В большинстве частей фреймворка это довольно легко сделать, он очень хорошо спроектирован для «псевдоклассического» наследования.
Подробнее см. http://www.bolinfest.com/javascript/inheritance.php