寫了一段時間js菠劝,在this里虐了一番,寫一點(diǎn)心得:
var a = {do_something: function(){console.log(this)}}
#直接在
function do_something2(){console.log(this)}
#這里調(diào)用a.do_something()輸出的是a這個Object兔辅,其實(shí)就是是找的父級元素
同理直接調(diào)用do_something2()輸出的則是整個window對象
var a = {test: '任意一個東西'}
function do_it(){console.log(this)}
$('#id1').on('click', do_it.bind(a))
#在綁定事件的時候,指定function可以給其指定this,這里就是給this指定成了a
#當(dāng)然直接調(diào)用do_it()方法的時候 this還是window對象~
在直接call調(diào)用方法的時候也可以指定this次酌,需要注意的是酣栈,call調(diào)用的function接收的參數(shù)是從第二個開始的
還有就是每個方法/回調(diào)的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>