PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Javascript: Frage zu Objekten


Marscel
2007-11-05, 23:30:16
Ich habe so einen Code:

function one()
{
this.fnct_ptr = 0;
}

one.prototype.set_fnct_ptr = function(fnct_ptr)
{
this.fnct_ptr = fnct_ptr
}

one.prototype.do_magic = function()
{
this.fnct_ptr('str');
}

function two()
{
this.c2_string = 'Will ich haben!';
}

two.prototype.two_callback = function(str)
{
// Alert: undefined
alert(this.c2_string);
}

two.prototype.action = function()
{
var c1 = new one();
// Alert: 'Will ich haben!'
alert(this.c2_string);
c1.set_fnct_ptr(this.two_callback);
c1.do_magic();
}

var bla = new two()
bla.action();

Ich stehe auf dem Schlauch, in two::action() sage ich doch, dass die Methode two_callback vom Objekt aufgerufen werden soll, mit DIESEN Elementen, oder? (also dass c2_string == 'X' ist und nicht 'Y' in einem anderen Fall z.B.)
Tatsache ist, im Callback weiß der Interpreter jedenfalls nicht mehr, was this.c2_string ist. Die Klasse 'one' muss soweit abstrakt sein, zumindest sollte sie das meinen Plänen nach, dass ich sowohl gewöhnliche Procedure-Funktionen übergeben kann, als auch Prototype-Funktionen einer ... Klasse oder Objekt? Das sieht so aus, als ob die Methode two_callback beim Aufruf sich im Vakuum oder ähnlichem befindet.

Wäre toll, wenn mir jemand weiterhelfen kann.