Quelle est la différence entre :
pause: function () {
this.state.gamePaused = true;
},
et
function pause() {
this.state.gamePaused = true;
}
Quelle est la différence entre :
pause: function () {
this.state.gamePaused = true;
},
et
function pause() {
this.state.gamePaused = true;
}
Le premier exemple fait probablement partie d'un objet, ce qui signifie que pause est une fonction d'un objet Javascript, tandis que le second est une fonction autonome.
Je m'attendrais à voir le premier exemple dans quelque chose comme :
var someObject = {
pause: function () {
this.state.gamePaused = true;
},
anotherProperty : "some value"
}
Il est donc utilisé comme :
someObject.pause();
En revanche, le deuxième exemple serait utilisé comme suit :
pause();
Il s'agit dans les deux cas de fonctions (également appelées méthodes), mais elles sont déclarées de deux manières différentes pour être utilisées dans deux contextes différents.
En JS, vous pouvez définir des objets de la manière suivante :
var obj = {
flagVariable: false,
intVariable: 115,
stringVariable: 'hello world',
functionVariable: function() { alert("Hello world!"); }
}
Dans cet exemple, la dernière propriété de l'objet est une fonction. Il s'agit d'une fonction anonyme, c'est-à-dire qu'elle n'est pas elle-même nommée. C'est pourquoi il n'y a pas de nom entre la "fonction" et le "()". Vous y faites donc référence en utilisant la variable à laquelle vous l'avez assignée, comme suit :
foo.functionVariable();
Vous pouvez également le faire circuler et l'exécuter par le nom de la variable à laquelle vous l'affectez :
var callback = foo.functionVariable;
callback();
Vous pouvez également déclarer des fonctions à peu près n'importe où, de sorte que dans la portée globale, vous pouvez dire :
function pause () { alert("Hello world!"); }
Elle définit une fonction nommée, qui peut être exécutée à partir de n'importe quel endroit par son nom :
pause();
D'ailleurs, ce document peut lui aussi être distribué :
var callback = pause;
callback();
ECMAScript définit une méthode comme une fonction qui est la valeur d'une propriété. Ainsi, lorsque vous placez une fonction sur un objet, nous l'appelons la méthode de cet objet.
Pour répondre à la question, la première est donc une méthode.
qui est la valeur d'une propriété.
NOTE Lorsqu'une fonction est appelée en tant que méthode d'un objet, l'objet est transmis à la fonction en tant que
this
valeur.
Attaché à un objet, il s'agit toujours d'un función mais appelée méthode. Elle est attachée à l'objet et elle est this
fait référence à cet objet. Appelez-le ainsi : obj.pause()
Définie dans l'espace de noms global, cette fonction peut être appelée de n'importe où et est attachée à l'élément window
objet. this
se réfère à la window
tout en étant dans la fonction. Appelez-le simplement ainsi : pause()
Notez que les deux fonctions sont vraiment bien que cette dernière soit rarement désignée comme telle.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.