Fe-interview: [vue] 在使用计算属性的时,函数名和data数据源中的数据可以同名吗?

Created on 2 Jul 2019  ·  10Comments  ·  Source: haizlin/fe-interview

[vue] 在使用计算属性的时,函数名和data数据源中的数据可以同名吗?

vue

Most helpful comment

不能同名 因为不管是计算属性还是data还是props 都会被挂载在vm实例上,因此 这三个都不能同名

All 10 comments

不可以,同名会报错:The computed property "xxxx" is already defined in data

不能同名 因为不管是计算属性还是data还是props 都会被挂载在vm实例上,因此 这三个都不能同名

不可以,写在计算属性中的数据名称,不能在data中定义

不可以,因为初始化vm的过程,会先把data绑定到vm,再把computed的值绑定到vm,会把data覆盖了

莫名其妙的问题。可以同名,但data会覆盖methods。并且本就不该同名,同名说明你命名不规范。
然后解释为什么会覆盖,因为Props、methods、data、computed、watch都是在initState函数中被初始化的。初始化顺序就是我上面给出的顺序,本质上这些都是要挂载到this上面的,你如果重名的话,后面出现的属性自然而然会覆盖之前挂载的属性了。如果你的eslint配置比较严格的话,同名是编译不通过的。

莫名其妙的问题。可以同名,但data会覆盖methods。并且本就不该同名,同名说明你命名不规范。
然后解释为什么会覆盖,因为Props、methods、data、computed、watch都是在initState函数中被初始化的。初始化顺序就是我上面给出的顺序,本质上这些都是要挂载到this上面的,你如果重名的话,后面出现的属性自然而然会覆盖之前挂载的属性了。如果你的eslint配置比较严格的话,同名是编译不通过的。

不可以,因为初始化vm的过程,会先把data绑定到vm,再把computed的值绑定到vm,会把data覆盖了

其实是可以同名的, 不是先把data绑定到vm,初始化顺序是这样的,先computed,methods,data,props

为什么会有这样的问题?有点脑残了吧

莫名其妙的问题。可以同名,但data会覆盖methods。并且本就不该同名,同名说明你命名不规范。
然后解释为什么会覆盖,因为Props、methods、data、computed、watch都是在initState函数中被初始化的。初始化顺序就是我上面给出的顺序,本质上这些都是要挂载到this上面的,你如果重名的话,后面出现的属性自然而然会覆盖之前挂载的属性了。如果你的eslint配置比较严格的话,同名是编译不通过的。

不可以,因为初始化vm的过程,会先把data绑定到vm,再把computed的值绑定到vm,会把data覆盖了

其实是可以同名的, 不是先把data绑定到vm,初始化顺序是这样的,先computed,methods,data,props

正确顺序:props、methods、data、computed、watch、

不可以,会报错,

Was this page helpful?
0 / 5 - 0 ratings