搜尋

首頁  >  問答  >  主體

javascript - 事件函數中this指向

## 雷雷

欧阳克欧阳克2818 天前728

全部回覆(6)我來回復

  • 为情所困

    为情所困2017-06-26 10:54:55

    javascript的this跟函數定義在哪裡無關,跟誰呼叫它有關。

    回覆
    0
  • 高洛峰

    高洛峰2017-06-26 10:54:55

    h2那裡因為是綁定在事件上的,因此 this 指向的是這個元素,你可以簡單理解為是

    
    var dom = document.getElementsByTagName('h2')
    dom.onmousedown = function(){
        f1(this)
    }

    回覆
    0
  • 代言

    代言2017-06-26 10:54:55

    http://www.cnblogs.com/soulii...看看這個

    回覆
    0
  • 漂亮男人

    漂亮男人2017-06-26 10:54:55

    前者相當於`請輸入代碼

    var h2 = document.querySelectorAll("h2")[0];
    function fn(){
        console.log(this);
    }
    h2.onmousedown = fn;
    window.fn();

    this指向呼叫它的對象,你定義在全域環境裡的變數和函數預設是window對像下得屬性和方法,所以當你在全域環境中執行fn()時this指向window

    回覆
    0
  • 代言

    代言2017-06-26 10:54:55

    你取得到哪個dom,就是對應的this。

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-26 10:54:55

    這兩個不是一回事呀。

    <h2 onmousedown="f1(this)"></h2>
    h2.onmouseover=f1()
    h2.addEventListern(f1)

    這三種方式都是為h2綁定了一個mouseover事件發生時的名為f1回呼函數,事件綁定的回呼函數指向DOM元素本身。

    你問題中的

    //HTML方式绑定
    function f1(obj){
      console.log(obj);
    }
    f1( this );

    這段程式是在window作用域下運作的,this自然就指向window。這段程式碼跟h2無關了(未綁定)。

    回覆
    0
  • 取消回覆