В JavaScript оператор (оператор привязать )


Как вы знаете, есть предложение по ярлыку для функции .bind(), поэтому вы можете написать:

::this.handleStuff

И это будет работать так же, как в es5:

this.handleStuff.bind(this)

Мой вопрос: Можно ли передать аргументы таким образом?

Я имею в виду способ написания этого с помощью вышеупомянутого ярлыка:

this.handleStuff.bind(this, 'stuff')

Это довольно распространенный паттерн в React, поэтому было бы неплохо немного сократить его.

1 116

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')