Подвійна двокрапка JavaScript (оператор зв'язування)


129

Як відомо, є пропозиція про ярлик для .bind()функції, тож ви можете написати:

::this.handleStuff

і він працюватиме так у es5:

this.handleStuff.bind(this)

Моє запитання: чи можна буде передавати аргументи таким чином?

Я маю на увазі спосіб написання цього за допомогою вищезгаданого ярлика:

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

Це досить поширена модель у React, тому було б непогано трохи її скоротити.


1
Ви говорите про часткове застосування?
Бен Астон

Здавалося б, гарна ідея для ще однієї специфічної пропозиції.
Грег Гербович

Відповіді:


154

Ні. Оператор прив'язки ( специфікація пропозиції ) має два смаки:

  • Метод вилучення

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

4
(Була певна дискусія щодо підтримки часткової заявки)
Бергі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.