Vue 创建实例时,会自动为 methods 绑定当前实例 this
保证在事件监听时,回调始终指向当前组件实例
方法要避免使用箭头函数,箭头函数会阻止 Vue 正确绑定组件实例 this在 template 中 @click=”changeTitle(‘This is your TITLE’)”
函数名 + (),() 不是执行符号,而是传入实参的容器
真正的事件处理函数是 onclick = “() => changeTitle(‘This is your TITLE’)”可以在视图模板中
{{}}
中使用,但注意模板直接调用的方法尽量避免副作用操作实例中直接挂载 methods 中的每一个方法
实际编译的时候会被处理掉,即 methods 只是开发者写方法的一个容器
var Vue = (function() {
function Vue(options) {
this.$data = options.data();
this._methods = options.methods;
this._init(this);
}
Vue.prototype._init = function(vm) {
initData(vm);
initMethods(vm);
}
function initData(vm) {
for(var k in vm.$data){
(function(k) {
Object.defineProperty(vm, k, {
get: function() {
return vm.$data[k];
},
set: function(newValue) {
vm.$data[k] = newValue;
}
})
})(k);
}
}
function initMethods() {
for(var k in vm._methods){
vm[k] = vm._methods[k];
}
}
return Vue;
})();