Vue里面的this到底是指代谁,是指代new出来的对象的全部信息嘛?

比如说

var vm = new Vue({
    el:"#app",
    data:{
        notices:[],
        id:"",
        title:"",
        content:"",
        type:1,
        status:0,
        pageCurrent:1,
        pageCount:0
    },
    methods:{
        doGetNotices(){
            let title = document.getElementById("titleId").value;
            pageCurrent=${this.pageCurrent}&title=${title}`;
            let url=`http://localhost/notice/`;
            axios.get(url,{
                params: {
                    pageCurrent: this.pageCurrent,
                    title:title
                }
            }).then(function (response) {
                let jsonResult=response.data;
                this.vm.notices = jsonResult.data.list
                console.log(jsonResult);
                this.vm.pageCurrent=jsonResult.data.pageNum;
                this.vm.pageCount=jsonResult.data.pages;
            })
        }
    }
})

这样的一串代码中为啥pageCurrent有的是this.vm.pageCurrent,有的又直接this.pageCurrent呢?

阅读 1.5k
1 个回答

.then 中的 this 指向全局对象,在浏览器中就是 window
所以这里的 this.vmwindow.vm,指的是上面声明的那个 var vm
这种写法是 Garbage,可移植性很差——这段代码像这样套在函数里就不行了:

document.onload = function() {
    // 把题干里的代码粘贴过来
}

正常使用的 this(即不需要用 this.vm 就能访问属性的那些)就是指的 vm

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题