-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[vue] vue中data的属性可以和methods中的方法同名吗?为什么? #557
Comments
不能,会报错。 |
Method "xxx" has already been defined as a data property |
可以,但eslint不允许你这么做 |
不是啊,就算没有eslint依然会报错的。[Vue warn]: Method "myname" has already been defined as a data property. |
如果真的重名了,data中的变量会覆盖methods中的方法 |
data中的属性和methods方法重名会优先执行data中的属性并且报错 |
大家答的都对,但是为什么会先执行data中的呢 |
错误会报出来,但是没有中断函数执行,只要不是和 |
肯定是不能同名的了,1、vue语法就会报错,2、如果同名那么你在使用this.XXX的时候是调用方法还是调用变量呢 |
不可以。在initState的时候,会对data中的属性、props、methods的属性名进行检查。出现同名立即warn |
为什么会先执行data,是因为组件初始化时的依赖收集会先执行 |
不可以,data和methods都是挂载this上的,对象上有同名属性肯定会报错 |
源码 中的 initData() 方法 |
不可以,会报错 |
原理是可以重名,但是在vue中执行initData会抛出错误; |
不可以,不管是方法,计算属性还是data最后都会挂载到vue实例上去,如果同名了就会把其中一条覆盖掉,那你写的计算属性,方法,在data中定义的数据,就没有什么意义了。 |
在内部initData函数执行时,会遍历data对象的属性,如果属性名存在于method定义的名称,就会报错,告诉你method的xxx已经被定义成data属性了。 而且 initData是在 initPorps 和 initMethod 之后的 和props名冲突,也会告诉你,但告诉你 data名和prop名冲突啦,让你放弃这个data名,以prop的值为准吧 |
源码中做校验了,不准同名,为什么要同名,傻瓜操作 |
因为是先initdata的 |
不可以。不管是在data、computed 、watch 、methods都不可以重名,如果重名控制台会报错 |
[vue] vue中data的属性可以和methods中的方法同名吗?为什么?
The text was updated successfully, but these errors were encountered: