this的用法 - Javascript中this的疑問,函數作為某物件的方法調用,這時this就指這個上級物件。
淡淡烟草味
淡淡烟草味 2017-06-14 10:54:15
0
4
674

看到大神在介紹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

淡淡烟草味
淡淡烟草味

全部回覆(4)
过去多啦不再A梦

全域下this===window

漂亮男人

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

洪涛

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

仅有的幸福

要記住,另外一種呼叫方式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。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!