Vue 自动为 methods 绑定 this,以便于它始终指向组件实例。这将确保方法在用作事件监听或回调时保持正确的 this 指向。在定义 methods 时应避免使用箭头函数,因为这会阻止 Vue 绑定恰当的 this 指向。
案例1
methods 使用普通函数式定义方式,看下图结果,是没有任何问题的
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="https://unpkg.com/vue@3.1.4/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<!-- `greet` 是在下面定义的方法名 -->
<button @click="greet">点我</button>
</div>
<script type="text/javascript">
const app ={
data(){
return{
name:'runoob'
}
},
methods:{
greet(){
console.log('111---',this)
}
}
}
Vue.createApp(app).mount('#app')
</script>
</body>
</html>
image.png
案列2
methods 使用箭头函数式定义方式,看下图结果,是报错的
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="https://unpkg.com/vue@3.1.4/dist/vue.global.js"></script>
</head>
<body>
<div id="app">
<!-- `greet` 是在下面定义的方法名 -->
<button @click="greet">点我</button>
</div>
<script type="text/javascript">
const app ={
data(){
return{
name:'runoob'
}
},
methods:{
greet()=>{
console.log('111---',this)
}
}
}
Vue.createApp(app).mount('#app')
</script>
</body>
</html>
image.png
网友评论