Wofür steht "this" in diesem Javascript?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

(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 :)

MichaelBe1402 
Fragesteller
 07.03.2013, 13:26

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)

0
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(); :)