vue 中$on()的this问题

Vue.prototype.bus=new Vue();

    Vue.component('child',{
        template:`<div @click='handleClick'>{{text}}</div>`,
        props:{
            content:[String,Number]
        },
        data(){
            return {
                text:this.content
            }
        },
        methods:{
            handleClick(){
                this.bus.$emit('change',this.text)
            }
        },
        mounted(){
            var _this=this
            console.log(_this);
            this.bus.$on('change',function (msg) {
                    _this.text=msg
                    console.log(this);
            })
        }
    })
    var vm = new Vue({
        el:"#app",
    })

上面代码中的 this.bus.$on('change',function (msg) {

                    _this.text=msg
                    console.log(this);
            })
        }

里面的回调函数里面的this到底是指向谁?希望大佬帮忙解答一下,谢谢

阅读 6.3k
2 个回答
Vue.prototype.bus = new Vue(); // <- 指向这个实例

// 也就是说 
this.bus.$on('change',function (msg) {
                    _this.text=msg
                    console.log(this === _this.bus); // true
            })

是bus,一个被new 出来的空的Vue对象,因为这个事件的回调是由bus来调用的。
JSFiddle你可以对比一下控制台的log,bus是不具备VNode的

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