在Javascript对象上定义方法/函数
这是:在Javascript对象上定义方法/函数,javascript,function,object,vue.js,ecmascript-6,Javascript,Function,Object,Vue.js,Ecmascript 6,这是: saveUpdate() { // Some code } 同: saveUpdate: function() { // Some code } 是否有一种最佳实践ES6方法来定义对象(特别是Vue.js组件)上的方法 更多背景: 我在Vue.js应用程序中遇到问题,这些方法在产品中正确触发。我定义的方法在开发中似乎工作得很好,但一旦编译用于生产,它们的行为似乎就不一样了。我在Vue.js文档中读到,所有方法都需要定义为新的独立函数,现在我想知道我定义方法的方式是否正确;
saveUpdate() {
// Some code
}
同:
saveUpdate: function() {
// Some code
}
是否有一种最佳实践ES6方法来定义对象(特别是Vue.js组件)上的方法
更多背景:
我在Vue.js应用程序中遇到问题,这些方法在产品中正确触发。我定义的方法在开发中似乎工作得很好,但一旦编译用于生产,它们的行为似乎就不一样了。我在Vue.js文档中读到,所有方法都需要定义为新的独立函数,现在我想知道我定义方法的方式是否正确;这其实是不对的
更广泛的例子:
...,
methods: {
saveUpdate() {
// Some code
}
},
...
我应该做一些类似于:
...,
methods: {
saveUpdate: () => {
// Some code
}
},
...
现代的最佳实践或公认的方法是什么?还是我找错了地方,我的声明就这么好?是的,这是:
saveUpdate() {
// Some code
}
语法糖用于:
saveUpdate: function() {
// Some code
}
这两个条在语法上没有什么不同。如果您想要箭头函数,我相信您需要使用第二种形式:
saveUpdate: () => {
// Some code in a lexical `this` scope (not useful in Vue computed).
}
还要注意->语法无效-它是一个胖箭头=>。尽管如评论中所指出的,您很可能不希望在Vue项目中使用箭头函数,因为您将失去与此的绑定,而这正是您与组件交互的方式。是的,这:
saveUpdate() {
// Some code
}
语法糖用于:
saveUpdate: function() {
// Some code
}
这两个条在语法上没有什么不同。如果您想要箭头函数,我相信您需要使用第二种形式:
saveUpdate: () => {
// Some code in a lexical `this` scope (not useful in Vue computed).
}
还要注意->语法无效-它是一个胖箭头=>。尽管如评论中所指出的,您很可能不希望在Vue项目中使用箭头函数,因为您将失去与该函数的绑定,而这正是您与组件交互的方式。saveUpdate{…}是saveUpdate的ES6快捷方式:函数{…},因此是的,它们是相同的。由于Vue应用程序通常是传输的,因此没有理由不使用第一个选项
如果函数在应用程序中重用,则可以单独声明:
export function saveUpdate() {...}
...
export default {
methods: { saveUpdate }
}
箭头不应用于希望像这样访问Vue实例的函数
正如所解释的那样:
调用所有生命周期挂钩时,其this上下文都指向
调用它的Vue实例
不要在选项属性或回调上使用箭头函数,例如
创建:=>console.logthis.a或vm.$watch'a',newValue=>
这是我的方法。因为箭头函数没有一个this,this
将被视为任何其他变量,并通过
父作用域,直到找到为止,通常会导致未捕获等错误
TypeError:无法读取未定义或未捕获的TypeError的属性:
this.myMethod不是函数
saveUpdate{…}是saveUpdate的ES6快捷方式:函数{…},所以是的,它们是相同的。由于Vue应用程序通常是传输的,因此没有理由不使用第一个选项
如果函数在应用程序中重用,则可以单独声明:
export function saveUpdate() {...}
...
export default {
methods: { saveUpdate }
}
箭头不应用于希望像这样访问Vue实例的函数
正如所解释的那样:
调用所有生命周期挂钩时,其this上下文都指向
调用它的Vue实例
不要在选项属性或回调上使用箭头函数,例如
创建:=>console.logthis.a或vm.$watch'a',newValue=>
这是我的方法。因为箭头函数没有一个this,this
将被视为任何其他变量,并通过
父作用域,直到找到为止,通常会导致未捕获等错误
TypeError:无法读取未定义或未捕获的TypeError的属性:
this.myMethod不是函数
我应该这样做吗?我应该这样做吗?对于任何Vue实例函数computed/method/etc,都不太可能需要一个arrow函数,因为您将丢失对实例本身的重要引用。我看到@Phil不熟悉Vue-我要补充一点。不,new与构造函数一起使用。@lawrencerone不,它是一个速记函数-但具有相同的功能,因此它是纯可视的。如果没有逗号,则无效,因为对象属性总是用逗号分隔,数组元素也一样-总是存在。对于任何Vue实例函数computed/method/etc,都不太可能需要一个arrow函数,因为这样会丢失对实例本身的重要引用。我看到@Phil不熟悉Vue-我要补充一点。不,new与构造函数一起使用。@lawrencerone不,它是一个速记函数-但具有相同的功能,因此它是纯可视的。如果没有逗号,它是无效的,因为对象属性和数组元素总是用逗号分隔-它总是在那里。