2009-06-24 11 views

Répondre

4

Il n'y a pas de classes en soi en javascript, seulement des méthodes qui construisent des objets.

Pour répondre directement à votre question, oui et non. Vous pouvez créer une fonction qui construit votre objet, mais dès que vous avez une variable du même nom, la fonction est détruite.

il n'y a pas de différence entre

function bob() { 
    //code goes here 
    this.name = "bob"; 
} 

et

var bob = function() { 
    //code goes here 
    this.name = "bob"; 
} 

Que se passerait alors si vous déclarez une variable bob nommé comme:

var bob = new bob(); 

Dans ce cas, , la fonction bob serait c alled, l'objet créé, et la fonction bob cognée par la nouvelle variable bob.


Si vous voulez créer un singleton, alors vous pourriez aussi bien utiliser une fermeture comme suit:

var bob = new (function() { 
    //code goes here 
    this.name = "bob"; 
})(); 
+0

donc var bob = new bob(); est erroné par programme? – Rakesh

+0

c'est possible. la variable bob sera maintenant un objet créé par la fonction bob. c'est juste qu'après cela, la fonction bob ne sera plus accessible (pour l'invocation ou l'instanciation) –

+0

@rakesh: juste pour ajouter, chaque fois que vous créez un nom de variable qui est exactement le même que le nom de votre fonction, vous devez vraiment demander vous-même si c'est nécessaire. Il est assez courant de nommer des classes comme SelectorPanel, et de créer des instances nommées applicationSelectorPanel ou layoutSelectorPanel (ou simplement applicationPanel et layoutPanel). La classe devrait définir le type (ou la classe) d'objet à créer. Le nom de la variable devrait juste donner une étiquette significative pour ce qu'est l'objet. –

0

Vous pouvez utiliser le même nom pour la classe et variable, oui. Mais commencez la classe avec une majuscule et gardez les noms de variables en minuscules. (Ainsi, une classe Bob et variable bob.)

Javascript est sensible à la casse donc il connaît la différence. Pour vous, les deux ne feraient que lire la même chose.

0

Qu'en est-il jQuery: $('string'), une fonction autant que je peux dire, et $.ajax, une classe avec une méthode nommée ajax.

Fonction nommée $ et de classe $. Je sais que j'ai tort mais c'est à quoi ça ressemble.

Questions connexes