2 votes

Format des fonctions JavaScript : L'un de ces éléments est-il une méthode ?

Quelle est la différence entre :

pause: function () {
    this.state.gamePaused = true;
},

et

function pause() {
    this.state.gamePaused = true;
}

3voto

Ivan Points 2695

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();

3voto

Benjamin Cox Points 4121

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();

2voto

I Hate Lazy Points 18168

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.

ECMAScript 4.3.27 - 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.

1voto

Aesthete Points 9860
  1. 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()

  2. 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.com

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.

Powered by:

X