1. Vue 创建实例时,会自动为 methods 绑定当前实例 this
      保证在事件监听时,回调始终指向当前组件实例
      方法要避免使用箭头函数,箭头函数会阻止 Vue 正确绑定组件实例 this

    2. 在 template 中 @click=”changeTitle(‘This is your TITLE’)”
      函数名 + (),() 不是执行符号,而是传入实参的容器
      真正的事件处理函数是 onclick = “() => changeTitle(‘This is your TITLE’)”

    3. 可以在视图模板中 {{}} 中使用,但注意模板直接调用的方法尽量避免副作用操作

    4. 实例中直接挂载 methods 中的每一个方法

    • 实际编译的时候会被处理掉,即 methods 只是开发者写方法的一个容器

      1. var Vue = (function() {
      2. function Vue(options) {
      3. this.$data = options.data();
      4. this._methods = options.methods;
      5. this._init(this);
      6. }
      7. Vue.prototype._init = function(vm) {
      8. initData(vm);
      9. initMethods(vm);
      10. }
      11. function initData(vm) {
      12. for(var k in vm.$data){
      13. (function(k) {
      14. Object.defineProperty(vm, k, {
      15. get: function() {
      16. return vm.$data[k];
      17. },
      18. set: function(newValue) {
      19. vm.$data[k] = newValue;
      20. }
      21. })
      22. })(k);
      23. }
      24. }
      25. function initMethods() {
      26. for(var k in vm._methods){
      27. vm[k] = vm._methods[k];
      28. }
      29. }
      30. return Vue;
      31. })();