javascript - 事件函數(shù)中this指向
問(wèn)題描述
<!DOCTYPE HTML><html lang='en-US'><head> <meta charset='UTF-8'> <title></title></head><body><h2 onmousedown = 'f1(this)'>事件中的this</h2> <script type='text/javascript'>var h2 = document.getElementsByTagName(’h2’)[0];//HTML方式綁定function f1(obj){ console.log(obj);}f1( this );/*//DOM 0級(jí)綁定方式h2.onclick = function(){ console.log(this);}//DOM 2級(jí)方式h2.addEventListener(’mouseover’,function(){ console.log(this);});*/ </script> </body></html>
問(wèn)題解答
回答1:javascript的this跟函數(shù)定義在哪里無(wú)關(guān),跟誰(shuí)調(diào)用它有關(guān)。
回答2:h2那里因?yàn)槭墙壎ㄔ谑录系模虼?this 指向的是這個(gè)元素,你可以簡(jiǎn)單理解為是
var dom = document.getElementsByTagName(’h2’)dom.onmousedown = function(){ f1(this)}回答3:
http://www.cnblogs.com/soulii...看看這個(gè)
回答4:前者相當(dāng)于`請(qǐng)輸入代碼
var h2 = document.querySelectorAll('h2')[0];function fn(){ console.log(this);}h2.onmousedown = fn;window.fn();
this指向調(diào)用它的對(duì)象,你定義在全局環(huán)境里的變量和函數(shù)默認(rèn)是window對(duì)象下得屬性和方法,所以當(dāng)你在全局環(huán)境中執(zhí)行fn()時(shí)this指向window
回答5:你獲取到哪個(gè)dom,就是對(duì)應(yīng)的this。
回答6:這兩個(gè)不是一回事呀。
<h2 onmousedown='f1(this)'></h2>h2.onmouseover=f1()h2.addEventListern(f1)
這三種方式都是為h2綁定了一個(gè)mouseover事件發(fā)生時(shí)的名為f1回調(diào)函數(shù),事件綁定的回調(diào)函數(shù)指向DOM元素本身。
你問(wèn)題中的
//HTML方式綁定function f1(obj){ console.log(obj);}f1( this );
這段程序是在window作用域下運(yùn)行的,this自然就指向window。這段代碼跟h2無(wú)關(guān)了(未綁定)。
相關(guān)文章:
1. 為什么我ping不通我的docker容器呢???2. java - 自己制作一個(gè)視頻播放器,遇到問(wèn)題,用的是內(nèi)置surfaceview類,具體看代碼!3. 服務(wù)器端 - 采用nginx做web服務(wù)器,C++開發(fā)應(yīng)用程序 出現(xiàn)拒絕連接請(qǐng)求?4. javascript - 有什么兼容性比較好的辦法來(lái)判斷瀏覽器窗口的類型?5. 關(guān)于docker下的nginx壓力測(cè)試6. javascript - vue 移動(dòng)端的input 數(shù)字輸入優(yōu)化7. javascript - Angular controlller控制域和原生js的關(guān)系8. javascript - npm start 運(yùn)行’webpack-dev-server’報(bào)錯(cuò) Cannot find module ’webpack’9. HTML5禁止img預(yù)覽該怎么解決?10. python - pandas按照列A和列B分組,將列C求平均數(shù),怎樣才能生成一個(gè)列A,B,C的dataframe
