Двойное двоеточие JavaScript (оператор bind)

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

::this.handleStuff

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

this.handleStuff.bind(this)

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

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

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

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

1 ответов


нет. The оператор 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')