Więc zacząłem używać ES6 w Meteor
, ale najwyraźniej jeśli spróbujesz użyć składni z funkcją strzałki, this.userId
jest niezdefiniowane, a jeśli użyjesz go z regularne function(){}
this.userId
działa idealnie, zakładam, że jest to rodzaj procesu transplera, który przypisuje to innym, do userId
, ale jest tylko zgadywaniem, czy ktoś wie, co tak naprawdę się dzieje?Funkcja strzałki ES6 zmienia zakres tego w Meteor.publish
Meteor.startup(function() {
Meteor.publish("Activities", function() { //with function
console.log(this.userId); //TS8vTE3z56LLcaCb5
});
});
Meteor.startup(function() {
Meteor.publish("Activities",()=> { //with arrow function
console.log(this.userId); //undefined
});
});
Od MDN: * "Wyrażenie funkcja strzałka (znany również jako funkcja tłuszcz strzałka) ma krótszy w porównaniu do składni wyrażeń funkcyjnych oraz ** leksykalnie wiąże' this' wartość ** '* https:. //developer.mozilla .org/pl-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –
@FelixBadanie, jak to jest duplikatem pytania? – ncubica
Wyjaśnia, w jaki sposób działa "ten" w funkcjach strzałek: –