搜尋

首頁  >  問答  >  主體

this的用法 - Javascript中this的疑問,函數作為某物件的方法調用,這時this就指這個上級物件。

看到大神在介紹this的時候第二個使用環境,原文在此:
http://www.ruanyifeng.com/blo...
這裡的物件o應該就是this?如果是的話為什麼這樣最不全等?

function test(){
    console.log(this.x);
  }
  var o = {};
  o.x = 1;
  o.m = test;
   console.log(o.m());
   console.log(o===this);

輸出的分別是:
1
false

淡淡烟草味淡淡烟草味2756 天前708

全部回覆(4)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-14 10:56:15

    全域下this===window

    回覆
    0
  • 漂亮男人

    漂亮男人2017-06-14 10:56:15

    在全域環境下執行console.log()this當然指向window了;
    this指向的是函數目前的執行環境

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-14 10:56:15

    o.m()是隱式綁定this到o物件
    全域作用域下this指向全域物件

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-06-14 10:56:15

    要記住,另外一種呼叫方式func.call(context, x, m) 上面的兩種方式只是語法糖 可以透過「轉換程式碼」的方式如:

    function test(){
        console.log(this.x);
      } 

    等價於

    function test(){
        console.log(this.x);
      }
    test.call(undefined)

    按理說印出來的 this 應該就是 undefined 了吧
    但是瀏覽器裡有一條規則:

    如果你傳的 context 就 null 或 undefined,那麼 window 物件就是預設的 context(嚴格模式下預設 context 是 undefined)
    因此上面的this對應的應該是 window。

    回覆
    0
  • 取消回覆