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')
Другие вопросы по тегам