[vue] vue中data的属性可以和methods中的方法同名吗?为什么?
Activity
zyronon commentedon Jul 2, 2019
不能,会报错。
mying01 commentedon Jul 4, 2019
Method "xxx" has already been defined as a data property
llccing commentedon Jul 4, 2019
@mying01 , 贴一下vue.js代码中的位置
webwhy commentedon Jul 12, 2019
可以,但eslint不允许你这么做
xiguan-wuge commentedon Jul 14, 2019
会报错(关闭了eslint校验),比如是在使用饿了么组件时,声明一个同名的data 属性和methods方法时,会报错。添加样式的功能没有奏效。




binnuo commentedon Jul 30, 2019
不是啊,就算没有eslint依然会报错的。[Vue warn]: Method "myname" has already been defined as a data property.
RainAley commentedon Aug 9, 2019
如果真的重名了,data中的变量会覆盖methods中的方法
lukejian003 commentedon Aug 14, 2019
data中的属性和methods方法重名会优先执行data中的属性并且报错
seho-dev commentedon Sep 12, 2019
大家答的都对,但是为什么会先执行data中的呢
Linkontoask commentedon Sep 23, 2019
@1018715564 https://github.com/vuejs/vue/blob/77796596adc48d050beefd11e827e8e4d44c6b3c/src/core/instance/state.js#L48
Linkontoask commentedon Sep 23, 2019
错误会报出来,但是没有中断函数执行,只要不是和
props
同名并且第一个字符不是_
或$
,那么就可以使用this
访问,然后observe
数据。同名的方法被干掉
TypeError: handler.apply is not a function
InterfaceBoy commentedon Sep 26, 2019
肯定是不能同名的了,1、vue语法就会报错,2、如果同名那么你在使用this.XXX的时候是调用方法还是调用变量呢
yangkunxiao commentedon Mar 7, 2020
不可以。在initState的时候,会对data中的属性、props、methods的属性名进行检查。出现同名立即warn
mingyec commentedon Mar 28, 2020
为什么会先执行data,是因为组件初始化时的依赖收集会先执行
10 remaining items