我们的团队正在开发一个VueJS项目,我注意到一些方法函数是这样声明的:
methods: {
doSomething: function () {
//do it here...
}
}
而其他的格式是:
methods: {
doSomething() {
//do it here...
}
}
这两种格式都工作得很好,如果我没记错javascript的话,第二种方法只是javascript中函数声明的简写。
但是VueJS是否对这两种格式进行了区分?声明VueJS方法的最佳/首选方式是什么?对于VueJS计算函数,它的格式是否必须与方法函数相同?
发布于 2019-08-21 12:24:24
这和Vue无关。
从ECMAScript 2015开始,为对象初始值设定项上的方法定义引入了更短的语法。它是分配给方法名称的函数的简写。
给定以下代码:
var obj = {
foo: function() {
/* code */
},
bar: function() {
/* code */
}
};
现在,您可以将其缩短为:
var obj = {
foo() {
/* code */
},
bar() {
/* code */
}
};
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
发布于 2019-08-21 12:23:30
还有一种方法可以声明方法
methods: {
doSomething: () => {
//do it here...
}
}
实际上,你的声明方式是一样的,你是对的--你可以以同样的方式使用这两种方式。
但请记住,如果您需要在方法(this
)内访问组件的实例-箭头函数不允许您这样做。
methods: {
doSomething: () => {
console.log(this) // undefined
}
}
在这种情况下,你几乎总是要这样使用:
methods: {
doSomething() {
console.log(this) // insance
}
}
发布于 2019-08-21 12:58:14
这两个都是对象,它们可以以任何方式编写,这不是关于vue,它是关于js引擎,这里没有以任何方式区分两者。关于最佳实践,你应该遵循https://vuejs.org/v2/style-guide,它是一个官方的guid。某些时候,如果你的函数很小,你可以跳过
methods:{
xyz(){
}
}
并将其编写为
methods:{
xyz:()=> return something;
}
https://stackoverflow.com/questions/57591462
复制相似问题