2010-09-22 9 views
1

J'hésite à utiliser n'importe quel tutoriel parce que je sais comment ces tutoriels peuvent finir par être, vous enseigner de mauvaises façons de faire les choses. Je veux installer une classe en Javascript, afin que je puisse faire justeComment créer une classe OOP en Javascript

var vehicle = new Vehicle(el); 
var model = vehicle->getModel(); 

Ces fonctions lirais le code HTML et d'obtenir et de gérer les éléments sur la page. Je suis actuellement faire une configuration comme ...

var model = function() { 
return { 
    getName: function() { 

    }, 
    getVehicleCount: function() { 

    }, 
    incrementCount: function (id) { 
    console.log(x); 
    } 
} 
}(); 

Je suis toujours des cours d'apprentissage en Javascript ... Je voudrais être en mesure de passer la classe un noeud pour l'élément toutes les méthodes seront utiliser, mais je ne suis pas sûr que je le fais bien ...

+1

Il ya des classes dans js? – delnan

+1

Delnan fait un point important. Javascript est un langage OO sans classe. –

Répondre

5

Il n'y a pas de classe en JavaScript, mais tout ce qui est en JavaScript est un objet.

Pour créer un nouvel objet, vous définissez une fonction qui utilise le this mot-clé dans ce (une « fonction constructeur »), puis l'appeler avec l'opérateur new:

function Foo (id) { // By convention, constructor functions start with a capital letter 
    this.id = id; 
} 

var foo1 = new Foo(1); 
var foo2 = new Foo(2); 

Cependant, ces objets n'ont pas méthodes Pour ajouter des méthodes, vous devez définir un objet prototype sur leur fonction constructeur:

Foo.prototype = { 
    getId: function() { 
     return this.id; 
    } 
} 

Cette nouvelle fonction getId sera utilisable par tous les Foo objets. Cependant, comme indiqué, il n'y a pas de classes dans JavaScript et en tant que tel, il y a d'autres constructions que vous utiliserez pour produire des résultats différents.

Je recommande vivement les vidéos de Douglas Crockford dans lesquelles il explique une grande partie de la nature OO javascript. Les pourparlers se trouvent ici:

http://developer.yahoo.com/yui/theater/

Douglas Crockford - Le langage de programmation JavaScript

Douglas Crockford - Advanced JavaScript

Ceux-ci vous donnera une compréhension de base de la structure du javascript et devrait aider la transition de la programmation classique à la programmation fonctionnelle.

0

Il n'y a rien comme des classes en JavaScript. L'héritage JavaScripts fonctionne avec des prototypes. Vous pouvez jeter un oeil à base2, qui imite le comportement de classe en JavaScript.

1

Bien qu'il n'y ait aucune classe dans JavaScript, vous pouvez créer des fonctions de constructeur. Une fonction de constructeur fonctionne en liant des méthodes à un prototype d'objet. Il y a plusieurs façons de le faire, chacune avec des avantages et des inconvénients. Personnellement, je préfère la façon la plus directe, qui fonctionne en ajoutant des méthodes à "this":

var Constructor = function() { 

    //object properties can be declared directly 
    this.property = "value"; 

    //to add a method simply use dot notation to assign an anonymous function to an object 
    //property 
    this.method = function() { 
    //some code 
    } 

    //you can even add private functions here. This function will only be visible to this object methods 
    function private() { 
    //some code 
    } 
    //use return this at the end to allow chaining like in var object = new Constructor().method(); 
    return this; 

} 
Questions connexes