JavaScript двойной двоеточие (оператор привязки)
Как вы знаете, есть предложение для ярлыка для функции .bind()
, поэтому вы можете написать:
::this.handleStuff
и он будет работать так же, как в es5:
this.handleStuff.bind(this)
Мой вопрос: можно ли передавать аргументы таким образом?
Я имею в виду способ записать это с помощью вышеупомянутого ярлыка:
this.handleStuff.bind(this, 'stuff')
Это довольно распространенный шаблон в React, поэтому было бы неплохо немного его укоротить.
Ответы
Ответ 1
Нет. Оператор bind (предложение спецификации) поставляется в двух вариантах:
-
Удаление метода
::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')