Struppi: Speicherplatz von "Methoden" in JavaScript

Beitrag lesen

Wenn man die Funktionen aber innerhalb des Klassenblocks definieren will (und genau um das gings imho in dem Beitrag, auf den ich geantwortet habe) werden die bei jeden Instanziierung neu angelegt

und hier noch die Kontrolle:

  
function Obj()  
{  
   Obj.prototype.func = function() {   };  
   this.func_2 = function() {   };  
}  
var a1 = new Obj();  
var a2 = new Obj();  
  
alert(  
( a1.func === a2.func)  
+ "\n" +  
( a1.func_2 === a2.func_2)  
)  

Deshalb ist es Blödsinn die Deklaaration innerhalb des Konstruktor zu machen aber es schadet nichts.

Der Denkfehler ist, dass hier etwas nacheinander abläuft. Das ist aber nicht so, denn ein Skript wird nur einmal übersetzt, dabei stößt der Übersetzer auf [Objekt].prototype und diese wird dann intern nicht innerhalb der Funktion ausgeführt, sondern einmal an das Objekt gebunden. Das heißt vom Standpunkt des Javascript übersetzters ist diese Deklaration nicht innerhalb irgendeines Block.

Den prototype innerhalb des constructor zu definieren hat aber dann den Vorteil das man auf private Variabeln zugreifen kann.

Struppi.

--
Javascript ist toll (Perl auch!)