2012-07-13 8 views
1

En javascript, quelle est la meilleure façon de déclarer des objets?Quelle est la meilleure façon de déclarer des objets?

Celui

var Class = function(){}; 

Class.prototype.print = function(){ 
    console.log('hello world'); 
}; 

ou celui

var Class_2 = {}; 

Class_2.print = function(){ 
    console.log('hello world'); 
}; 

auquel cas je devrais utiliser une méthode sur une autre?

+1

Ils sont très différents: quel est le résultat souhaité? –

+0

@pst^D'accord .. – Jay

+0

Dans ce cas, je devrais utiliser une méthode plutôt qu'une autre? – gaggina

Répondre

4

Cela dépend si vous voulez créer une classe ou d'un objet unique.

Le modèle JavaScript OOP est basé sur des prototypes, pas sur les classes. C'est pourquoi vous pouvez ajouter des propriétés et des méthodes non seulement à une classe (ce qui signifie que toutes les «instances» de cette classe auront ces propriétés ou cette méthode), mais aussi à un objet particulier. Donc vous pourriez avoir des instances A et B de classe C, et vous pourriez ajouter un comportement spécial à A que seul A a, et B n'en a pas ... Tout cela semble étrange, car JavaScript n'a pas réellement Des classes. Il n'a que des prototypes, et vous pouvez plus ou moins "simuler" des classes en utilisant ce que vous pouvez faire avec des prototypes. En JavaScript quand un objet A est une "instance" d'un autre objet B, vous dites en fait que B est le prototype de A. Cela signifie que vous allez définir A en fonction des différences qu'il a sur B.

Dans le monde réel, cela signifierait que votre première rencontre avec un mouton était avec Dolly, un gros mouton blanc et poilu. Donc vous dites Dolly.color = blanc; Dolly.hair = a_lot; Dolly.size = gros; Alors quelqu'un vous demande quelle est la couleur d'un mouton, et puisque vous ne connaissez que Dolly, vous pensez que tous les moutons sont exactement comme des dolly et vous répondez blanc ... Alors vous avez rencontré un autre mouton, Pete, mais celui-ci est noir et hary. Donc, vous dites que Pete est exactement comme Dolly, sauf que Pete est noir .... Donc vous dire que Pete.Prototype = Dolly (Cela signifie que c'est exactement comme Dolly), mais alors vous allez écraser la couleur et dis que c'est différent: Pete.color = black; Pour "simuler" des classes en JavaScript, vous définissez un Mouton "Idéal" appelé Mouton qui possède toutes les qualités "par défaut" de tous les moutons, et l'utilise comme prototype pour tous les autres moutons.

Il existe plusieurs façons de define classes in JavaScript. Mais vous devez toujours vous rappeler que vous ne définissez pas des classes, mais des prototypes et des classes de simulation. Vous feriez mieux d'essayer learning about prototypes, si vous voulez vraiment comprendre ce qui se passe, et comment en tirer le meilleur parti.

+0

merci, je vais jeter un oeil sur ceux qui lisent :) – gaggina

1

cela dépend de ce que sont vos objectifs.

le premier peut être instancié

var obj = new Class('...'); 

et le second peut être utilisé pour tirer profit de l'espace de noms

Questions connexes