在模板中,我们可以进行两种形式的事件绑定:

    1. 直接绑定一个函数:

      1. <template>
      2. <div @click="clickHandler"></div>
      3. </template>
    2. 绑定**javascript**语句:

      1. <template>
      2. <div @click="clickHandler()"></div>
      3. </template>

      其实,这两种绑定事件的方式编译后形成的模板是不一样的:
      第一种方式是直接将指定的函数作为事件处理程序:

      1. on: {
      2. click: vm.clickHandler
      3. }

      所以在这种情况下,**clickHandler**收到的第一个参数实际上是浏览器事件对象。
      第二种方式,事件处理程序其实是Vue自身创建的。并且有一个形式参数:$event.

      1. on: {
      2. click: function($event) {
      3. vm.clickHandler();
      4. }

      那么,在clickHandler处理程序中,我们能不能使用$event变量呢?显然是不能的。
      在这里,我暴露出了一个严重的问题,那就是我之前将函数执行栈和函数的作用域链混为一谈了。
      函数执行栈确实是**点击事件处理程序**=>**clickHanlder**。但是**clickHanlder**的作用域链并不是这样,它是在这个函数生成的位置生成的。后续我会整理专门分析。作为一个两年工作经验的前端,我居然没有理清这个问题,实在是很不应该。