關(guān)于this碉哑,關(guān)于你

0.前言
最近北京霧霾挺嚴重的挚币,希望程序員們注意身體啊?鄣洹W北稀!好了進入正題吧贮尖,我們在敲代碼中笛粘,常常會用到this,那么問題就來了湿硝,有時候你想的this應(yīng)該指的是什么薪前,但往往有的時候會和你想的不一樣,那么我們接下來就來看一下在不同的地方使用this代表的是什么意思.....
1.this定義

this 定義:this是包含它的函數(shù)作為方法被調(diào)用時所屬的對象关斜。

2.this的使用地方

1 普通場景下的函數(shù)this代表window
2 構(gòu)造函數(shù)中this代表新對象
3 對象內(nèi)部的函數(shù)屬性示括,函數(shù)內(nèi)this表示當(dāng)前對象
4 事件處理函數(shù),this表示當(dāng)前dom對象
5 call()與apply() this表示第一個參數(shù)

3.代碼實現(xiàn)
3. 1.1普通函數(shù)

在普通函數(shù)中this代表的是window蚤吹。

//1.普通函數(shù)
    function f1(){
        console.log(this);//輸出window
    }
    f1(); ```
3.1.2字面量方式創(chuàng)建一個匿名函數(shù)

在這個用字面量方式創(chuàng)建一個匿名函數(shù)中this也代表了window例诀。

//2.字面量方式創(chuàng)建一個匿名函數(shù)
    var f2 = function(){
        console.log(this);//輸出window
    };
    f2();
3.2構(gòu)造函數(shù)中的this代表新對象

Duang~~在構(gòu)造函數(shù)中this代表了Liu實例出來新的對象p随抠。

//構(gòu)造函數(shù)中this代表新對象
    function Liu(age,color,making){
        this.age = age;
        this.color = color;
        this.making = making;
            console.log(this);//輸出Liu {age: 18, color: "yellow", making: "wood"}
    }
    var p = new Liu(18,"yellow","wood");
    console.log(p);//輸出Liu {age: 18, color: "yellow", making: "wood"} 
3.3對象內(nèi)部的函數(shù)屬性裁着,函數(shù)內(nèi)this表示當(dāng)前對象
//3對象內(nèi)部的函數(shù)屬性,函數(shù)內(nèi)this表示當(dāng)前對象
    var person={
        name:"Mr_Liu",
        age:16,
        say:function(){
                console.log("我叫"+this.name);
                console.log(this);//輸出 Object {name: "Mr_Liu", age: 16}
        }
    }
    person.say();
3.4事件處理函數(shù)拱她,this表示當(dāng)前DOM對象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>關(guān)于this,關(guān)于你</title>
</head>
<body>
    <input type="button" id="btn1" value="按鈕">
    <script type="text/javascript">
        //4 事件處理函數(shù)二驰,this表示當(dāng)前dom對象
        document.getElementById("btn1").onclick = function(){
        console.log(this);//輸出 <input type="button" id="btn1" value="按鈕">
     }
    </script>
</body>
</html>

在事件處理函數(shù)中,首先秉沼,咱們得獲取到按鈕這個節(jié)點桶雀,然后給按鈕添加一個點擊事件矿酵,當(dāng)我們點擊按鈕的時候疲憋,事件處理函數(shù)中this代表的是DOM對象 <input type="button" id="btn1" value="按鈕"> 這個標(biāo)簽叹侄。

3.5 call() 與apply() 中的this代表第一個參數(shù)
var per1 = {
            name:"二雷",
            say: function(p1, p2){
                console.log("Hi, " + p1 + " and " + p2 + ", My name is " + this.name);
            },
        };
    per1.say("lilei", "hanmeimei");
    var per3 = {
        name: "三雷",
    };
per1.say.call(per3, "lilei", "hanmeimei");//輸出 Hi, lilei and hanmeimei, My name is 三雷
per1.say.apply(per3, ["lilei","hanmeimei"]);//輸出 Hi, lilei and hanmeimei, My name is 三雷

每個函數(shù)都有call()apply() 方法:

1、他們可以出觸發(fā)函數(shù)盐捷,并設(shè)置參數(shù)
2棘捣、讓一個對象去借用另一個對象的方法辜腺,讓另一個對象的方法為己所用

在上面咱們可以看出要想讓per3借用per1里面的方法為自己作用,我們就想起來用call()apply()的方法乍恐,當(dāng)我們per1調(diào)用say() 方法的時候this.name打印出來的是二雷,而當(dāng) per3call()apply()借用per1里面的say() 方法的時候评疗,this.name打印出來就是咱們調(diào)用call()和apply()里面?zhèn)魅氲牡谝粋€參數(shù)per3里面的三雷,那么結(jié)果就出來了茵烈,call() 與apply() 中的this代表第一個參數(shù)百匆。

apply與原理與call相似,不同之處在于給函數(shù)傳遞的參數(shù)的方式不一樣呜投。

4.后記

本文到這里也就結(jié)束了加匈,最后我希望我寫的文章對你有所幫助,如果你喜歡就帶走吧V姹搿>囟!點贊释漆,分享悲没。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市男图,隨后出現(xiàn)的幾起案子示姿,更是在濱河造成了極大的恐慌,老刑警劉巖逊笆,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栈戳,死亡現(xiàn)場離奇詭異,居然都是意外死亡难裆,警方通過查閱死者的電腦和手機子檀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乃戈,“玉大人褂痰,你說我怎么就攤上這事≈⒙牵” “怎么了缩歪?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谍憔。 經(jīng)常有香客問我匪蝙,道長主籍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任逛球,我火速辦了婚禮千元,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颤绕。我一直安慰自己诅炉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布屋厘。 她就那樣靜靜地躺著涕烧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汗洒。 梳的紋絲不亂的頭發(fā)上议纯,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音溢谤,去河邊找鬼瞻凤。 笑死,一個胖子當(dāng)著我的面吹牛世杀,可吹牛的內(nèi)容都是我干的阀参。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼瞻坝,長吁一口氣:“原來是場噩夢啊……” “哼蛛壳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起所刀,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤衙荐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浮创,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忧吟,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年斩披,在試婚紗的時候發(fā)現(xiàn)自己被綠了溜族。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡垦沉,死狀恐怖煌抒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乡话,我是刑警寧澤摧玫,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布耳奕,位于F島的核電站绑青,受9級特大地震影響诬像,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜闸婴,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一坏挠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邪乍,春花似錦降狠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吕晌,卻和暖如春蛋褥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睛驳。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工烙心, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏沸。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓淫茵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹬跃。 傳聞我的和親對象是個殘疾皇子匙瘪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

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