<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Peon(number) {
this.number = number;
this.inc = function() {
number=number+1;
};
return true;
}
var p=new Peon(10);
function returnNumber() {
p.inc();
alert(p.number);
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="b00" TYPE="button" Value="Click" onClick="returnNumber()">
</BODY>
</HTML>
Dieser Code funktioniert nicht wie vorgesehen. Gibt es eine Möglichkeit, es ohne zu machen arbeitet mitZugriff auf Variablen in Objekten in Javascript ohne "dieses"
this.number=this.number+1;
Hier ist eine triviale Wahl zu schreiben, aber in größeren Codes das nicht mit. * Wäre es besser lesbar viel machen. Ist es möglich?
Sie können über Crockfords private Mitglieder Muster auf seiner Website lesen: http://javascript.crockford.com/private.html Es ist sehr wichtig ** zu beachten, dass, wenn Sie viele Peons haben, dieses private Member-Muster deutlich mehr Speicher verbraucht als nur eine Eigenschaft, weil jedes einzelne Objekt seine * eigene Kopie * der beiden Funktionen hat im Konstruktor definiert. Sie sind nicht und können nicht zwischen Objekten geteilt werden. Der Nachteil ist also die Privatsphäre gegenüber der Speicherbenutzung. Speicherverbrauch ist ein großes Problem bei IE und Firefox. Wenn Sie nur ein paar Peons haben wollen, ist das egal. –
Danke, das ist, was ich gesucht habe –
'return true' ist in der Tat überflüssig und im Wesentlichen ignoriert am Ende eines Konstruktors, aber die Rückgabe eines Objekts anstelle eines Primitivs würde nicht ignoriert werden und würde dieses Objekt anstelle des neuen' zurückgeben Peon' Objekt. –