Also JavaScript ist eine funktionale Sprache, Klassen werden aus Funktionen definiert und der Funktionsumfang entspricht dem Klassenkonstruktor. Ich verstehe es jetzt, nach einer ziemlich langen Zeit zu lernen, wie man in JavaScript OOP.Self-pushing Objekt Konstruktor
Was ich tun möchte, ist nicht unbedingt möglich, also möchte ich zuerst wissen, ob das eine gute Idee ist oder nicht. Also lassen Sie uns sagen, ich habe ein Array und eine Klasse wie folgt aus:
var Entry = function(name, numbers, address) {
this.name = name;
if(typeof numbers == "string") {
this.numbers = [];
this.numbers.push(numbers);
}
else this.numbers = numbers;
this.address = address;
};
var AddressBook = [];
Und ich hinzufügen Kontakte mit der folgenden Funktion:
function addContact(name, numbers, address) {
AddressBook.push(new Entry(name, numbers, address));
}
Kann ich nicht machen es so, würde new Entry()
setzen selbst in AddressBook
? Wenn ich dies beim Erstellen nicht tun kann, wäre es interessant, es mit einer Methode im Entry
Prototyp auch zu tun. Ich konnte keinen Weg finden, etwas Ähnliches zu tun.
Große Lösung; gibt "new Entry" ohne zugewiesenen variablen Standardcode an (d. h. funktioniert es im strikten Modus)? – gchiconi
Einfacher Pass-by-Referenz. Sie haben das'Adressbuch'-Array bereits in einem äußeren Bereich definiert, übergeben es an den neuen Eintrag (dh 'ab'param), dann, nachdem Sie die Dinge im" Konstruktor "eingestellt haben, fügen Sie sich dem Array hinzu, das übergeben wurde (wieder, es ist durch Bezugnahme gegangen). – rdodev
Es wäre strikt-mode-konform, wenn Sie dies innerhalb des Rumpfes einer Funktion/Klasse tun würden. Wie gerade jetzt ist AddressBook ein globales, was ein No-No ist. – rdodev