Hallo dedlfix,
Tach!
Eine herkömmliche anonymous-function-Notation löst das
this
erst zur Laufzeit auf. Wenn du dein Objekt so erstellstlet 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.
Nein, meine Variante ist nur eine Kurzform deiner Variante. Es besteht prinzipiell kein Unterschied. Lies doch mal den Link durch, den ich dir verlinkt habe 😉
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.
Ich glaube, du verrennst dich da in was. Die Kurzform steht auch erst nach der „Zuweisung“ zur Verfügung, nur dass die Zuweisung bei der Objekt-Initialisierung passiert. Das ist nur eine Fortführung des Property-Value-Patterns:
let a = 10;
let foo = {
a, b() { console.log(this.a); }
};
foo.b();
Das ist äquivalent zu
let a = 10;
let foo = {
a: a,
b: function() { console.log(this.a); }
};
foo.b();
LG,
CK