dedlfix: Referenz im Objektliteral

Beitrag lesen

Tach!

Eine herkömmliche anonymous-function-Notation löst das this erst zur Laufzeit auf. Wenn du dein Objekt so erstellst

let myObject = {
	array1: [1, 2, 3],

	foo: function() { console.log(this.array2); }
};

In ES2015 kannst du auch folgendes schreiben:

let myObject = {
	array1: [1, 2, 3],

	foo() { console.log(this.array2); }
};

myObject.array2 = myObject.array1.map(x => x + 1);
myObject.foo()

Ja, das erste ist eine anonyme Funktion, die einer Eigenschaft zugewiesen ist, das andere ist eine benannte Funktion, sprich: Methode. Sieht so aus, als ob das am Ende dasselbe wäre, ist es aber dann noch nicht. Die Methode steht immer zur Verfügung, egal wo im Quelltext sie steht. Die anonyme Funktion in der Eigenschaft kann erst dann verwendet werden, wenn die Codeausführung die Zuweisung durchgeführt hat.

dedlfix.