Javascript Variable vor Schreibzugriff schützen

realpower

Grünschnabel
Hallo,

ich habe folgendes Problem: Ich habe einen Prototype, der einen Parameter mit seinen verschiedenen Optionen darstellt. Wenn ich davon eine Instanz anlege möchte ich die Werte von diesem Parameter lesen können, aber nicht ändern können. Ich habe schon ewig rumgesucht, aber ich bekomme es einfach nicht hin, das ich in ParmDesc meine Variablen ändern kann und eine Instanz davon nicht nicht.

Hier noch der Code damit mein Problem eindeutiger wird:

Code:
function ParmDesc() {
	this.nr;
	...
	this.valarrayEnum;
}
ParmDesc.prototype.set = function(nr)
{
	var result = android.getJSON(nr);  //Hier bekomme ich meine Daten her die abhängig sind von der Nummer
	var jsonObject = JSON.parse(result);
	this.nr = jsonObject.name; // Hier schreibe ich dann die passenden Daten in die Variablen
	...
                this.valarrayEnum = jsonObject.valarrayEnum
}

Und so lege ich meinen Parameter nachher an:
Code:
var p108 = new ParmDesc();
p108.set(108); //Hier werden die Daten in den Parameter geschrieben

showToast(p108.nr);  //Zeigt den richtigen Wert an
p108.nr = 999;           //DAS SOLL NICHT FUNKTIONIEREN!
showToast(p108.nr);  //Hier würde momentan 999 ausgegeben

Vielen Dank schonmal für eure Hilfe!

Viele Grüße

Christopher
 
Zuletzt bearbeitet:
Das kannst du nur durch geschicktes Scoping erreichen, aber dann können via "prototype" erstellte Methoden auch nicht darauf zugreifen.

Javascript:
function ParmDesc() {
	var _nr = 0;
	
	this.set = function(nr) {
		_nr = nr;
	};
	
	this.get = function() {
		return _nr;
	};
}

var p1 = new ParmDesc;
p1.set(100);
alert(p1.get());
p1._nr = 666;
alert(p1.get());
 
Zurück