JavaScript двойное двоеточие (оператор связывания)
Как известно, есть предложение по ярлыку для .bind()
функция, так что вы можете написать:
::this.handleStuff
и так будет работать в es5:
this.handleStuff.bind(this)
У меня вопрос: можно ли будет так рассуждать?
Я имею в виду способ написания этого с вышеупомянутым ярлыком:
this.handleStuff.bind(this, 'stuff')
Это довольно распространенный паттерн в React, поэтому было бы неплохо немного его сократить.
1 ответ
Решение
Нет. Оператор связывания ( предложение спецификации) поставляется в двух вариантах:
Метод извлечения
::obj.method ≡ obj.method.bind(obj)
вызовы "виртуального метода"
obj::function ≡ function.bind(obj) obj::function(…) ≡ function.call(obj, …)
Ни один из них не имеет частичного применения. Для того, что вы хотите, вы должны использовать функцию стрелки:
(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')