写了一段时间js,在this里虐了一番,写一点心得:
var a = {do_something: function(){console.log(this)}}
#直接在
function do_something2(){console.log(this)}
#这里调用a.do_something()输出的是a这个Object,其实就是是找的父级元素
同理直接调用do_something2()输出的则是整个window对象
var a = {test: '任意一个东西'}
function do_it(){console.log(this)}
$('#id1').on('click', do_it.bind(a))
#在绑定事件的时候,指定function可以给其指定this,这里就是给this指定成了a
#当然直接调用do_it()方法的时候 this还是window对象~
在直接call调用方法的时候也可以指定this,需要注意的是,call调用的function接收的参数是从第二个开始的
还有就是每个方法/回调的this都是不一样的,要传递this的时候需要理清思路:
<pre>
var rmAllSysNotice = function(){
var that = this;
var type = this.$notice.attr("data-value");
if(type ==="sys"){
this.deleteAllLocalSysMsgs(function(err,obj){
if(err){
alert("删除失败");
}else{
that.cache.setSysMsgs([]);
that.buildSysNotice();
}
})
}else{
this.cache.deleteCustomSysMsgs();
CustomMsg.clear_all(function(){that.buildCustomSysNotice(that)})
}
}
</pre>