绑定事件的function形式

来源:8-5 event(4)

慕盖茨5496228

2021-06-28

图片描述
老师,我看处理事件绑定正则那块可以匹配function的形式,但为啥点击会报console未定义?

写回答

1回答

ustbhuangyi

2021-06-30

 <HelloWorld @click.native="function() {

      console.log(123)

   }">

  </HelloWorld>

这个模板会被编译成 

function render() {

  with(this) {

    return _c('HelloWorld', {

      nativeOn: {

        "click": function ($event) {

          return (function () {

            console.log(123)

          }).apply(null, arguments)

        }

      }

    })

  }

}



那么在运行时,执行这个代码,遇到 console. 它会先从 this 上查找,也就是组件实例上找,但是组件上并没有定义 console 这个函数,所以就直接报错了。

模板导出工具:https://template-explorer.vuejs.org/#%20%3CHelloWorld%20%40click.native%3D%22function()%20%7B%0A%20%20%20%20%20%20console.log(123)%0A%20%20%20%20%7D%22%3E%0A%20%20%20%20%3C%2FHelloWorld%3E

1
2
ustbhuangyi
回复
慕盖茨5496228
method 执行的时候就脱离了这个 with(this) 的闭包环境了啊
2021-06-30
共2条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4990 学习 · 1038 问题

查看课程