Vuemethods属性用于书写实例的事件处理方法,Vue在创建实例的时候会自动把methods绑定到当前实例的this中,写在mthods对象中的方法要避免使用「箭头函数」,箭头函数可能会影响到Vue正确的指向Vue的实例this

    1. let app = {
    2. template: `
    3. <h1>{{ title }}</h1>
    4. <button v-on:click="changeTitle('title')">change title</button>
    5. `,
    6. data() {
    7. return {
    8. title: "This is my title.",
    9. };
    10. },
    11. methods: {
    12. // 不推荐
    13. changeTitle: () => {
    14. this.title = "This is your title.";
    15. },
    16. },
    17. };

    Vue的模版中,函数名后面紧挨着()并不是执行符号,()内可以传递你想要的参数,这个过程会被编译为v-on:click="()=> changeTitle('title')"

    1. <button v-on:click="changeTitle('title')">change title</button>
    2. <!-- v-on:click="() => changeTitle('title')" -->

    Vue的实例中,虽然挂载了methods对象里面的方法,但是并没有像$data一样被抛出了,这是因为data属性被更改的时候$data也会被更改,所以必须要暴露出来,而methods本身就是一些方法的集合容器,直接挂载到实例上能够调用就可以了,没必要暴露出来。
    Xnip2023-01-09_15-28-08.jpg