2017-02-20 13 views
-1

В некоторой части onInit функции контроллера в SAPUI5 приложения есть автогенерируемый такой код:Что означает `bind (this)`?

this.getView().addEventDelegate({ 
      onBeforeFirstShow: function() { 
       // Some codes 
      }.bind(this) 
     }); 

Теперь мой вопрос, что же .bind(this) значит? Что оно делает? Это чистый код JavaScript или он связан с SAPUI5?

+3

Это обычный Javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind – Barmar

+1

это прикрепить функцию «этот» объект, это код – Fr33d0m

+3

Javascript @Mahdi, в следующий раз, пожалуйста, найдите немного, прежде чем спрашивать. – Cerbrus

ответ

2

Он связывает слушатель функции к текущему классу, то при использовании this указателя внутри функций onBeforeFirstShow, то this указателя относится к инкапсулированному классу, и вы можете получить доступ к своим членам.

0

Метод bind() создает новую функцию, которая при вызове имеет это ключевое слово, установленное на предоставленное значение, с заданной последовательностью аргументов, предшествующей любому, предоставленному при вызове новой функции.

Синтаксис

fun.bind (thisArg [, arg1 [, arg2 [...]]])

Ссылка на Mozilla Developer Network

0

Да, это чистый код javascript, вы можете узнать больше о том, что такое связывание и делает here

Метод bind() создает новую функцию, которая при вызове имеет это ключевое слово, установленное на предоставленное значение, с заданной последовательностью аргументов, предшествующей любому, предоставленному при вызове новой функции.

В этом случае то, что она делает в основном связывание текущего this к этой функции, поэтому, когда onBeforeFirstShow вызвана, this внутри этой функции будет являться один передается функции bind.

Вы также можете посмотреть на новый синтаксис функции стрелки в ES6, он автоматически связывает текущий this, так что bind(this) не нужно использовать при их использовании.