Python-Like "Classes" en Javascript

Je me demandais comment on allait faire des "classes" semblables à celles de Python en Javascript. Prenez les cours et les fonctions de Python répertoriés ici:

class one: def foo(bar): # some code 

La fonction "foo" serait appelée avec one.foo(bar) .
Quel serait l'équivalent de JS? Je soupçonne que ce serait quelque chose comme ça:

 var one = { foo: function(bar) { // JavaScript } }; 

Merci.

La façon native de créer des cours en Javascript est de définir d'abord le constructeur:

 function MyClass() { } 

Et un prototype:

 MyClass.prototype = { property: 1, foo: function(bar) { } }; 

Ensuite, vous pouvez créer une instance de MyClass:

 var object = new MyClass; object.foo(); 

Ajouter des méthodes statiques:

 MyClass.staticMethod = function() {}; MyClass.staticMethod(); 

Étendre MyClass:

 function SubClass() { } SubClass.prototype = new MyClass; SubClass.prototype.bar = function() { }; var object = new SubClass; object.foo(); object.bar(); 

Classy est une bibliothèque JavaScript qui essaie d'apporter des cours de type Python à JavaScript.

Jetez un oeil à ce lien . Il existe différentes façons de faire des programmes OO en version Javascript. Les détails sont trop expliqués ici.

Si vous êtes sérieux au sujet de la programmation Javascript, vous devriez lire ce livre .

Si vous voulez faire une très forte programmation OO, je recommanderais de regarder Coffee Script .

Javascript n'a pas vraiment de cours. Ce qu'il est, c'est un prototype – une instance d'un objet utilisé comme modèle pour de nouveaux objets.

La façon dont vous avez créé votre objet est d'utiliser un constructeur littéral. Il est succinct, mais il souffre qu'il ne peut pas être ajouté ou utiliser des déclarations compliquées dans sa construction.

Une autre façon est comme suit:

 function SomeClass(value) { if (value < 0) { this.field = -1; } else { this.field = value; } } 

Et une nouvelle instance est créée comme ceci:

 var obj = new SomeClass(15); 

Cela vous permet d'utiliser une logique conditionnelle, des boucles et d'autres techniques de programmation plus complexes dans la construction de votre objet. Cependant, nous ne pouvons qu'ajouter des champs d'instance et non des champs 'classe'. Vous ajoutez des champs de classe, en modifiant le prototype de votre créateur d'objets.

 MyClass.prototype.fieldSquared = function () { return this.field * this.field; } 

Cela donne un aperçu plus complet de la création d'objets et des prototypes en Javascript.