###
不要加this;直接@click="$Common..."
### (function anonymous(){
with(this) {
return _c(
"div",
{ attrs: { id: "app" } },
[
_m(0),
_v(""),
_c("p", [_v(_s(msg))]),
_v(""),
_c("comp", { on: { myclick: handler } }),
],
1
);
}
});
这段代码是vue 内部把模板编译成可执行的h函数(h函数用来生成虚拟dom的,这里指的是_c)时,编译出的代码,可以看到这里用了with关键字,也就是说这里把this也就是当前组件实例,添加到当前代码块的作用域链的顶部,这样的话你看里面 的_c和 绑定属性msg 和事件 handler 查找时通过作用域链最后 会找到this(当前组件实例)上的msg和 handler以及 _c,这样也就解释了为什么这里不需要写this
(vue初始化的过程中会把 第一级的属性和 函数挂载到当前实例上,所以this.找得时候能直接找到,vue中组件的类时继承自 vue这个类的)
###模板中this可写可不写, 我猜你这个是因为你的方法名带了$符号, vue内部直接去匹配vue本身的方法