Подтвердить что ты не робот

JavaScript двойной двоеточие (оператор привязки)

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

::this.handleStuff

и он будет работать так же, как в es5:

this.handleStuff.bind(this)

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

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

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

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

4b9b3361

Ответ 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')