Что означает: (двойной двоеточие) в JavaScript?

У меня есть код JSX в таком приложении:

...
 _renderSignOutLink() {
    if (!this.props.currentUser) {
      return false;
    }

    return (
      <a href="#" onClick={::this._handleSignOutClick}><i className="fa fa-sign-out"/> Sign out</a>
    );
...

Что означает двойная двоеточие, ::, перед вызовом функции?

Ответы

Ответ 1

:: - предлагаемый оператор привязки, который desugars в связанную функцию:

::foo.bar
// becomes
foo.bar.bind(foo)

Это полезно в React (и любых других обработчиках событий), потому что это означает, что this будет иметь ожидаемое значение (экземпляр класса), когда обработчик события будет вызван позже.