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