Die Art und Weise, Klassen in JavaScript zu schreiben, wurde bereits besprochen. Private Implementierungen werden jedoch nicht besprochen. Lesen Sie diesen Artikel.
Wir wissen, dass die Essenz der Implementierung privater Eigenschaften in JS var + Schließung ist. wie folgt
Kopieren Sie den Codecode wie folgt:
Funktion Person(n, a){
// öffentlich
this.name = n;
// Privat
var Alter = a;
this.getName = function(){
return this.name;
}
this.getAge = function(){
Rückkehralter;
}
}
Der Test ist wie folgt. Das Alter ist privat und kann nicht mit dem Punktoperator ermittelt werden. Stattdessen kann nur die Methode getName verwendet werden.
Kopieren Sie den Codecode wie folgt:
var p = neue Person('jack',23);
console.log(p.age); // undefiniert
console.log(p.getAge()); // 23
Das Obige ist nicht überraschend. Lassen Sie uns unten eine Toolfunktion verwenden, um es zu implementieren.
Kopieren Sie den Codecode wie folgt:
/**
* @param {String} Klassenname
* @param {Funktion} classImp
*/
Funktion $class(className, classImp){
functionclazz(){
if(typeof this.init == "function"){
this.init.apply(this, arguments);
}
}
classImp.call(clazz.prototype);
window[className] = clazz;
}
schreibe eine Klasse
Kopieren Sie den Codecode wie folgt:
$class('Person', function(){
// Private Eigenschaften werden hier definiert
var Alter = '';
this.init = function(n, a){
//Die gemeinsam genutzten Eigenschaften werden hieran gehängt und initialisiert.
this.name = n;
// Privateigentumsinitialisierung
Alter = a;
};
this.getName = function(){
return this.name;
};
this.getAge = function(){
Rückkehralter;
}
});
Neu ein Instanzobjekt
Kopieren Sie den Codecode wie folgt:
var p = neue Person('jack',23);
console.log(p.name); // Gemeinsam mit jack, Sie können den Punktoperator verwenden, um ihn abzurufen
console.log(p.age); // undefiniertes Private kann nicht über den Punktoperator abgerufen werden
console.log(p.getAge()); // 23 Das private Alter kann nur über die öffentliche Methode getAge ermittelt werden