2009-06-24 11 views

Antwort

4

Es gibt keine Klassen per se in Javascript, nur Methoden, die Objekte erstellen.

Um Ihre Frage direkt zu beantworten, ja und nein. Sie können eine Funktion erstellen, die Ihr Objekt erstellt, aber sobald Sie eine Variable mit demselben Namen haben, wird die Funktion zerstört.

es keinen Unterschied zwischen

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

und

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

Was passiert, wenn Sie eine Variable mit dem Namen bob wie erklärt würde dann geschehen ist:

var bob = new bob(); 

In diesem Fall wäre die Funktion bob c Das Objekt wurde erstellt, und die Funktion Bob wurde durch den neuen variablen Bob ersetzt.


Wenn Sie einen Singleton erstellen möchten, dann können Sie auch einen Verschluss wie folgt verwenden:

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

so var bob = neuer bob(); ist programmatisch falsch? – Rakesh

+0

ist es möglich zu tun. Die Variable bob wird nun ein Objekt sein, das von der Funktion bob erzeugt wurde. Danach ist die Funktion bob nicht mehr zugänglich (für Aufruf oder Instanziierung) –

+0

@rakesh: nur um hinzuzufügen, wann immer du einen Variablennamen erstellst, der genau wie dein Funktionsname ist, musst du wirklich fragen wenn es nötig ist. Es ist üblich, Klassen wie SelectorPanel zu benennen und Instanzen mit dem Namen applicationSelectorPanel oder layoutSelectorPanel (oder nur applicationPanel und layoutPanel) zu erstellen. Die Klasse sollte den Typ (oder die Klasse) des zu erstellenden Objekts definieren. Der Variablenname sollte nur eine sinnvolle Bezeichnung für das Objekt geben. –

0

Sie können den gleichen Namen für die Klasse verwenden und Variable, ja. Starten Sie die Klasse jedoch mit einem Großbuchstaben und behalten Sie die Variablennamen in Kleinbuchstaben. (Also eine Klasse Bob und Variable Bob.)

Javascript ist Groß-und Kleinschreibung, so dass es den Unterschied kennt. Für Sie würden beide nur das Gleiche lesen.

0

Was ist mit jQuery: $('string'), eine Funktion so weit ich kann sagen, und $.ajax, eine Klasse mit einer Methode namens Ajax.

Funktion namens $ und Klasse mit dem Namen $. Ich weiß, dass ich falsch liege, aber so sieht es aus.

Verwandte Themen