老师,关于 event 的问题请教一下。

来源:3-4 vue基本知识点串讲-part2

ButcherV

2022-01-20

<button @click="increment1">+1</button>
<button @click="increment2($event)">+2</button>
<button @click="increment3(3, $event)">+3</button>
<button @click="increment4(4)">+4</button>

increment1(event) {
    // eslint-disable-next-line
    console.log('event1', event, event.__proto__.constructor)
    this.num++
},
increment2(event) {
    // eslint-disable-next-line
    console.log('event2 target', event.target)
},
increment3(val, event) {
    // eslint-disable-next-line
    console.log('event3 target', event.target)
    this.num = this.num + val
},
increment4(val) {
    // eslint-disable-next-line
    console.log('event4 target', event.target)
    this.num = this.num + val
},

请问下。

  1. 对比 increment1 和 increment2,调用时无论传参与否,为何都能访问到 event。
  2. 对比 increment3 和 increment4,传不传 $event 也都能访问到 event。 $event 有什么用呢。

图片描述图片描述

写回答

1回答

双越

2022-01-20

第一,如果 template 中直接调用函数,没有传递任何参数,vue 会默认传 event 过去。所以 increment1 有 event

第二,increment4 函数中,event 这个变量都没有被定义,语法上就是不对的,按理说应该会报错。你再确认一下。

0
3
双越
回复
ButcherV
哦,感谢你的提示,之前我忽略了一点:event 确实是 window 的全局属性,可以直接访问的但不建议这么用(不常用,所以我也给忽略了)。另外,increment1 里,你可以改一改参数名字,例如改成 myEvent ,然后打印 myEvent 看看,就知道答案了。
2022-01-21
共3条回复

2024版 前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4665 学习 · 1644 问题

查看课程