var this_ = this 这句不懂,如果不加这句,直接this.content,这个this的作用域难道不是组件全局作用域么??
来源:4-5 非父子组件间的传值
慕勒7399515
2018-04-14
var this_ = this 这句不懂,如果不加这句,直接this.content,这个this的作用域难道不是组件全局作用域么??
或者说,能解释下,this_.content和this.content的作用域分别在哪吧。
7回答
-
K丶L
2018-04-19
this.bus.$on('change', callback)这句代码改变了this指向,this的绑定主要有四种情况:默认、隐式、显式、new。而这种情况是this.bus调用了callback函数,对象调用方法属于隐式绑定,按照隐式绑定的规则,callback中this的指向调用它的对象,即this.bus这个vue实例。
尝试输出两个this,你可以发现其实这两个this都指向Vue实例,但是又是不同的Vue实例。
callback中的this指向原来this指向的Vue实例中的bus属性,而bus属性又是一个Vue实例,所以会导致这种现象。
为了避免this指向混乱,可以使用es6中的箭头函数
this.bus.$on('change',(msg) => {})
612018-04-20 -
Dell
2018-05-24
关于这个问题我不想解释太多,你想学习this,自己打印一下this,然后去看this的文章介绍,网上有的是,这种基础的问题搞不清楚,我觉得不是学不会,是用不用心的问题。
00 -
weibo_沙漠海2969813_0
2018-05-23
mounted: function() { var _this = this; this.bus.$on('change',function(msg) { _this.selfContent = msg; }) }
this.bus 指向的是新的new Vue()实例,所以this.bus.$on回调函数里面的this会指向这个新的Vue实例,而非原Vue实例。
因此,this.bus回调函数里面想用原Vue实例,只能通过_this变量传递进去。
00 -
Dell
2018-04-21
能把对应的代码贴上来么,我看着代码来给大家讲解,看来大家js的基础有些欠缺啊
00 -
Dell
2018-04-21
你可以自己先分别打印看一下。然后我们围绕结果讨论
012018-04-21 -
Han
2018-04-16
同问,请老师解答
00 -
慕仔6385915
2018-04-14
在匿名函数中的this会指向全局的window对像
00
相似问题