this(1)

隨著函數(shù)使用場(chǎng)合的不同野来,this的值會(huì)發(fā)生變化厕鹃。但是有一個(gè)原則,那就是this指的是嬉愧,調(diào)用函數(shù)的那個(gè)對(duì)象

1.作為函數(shù)調(diào)用

在函數(shù)被直接調(diào)用時(shí)this綁定到全局對(duì)象贩挣。在瀏覽器中,window 就是該全局對(duì)象

console.log(this);

function fn1(){
    console.log(this);
}

fn1(); //window

內(nèi)部函數(shù)

函數(shù)嵌套產(chǎn)生的內(nèi)部函數(shù)的this不是其父函數(shù)没酣,仍然是全局變量

function fn0(){
    function fn(){
        console.log(this);
    }
    fn();
}
fn0();   //window

setTimeout王财、setInterval

這兩個(gè)方法執(zhí)行的函數(shù)this也是全局對(duì)象

document.addEventListener('click', function(e){
    console.log(this); 
    setTimeout(function(){
        console.log(this);   //window
    }, 200);
}, false);

注意 strict mode下,作為函數(shù)調(diào)用 this 就是 undefined

2 作為構(gòu)造函數(shù)調(diào)用

  • 所謂構(gòu)造函數(shù)四康,就是通過這個(gè)函數(shù)生成一個(gè)新對(duì)象(object)搪搏。這時(shí),this就指這個(gè)新對(duì)象
  • new 運(yùn)算符接受一個(gè)函數(shù) F 及其參數(shù):new F(arguments...)闪金。
  • 這一過程分為三步:

(1)創(chuàng)建類的實(shí)例疯溺。這步是把一個(gè)空的對(duì)象的 proto 屬性設(shè)置為 F.prototype 。

(2)初始化實(shí)例哎垦。函數(shù) F 被傳入?yún)?shù)并調(diào)用囱嫩,關(guān)鍵字 this 被設(shè)定為該實(shí)例。

(3)返回實(shí)例漏设。

范例

function Person(name){
    this.name = name;
}
Person.prototype.printName = function(){
    console.log(this.name);
};

var p1 = new Person('Byron');
var p2 = new Person('Casper');
var p3 = new Person('Vincent');

p1.printName();  \\Byron
p2.printName();  \\Casper
p3.printName();  \\Vincent

3 .作為對(duì)象方法調(diào)用

在 JavaScript 中墨闲,函數(shù)也是對(duì)象,因此函數(shù)可以作為一個(gè)對(duì)象的屬性郑口,此時(shí)該函數(shù)被稱為該對(duì)象的方法鸳碧,在使用這種調(diào)用方式時(shí),this 被自然綁定到該對(duì)象

var obj1 = {
    name: 'Byron',
    fn : function(){
        console.log(this);  
    }
};
obj1.fn();  \\obj1

注意

var obj1 = {
    name: 'Byron',
    fn : function(){
        console.log(this); 
    }
};
var fn2 = obj1.fn;
fn2();   \\window

4 DOM對(duì)象綁定事件

在事件處理程序中this代表事件源DOM對(duì)象(低版本IE有bug犬性,指向了window)

document.addEventListener('click', function(e){
    console.log(this);
    var _document = this;
    setTimeout(function(){
        console.log(this);
        console.log(_document);
    }, 200);
}, false);

jQuery Event Handler 中的 this

當(dāng)jQuery的調(diào)用處理程序時(shí)瞻离,this關(guān)鍵字指向的是當(dāng)前正在執(zhí)行事件的元素。對(duì)于直接事件而言乒裆,this 代表綁定事件的元素套利。對(duì)于代理事件而言,this 則代表了與 selector 相匹配的元素鹤耍。

$ul.on('click', 'li' , function(){
  console.log(this)
})

5 () => console.log(this) 箭頭函數(shù)不改變this

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肉迫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子稿黄,更是在濱河造成了極大的恐慌喊衫,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杆怕,死亡現(xiàn)場(chǎng)離奇詭異族购,居然都是意外死亡鼻听,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門联四,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撑教,你說我怎么就攤上這事朝墩。” “怎么了伟姐?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵收苏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我愤兵,道長(zhǎng)鹿霸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任秆乳,我火速辦了婚禮懦鼠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屹堰。我一直安慰自己肛冶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布扯键。 她就那樣靜靜地躺著睦袖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荣刑。 梳的紋絲不亂的頭發(fā)上馅笙,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音厉亏,去河邊找鬼董习。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叶堆,可吹牛的內(nèi)容都是我干的阱飘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼虱颗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沥匈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忘渔,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤高帖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后畦粮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體散址,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乖阵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了预麸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞪浸。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吏祸,靈堂內(nèi)的尸體忽然破棺而出对蒲,到底是詐尸還是另有隱情,我是刑警寧澤贡翘,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布蹈矮,位于F島的核電站,受9級(jí)特大地震影響鸣驱,放射性物質(zhì)發(fā)生泄漏泛鸟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一踊东、第九天 我趴在偏房一處隱蔽的房頂上張望北滥。 院中可真熱鬧,春花似錦递胧、人聲如沸碑韵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祝闻。三九已至,卻和暖如春遗菠,著一層夾襖步出監(jiān)牢的瞬間联喘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工辙纬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豁遭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓贺拣,卻偏偏與公主長(zhǎng)得像蓖谢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子譬涡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 一闪幽、this this的定義:隨著函數(shù)使用場(chǎng)合的不同,this的值也會(huì)發(fā)生變化涡匀。但是有一個(gè)總的原則盯腌,那就是this...
    黑色的五葉草閱讀 440評(píng)論 0 0
  • 1.概念 在JavaScript中,this 是指當(dāng)前函數(shù)中正在執(zhí)行的上下文環(huán)境陨瘩,因?yàn)檫@門語(yǔ)言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,135評(píng)論 0 2
  • 轉(zhuǎn)換為call/apply來看待this的值 徹底搞懂this 阮一峰-this原理 this 由于運(yùn)行期綁定的特...
    DeeJay_Y閱讀 752評(píng)論 0 0
  • 1. this之謎 在JavaScript中腕够,this是當(dāng)前執(zhí)行函數(shù)的上下文级乍。因?yàn)镴avaScript有4種不同的...
    百里少龍閱讀 1,010評(píng)論 0 3
  • 最近迷上了韓劇太陽(yáng)的后裔,剛開始是看到微博上宋仲基撩喬妹手機(jī)那一幕的動(dòng)態(tài)圖帚湘,這么新鮮有趣的撩妹手法對(duì)于我這種沒見過...
    瓜子花小姐閱讀 344評(píng)論 0 0