101 votes

Objet, classe et fonction

Je me demandais : quelle est la différence entre les objets, les classes et les fonctions JavaScript ? Ai-je raison de penser que les classes et les fonctions sont des types d'objets ?

Et qu'est-ce qui distingue une classe d'une fonction ? Ou bien s'agit-il vraiment de la même chose, le terme changeant simplement en fonction de l'utilisation qui en est faite ?

function func() { alert('foo'); } // a function
func(); // call the function - alerts 'foo'
var func2 = function () { alert('hello'); } // acts the same way as 'func' surely?
func2(); // alerts 'hello'

var Class = function() { alert('bar'); }; // a class
var c = new Class(); // an istance of a class - alerts 'bar'

Bien sûr, les classes ont des méthodes et des propriétés et peuvent être instanciées - mais je pourrais faire de même avec n'importe quelle vieille fonction - ou pas ?

3voto

Prasad Honrao Points 80

Object est le type de base en JavaScript, c'est-à-dire que tous les types de données définis par l'utilisateur héritent d'Object d'une manière ou d'une autre. Ainsi, si vous définissez une fonction ou une classe [notez qu'à l'heure actuelle, JS ne prend pas en charge la construction de classe, mais que cette dernière est proposée dans la version 6 d'ECMAScript], elle héritera implicitement du type Object.

Les classes sont réellement utilisées pour encapsuler des fonctions et des propriétés logiques dans un type/entité et vous pouvez les "créer" à l'aide de la syntaxe des constructeurs. Ainsi, si vous définissez une classe "Client", vous pouvez l'instancier plusieurs fois et chaque instance/objet peut avoir des valeurs différentes. Ils peuvent même partager les valeurs si vous définissez une valeur au niveau de la classe en utilisant le prototype.

Étant donné que JS ne prend pas en charge la construction de classes pour le moment, les fonctions peuvent réellement servir de méthode individuelle et de conteneur pour d'autres fonctions ou types.

J'espère qu'avec l'ECMAScript 6, nous aurons une séparation claire entre les deux.

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