Wofür steht "this" in diesem Javascript?
Ich habe bisher noch nie mit Java oder Javascript gearbeitet und muss mich nun gezwungener Weise einarbeiten. So ganz habe ich den this Befehl jedoch noch nicht verstanden.
Wofür steht "this" in diesem Javascript? (Ausschnitt) PhonegapPrototype.prototype.requestData = function(url, user, password) { var me = this;
steht hier "this" für "PhonegapPrototype.prototype.", also kann ich in der Funktion me anstelle von PhonegapPrototype.prototype. schreiben?
Danke vorab! Gruß Michael
4 Antworten
(ich gehe mal von javascript aus) this bezieht sich immer das object (in Javascript werden funktionen auch wie objekte behandelt) und nicht eine klasse. also NEIN :)
Wenn überhaupt, ein Objekt dieser klasse nicht die Klasse selbst!
var self = this; // this == Window function Test() { return this; } Test(); // this == Window function MyObject(){} MyObject.prototype.test = function() { return this; }; var test = new MyObject(); test.init(); // this == MyObject var body = document.getElementsByTagName('body')[0]; body.onclick = function() { console.log( this ); }; // this == <body> ... </body>
Was "this" gerade ist, hängt immer von der Scope ab. Definierst du eine Variable im globalen Bereich als "this", wird immer das Window-Objekt gemeint, da das das nächst höhere Element ist, quasi das Elternelement (Parent) von dem aktuellen Scope.
In Prototype ist die Definition einer "function MyObject(){}" ein Konstruktor. D.h. du kannst damit eine Instanz bilden z.B. "new MyObject()".
Mit der Eigenschaft "[].prototype" kannst du diesem Objekt Schnittstellen (Methoden) definieren. Befindet sich "this" in dieser Methode, wird damit das nächst höhere Element damit gemeint, das Objekt selbst, dass diese Schnittstellen anbietet, in dem Fall "MyObject".
Eine Variable als "this" zu deklarieren nützt zB. beim Definieren eines Events. Im letzten Bsp. versuche ich dem Body-Element ein onclick-Event zu geben. Da das Event dem Element "Body" zugesprochen ist, ist "Body" auch das Elternelement, ergo ist "this" in diesem Fall das Body-Element. Man will jetzt zB. aber das Window-Element ansprechen, anstatt das von Body definierte "this"; das löst man dann folgendermaßen:
... var self = this; body.onclick = function() { console.log( self ); // self == Window };
Java oder Javascript
nur um Missverständnisse auszuräumen: das sind zwei VÖLLIG unterschiedliche sprachen
PhonegapPrototype.prototype.requestData = function(url, user, password) { var me = this;
mal abgesehen davon, dass da eine kammer fehlt steht das "this" wohl für die variable "me"
Es bezieht sich auf 'requestData'.
Das dient einfach dazu, dass du den requestData-Scope in der Variable 'me' behalten kannst, während sich 'this' fortlaufend ändert. Du kannst also auch Unterfunktionen me.something nennen, und beziehst dich dabei auf requestData.something
Siehe auch hier;
http://www.mediaevent.de/javascript/this.html
Bei Zweifel... console.log(); :)
danke soweit. also steht "me" in diesem Fall für "PhonegapPrototype.prototype.requestData"? Wenn nein hab ich keine Ahnung :((
(sorry, der Code Tag geht hier am mac irgendwie nicht)