Я пишу библиотеку с открытым исходным кодом javascript, и я сильно использую метод .bind()
, потому что у меня есть идея, что объектно-ориентированный код выглядит более понятным тогда. (спорный, хотя)
Пример
A1:
var that = this;
setTimeout(function () {
that.method();
}, 0);
против
B1
setTimeout(this.method.bind(this), 0);
Или более практичная часть кода
A2:
remoteDataSource.getData(function (a, b, c, d) {
obj.dataGetter(a, b, c, d);
})
vs B2:
remoteDataSource.getData(obj/* or prototype */.dataGetter.bind(obj));
Я использую non-native bind
для старых браузеров, и все прошло идеально, пока я не открыл тест jsperf для привязки.
Похоже, что код с использованием bind
в 100 раз медленнее. Теперь, прежде чем переписывать всю мою библиотеку, у меня есть вопрос для тех, кто знаком с движками javascript:
Есть ли вероятность того, что, будучи новой функцией, bind
будет оптимизирована
скоро, или нет шансов из-за ограничений архитектуры JavaScript?