为什么即使没有参数,"event"也可以在 Vue v-on 方法中访问?



根据 Vue 文档中关于事件处理的页面,当你像v-on:click="handler"一样使用 v-on 时,处理程序函数将自动获取原始 DOM 事件作为第一个参数。此代码片段直接改编自这些文档。

new Vue({
  // Vue config shortened for brevity
  methods: {
    handler(event) {
      // `this` inside methods points to the Vue instance
      alert('Hello ' + this.name + '!')
      // `event` is the native DOM event
      if (event) {
        alert(event.target.tagName)
      }
    }
  }
})

为什么即使我从函数参数列表中省略它,我仍然可以访问event,如下所示:

handler() {
  console.log(event); // Still returns the native DOM object even though
                      // I don't explicitly define `event` anywhere
}

如果我不将其作为参数添加到函数中,event不应该undefined吗?

我相信

这将是全局window.event

https://developer.mozilla.org/en-US/docs/Web/API/Window/event

与 Vue 无关,只是一个不幸的巧合,你碰巧称它为 event .

也许文档解释了在处理程序函数中使用event作为第一个参数的原因: You should avoid using this property in new code, and should instead use the Event passed into the event handler function.https://developer.mozilla.org/en-US/docs/Web/API/Window/event

相关内容

最新更新