Vue.js方法声明之间的区别

LLJ97

我今天注意到的某些事情使我感到困惑。

当我第一次使用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: () => {...}是同一件事(除了声明本身),所以我想知道函数的范围是否在这两种方式之间改变。

它会改变吗?如果会改变,为什么会改变?

约翰·约翰逊

这不是关于Vue的问题,而是关于javascript本身的问题。

简而言之,箭头函数(用(x)=> {doSomething(x);定义)与通常的函数不同。它们没有自己的“ this”,只能访问在其中定义的范围(如果没有范围,默认为window或global(在nodejs中)),最好在不充当对象实例方法的地方使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

。$ mount()和el之间的区别[Vue JS]

Vue.js中的全局方法和实例方法之间有什么区别?

Vue.js中创建和安装的事件之间的区别

Laravel / Vue-App.js导入和需求之间的区别

“ vue create NewProjectsName”和“ vue init webpack NewProjectsName”之间的区别?

Vue.js中“ data:”和“ data()”之间有什么区别?

在Vue.js中使用i18n库和直接使用loacle之间的区别

从每个组件调用main.js V / s调用新Vue()之间的区别

vue.js 2中的calculated和mounted之间的主要区别是什么?

Vue.js中的class和staticClass之间有什么区别吗?

Vue.js 中标签的 Id 和 ref 之间有什么区别?

vue js中两个文件输入字段之间的区别

类对象方法声明之间的区别React?

Vue变量在方法之间消失

在Vue js中声明单个项目

在 Vue 中声明变量有什么区别?

Vue JS:data(){return {}}与data :()=>({})的区别

vue.js中的watch方法和计算方法有什么区别

在Vue.js中声明全局变量的最佳方法是什么?

常量声明之间的区别

声明变量之间的区别

ArrayList声明之间的区别

以下声明之间的区别

冻结数组中的对象然后尝试修改它们时,v-model和:value之间的Vue.js区别

当React或Vue.js中的组件之间进行通信时,使用回调和事件有什么区别

vue.js中数据中的方法或方法中的方法之间的差异

Vue-Test-Utils的“ mount”和“ shallowMount”之间的区别?

Javadoc:“方法继承自”和“方法声明于”之间的区别

Vue.js 在组件之间传递数据