То, что я заметил сегодня, смутило меня.
Когда я впервые использовал Vue, было два распространенных способа определения метода.
methods: {
foo: () => {
//do something
}
}
и
methods: {
foo() {
//do something
}
}
Оба работали без проблем.
Сегодня я определил метод, как в первом примере, и у меня возникли проблемы с областью действия this
внутри функции.
Для контекста:
У меня есть данные, определенные так:
data() {
return {
fooVar: ''
}
}
и мой метод был определен следующим образом.
methods: {
foo: () => {
console.log('Foo: '+this.fooVar);
}
}
Когда я проверил консоль, она сказала
Foo: undefined
Затем я изменяю объявление метода на
foo() {
console.log('Foo: '+this.fooVar)
}
и все работало без проблем.
Так как я думал, что foo() {...}
и foo: () => {...}
- это одно и то же (кроме самого объявления), мне было интересно, изменяется ли область действия функции между этими двумя способами.
Меняется ли оно и если да, то почему оно меняется?