04 JS 中的 this 對象

1.通常情況下

this 對象是在運行時基于函數(shù)的執(zhí)行環(huán)境綁定的软免。在全局函數(shù)中,this 等于 Window;而當函數(shù)被作為某個對象的方法調(diào)用時,this 等于那個對象卤妒∩蹋”

// 代碼示例 1
function myContext() {
    console.log(this);
}
myContext();
// Window {postMessage: ?, blur: ?, focus: ?, close: ?, parent: Window, …}

let obj1 = {
    name: 'obj1',
    myContext: function() {
        console.log(this);
    }
}
obj1.myContext();
// {name: "obj1", myContext: ?}

2.匿名函數(shù)中

匿名函數(shù)的執(zhí)行環(huán)境具有全局性,因此其 this 對象通常指向 Window则披。

// 代碼示例 2
var obj = {
    name: 'obj',
    myContext: function() {
        return function() {
            console.log(this);
        }
    }
}
obj.myContext()();
// Window {postMessage: ?, blur: ?, focus: ?, close: ?, parent: Window, …}

3.閉包訪問

閉包(匿名函數(shù))情況下共缕,如果想訪問作用域中的 arguments 對象,必須將該對象的引用保存到另一個閉包能夠訪問的變量中士复。

// 代碼示例 3
var name = 'window';
var obj = {
    name: 'obj',
    myContext: function() {
        return function() {
            console.log(this.name);
        }
    }
}
obj.myContext()();
// window

var obj = {
    name: 'obj',
    myContext: function() {
        var that = this;
        return function() {
            console.log(that.name);
        }
    }
}
obj.myContext()();
// obj

4.特殊情況

// 代碼示例 4
var name = 'The Window';

var obj = {
    name: 'obj',
    getName: function() {
        console.log(this.name);
    }
}
obj.getName();
// obj

(obj.getName = obj.getName)();
// The Window

上述代碼示例 4 中兩次執(zhí)行結(jié)果不同图谷。第二次執(zhí)行的代碼先執(zhí)行了一條賦值語句,然后再調(diào)用賦值后的結(jié)果阱洪。因為這個賦值表達式的值是函數(shù)本身便贵,所以 this 的值不能得到維持。???????????????

總結(jié)

一般情況下冗荸,this 對象的指向是由當前執(zhí)行環(huán)境決定的承璃。而匿名函數(shù)(閉包)的執(zhí)行環(huán)境具有全局性,所以如果想要訪問作用域中的 arguments 對象俏竞,可以將該對象的引用保存到閉包可以訪問到的變量中绸硕。

同時要注意,語法的細微變化魂毁,都可能意外改變 this 的指向玻佩。

注:文章參考總結(jié)自 《JavaScript 高級程序設(shè)計》(第 3 版)[美] Nicholas C.Zakas 著 第 182 頁。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末席楚,一起剝皮案震驚了整個濱河市咬崔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烦秩,老刑警劉巖垮斯,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異只祠,居然都是意外死亡兜蠕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門抛寝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熊杨,“玉大人,你說我怎么就攤上這事盗舰【Ц” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵钻趋,是天一觀的道長川陆。 經(jīng)常有香客問我,道長蛮位,這世上最難降的妖魔是什么较沪? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任鳞绕,我火速辦了婚禮,結(jié)果婚禮上尸曼,老公的妹妹穿的比我還像新娘猾昆。我一直安慰自己,他們只是感情好骡苞,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楷扬,像睡著了一般解幽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烘苹,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天躲株,我揣著相機與錄音,去河邊找鬼镣衡。 笑死霜定,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的廊鸥。 我是一名探鬼主播望浩,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惰说!你這毒婦竟也來了磨德?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤吆视,失蹤者是張志新(化名)和其女友劉穎典挑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啦吧,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡您觉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了授滓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳水。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褒墨,靈堂內(nèi)的尸體忽然破棺而出炫刷,到底是詐尸還是另有隱情,我是刑警寧澤郁妈,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布浑玛,位于F島的核電站,受9級特大地震影響噩咪,放射性物質(zhì)發(fā)生泄漏顾彰。R本人自食惡果不足惜极阅,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涨享。 院中可真熱鬧筋搏,春花似錦、人聲如沸厕隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吁讨。三九已至髓迎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間建丧,已是汗流浹背排龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翎朱,地道東北人橄维。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像拴曲,于是被迫代替她去往敵國和親争舞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 函數(shù)和對象 1疗韵、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念兑障。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,585評論 0 5
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,132評論 0 21
  • ??函數(shù)表達式是 JavaScript 中的一個既強大有容易令人困惑的特性。定義函數(shù)的的方式有兩種: 函數(shù)聲明者疤; ...
    霜天曉閱讀 819評論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,113評論 1 32
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔福澡,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,771評論 2 9