Wahrscheinlich möchten Sie einen Typ mit Hilfe des Faltmusters erstellen:
// Here is the constructor section.
var myType = function () {
var N = {}, // Enclosed (private) members are here.
X = this; // Exposed (public) members are here.
(function ENCLOSED_FIELDS() {
N.toggle = false;
N.text = '';
}());
(function EXPOSED_FIELDS() {
X.count = 0;
X.numbers = [1, 2, 3];
}());
// The properties below have access to the enclosed fields.
// Careful with functions exposed within the closure of the
// constructor, each new instance will have it's own copy.
(function EXPOSED_PROPERTIES_WITHIN_CONSTRUCTOR() {
Object.defineProperty(X, 'toggle', {
get: function () {
var before = N.toggle;
N.toggle = !N.toggle;
return before;
}
});
Object.defineProperty(X, 'text', {
get: function () {
return N.text;
},
set: function (value) {
N.text = value;
}
});
}());
};
// Here is the prototype section.
(function PROTOTYPE() {
var P = myType.prototype;
(function EXPOSED_PROPERTIES_WITHIN_PROTOTYPE() {
Object.defineProperty(P, 'numberLength', {
get: function () {
return this.numbers.length;
}
});
}());
(function EXPOSED_METHODS() {
P.incrementNumbersByCount = function () {
var i;
for (i = 0; i < this.numbers.length; i++) {
this.numbers[i] += this.count;
}
};
P.tweak = function () {
if (this.toggle) {
this.count++;
}
this.text = 'tweaked';
};
}());
}());
Dieser Code gibt Ihnen einen Typ namens myType . Es wird interne private Felder mit der Bezeichnung umzuschalten. y Text . Es wird auch diese exponierten Mitglieder haben: die Felder zählen y Zahlen die Eigenschaften umzuschalten. , Text y AnzahlLänge die Methoden incrementNumbersByCount y zwicken. .
Das Faltmuster wird hier ausführlich beschrieben: Javascript Folding Pattern
1 Stimmen
Hinweis: Dies ist ein Duplikat von stackoverflow.com/questions/355848
3 Stimmen
Ich persönlich mag es, Klassenmitglieder innerhalb des Funktionskörpers zu deklarieren. Ich verwende die Technik des "Fixierens des This", um einen Abschluss zu erstellen, der sich mehr wie eine Klasse verhält. Ich habe ein ausführliches Beispiel in meinem Blog: ncombo.wordpress.com/2012/12/30/
1 Stimmen
Ich habe die meisten C++ OOP-Funktionen mit einer einfachen und natürlichen Syntax auf JavaScript portiert. Siehe meine Antwort hier: stackoverflow.com/a/18239463/1115652
0 Stimmen
In JavaScript gibt es keine Klassen. Aber wenn Sie ein klassenähnliches Verhalten in JS simulieren wollen, können Sie das. Siehe Details in: symfony-world.blogspot.com/2013/10/
1 Stimmen
Mögliches Duplikat von Wie kann ich "Klassen" in JavaScript nachbilden? (mit oder ohne eine Bibliothek eines Drittanbieters)
0 Stimmen
Ein einfacher Ansatz zur Definition einer Javascript-Klasse mit Javascript-Objekten: wapgee.com/story/i/203
0 Stimmen
Beachten Sie, dass diese Frage seit 2015 direkt mit den nativen Klassenfunktionen behandelt wird. Siehe developer.mozilla.org/de-US/docs/Web/JavaScript/Reference/
0 Stimmen
@karim Der Link zu dem Artikel, den Sie in Ihrer Frage erwähnen, ist defekt.