Dans certaines parties de la fonction onInit
d'un contrôleur dans une application SAPUI5
, il existe un code généré automatiquement, comme celui-ci:
this.getView().addEventDelegate({
onBeforeFirstShow: function() {
// Some codes
}.bind(this)
});
Ma question est la suivante: que signifie .bind(this)
? Qu'est ce que ça fait? Est-ce un code JavaScript pur ou est-il lié à SAPUI5?
Il lie l'écouteur de la fonction à la classe actuelle. Lorsque vous utilisez le pointeur this
à l'intérieur de la fonction onBeforeFirstShow
, le pointeur this
fait référence à la classe encapsulée et vous permet d'accéder à ses membres.
Oui, c'est du code javascript pur, vous pouvez en apprendre plus sur ce que bind est et fait ici
La méthode bind () crée une nouvelle fonction qui, lorsqu'elle est appelée, a pour mot clé this la valeur fournie, avec une séquence d'arguments donnée précédant tout ce qui est fourni lors de l'appel de la nouvelle fonction.
Dans ce cas, il lie fondamentalement la this
actuelle à cette fonction. Ainsi, lorsque onBeforeFirstShow
est appelé, la this
de cette fonction sera celle transmise à la fonction bind
.
Vous pouvez également consulter la nouvelle syntaxe de la fonction de flèche dans ES6: elle lie automatiquement la variable this
actuelle, de sorte que bind(this)
n'est pas nécessaire.
La méthode bind()
crée une nouvelle fonction qui, lorsqu'elle est appelée, a pour mot clé this la valeur fournie, avec une séquence d'arguments donnée précédant tout ce qui est fourni lorsque la nouvelle fonction est appelée.
Syntaxe
fun.bind (thisArg [ arg1 [ arg2 [ ...]]])
Référence àRéseau de développeurs Mozilla