what's this

問答

1谴供、apply结闸、call 有什么作用,什么區(qū)別

apply和call的
作用:都是為了改變函數(shù)內部的this指向
區(qū)別:fn.call(this,arg1,arg2,arg3......)
fn.apply(this,argumentsArray)
call是單個單個傳入的聂抢,apply是用數(shù)組Array的形式傳入的參數(shù)。


代碼

1棠众、以下代碼輸出什么?

var john = { 
  firstName: "John" 
}
function func() { 
  alert(this.firstName + ": hi!")
}
john.sayHi = func
john.sayHi() 

alert

這里john.sayHi = func意味著讓window調用了這個函數(shù)對象琳疏,然后執(zhí)行john.sayHi()自然可以取到var john = { firstName: "John" }所定義的參數(shù)了。


2闸拿、下面代碼輸出什么空盼,為什么

func() 

function func() { 
  alert(this)
}
object-window.png

因為這是window調用的函數(shù)func,所以對象是window


3新荤、下面代碼輸出什么

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

fn0();//這里由全局調用函數(shù)揽趾,所以this是window


document.addEventListener('click', function(e){
    console.log(this);//document,這里的this指向的就是addEventListener的對象苛骨,也就是document
    setTimeout(function(){
        console.log(this);//window
    }, 200);
}, false);

setTimeout篱瞎、setInterval這兩個方法執(zhí)行函數(shù)對象調用的一定是全局對象

win-doc-win.png


4、下面代碼輸出什么痒芝,why

var john = { 
  firstName: "John" 
}

function func() { 
  alert( this.firstName )
}
func.call(john) 

用了.call()的方法俐筋,括號內傳入的就是this,這里指定了是Jhon严衬,所以alert的結果是Jhon

Jhon.png

5澄者、代碼輸出?

var john = { 
  firstName: "John",
  surname: "Smith"
}

function func(a, b) { 
  alert( this[a] + ' ' + this[b] )
}
func.call(john, 'firstName', 'surname') 

涉及到.call(this,argument1,argument2,...)的使用请琳,這里傳入對象this是john,然后參數(shù)分別是firstNamesurname

Jhon Smith.png


6粱挡、以下代碼有什么問題,如何修改

var module= {
  bind: function(){
    $btn.on('click', function(){
      console.log(this) //this指什么俄精,這里this就是指觸發(fā)事件的本身$btn
      this.showMsg();
    })
  },
  
  showMsg: function(){
    console.log('饑人谷');
  }
}

修改之后

<body>
<div id="btn">aaa</div>
<script>
    var $btn = $('#btn');
    var module = {
        bind: function () {
            var _this = this; //這里是關鍵保存住window的this
            $btn.on('click', function () {
                console.log(this); 
                _this.showMsg();//這里用了window.this
            })
        },
        showMsg: function () {
            console.log('饑人谷');//這里如果用$btn的this將無法調用
        }
    }
    module.bind();
</script>
</body>
呃...this gonna be happend
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末询筏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竖慧,更是在濱河造成了極大的恐慌嫌套,老刑警劉巖局冰,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灌危,居然都是意外死亡康二,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門勇蝙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沫勿,“玉大人,你說我怎么就攤上這事味混〔ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵翁锡,是天一觀的道長蔓挖。 經(jīng)常有香客問我,道長馆衔,這世上最難降的妖魔是什么瘟判? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮角溃,結果婚禮上拷获,老公的妹妹穿的比我還像新娘。我一直安慰自己减细,他們只是感情好匆瓜,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著未蝌,像睡著了一般驮吱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萧吠,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天左冬,我揣著相機與錄音,去河邊找鬼怎憋。 笑死又碌,一個胖子當著我的面吹牛,可吹牛的內容都是我干的绊袋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铸鹰,長吁一口氣:“原來是場噩夢啊……” “哼癌别!你這毒婦竟也來了?” 一聲冷哼從身側響起蹋笼,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤展姐,失蹤者是張志新(化名)和其女友劉穎躁垛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體圾笨,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡教馆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了擂达。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片土铺。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖板鬓,靈堂內的尸體忽然破棺而出悲敷,到底是詐尸還是另有隱情,我是刑警寧澤俭令,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布后德,位于F島的核電站,受9級特大地震影響抄腔,放射性物質發(fā)生泄漏瓢湃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一赫蛇、第九天 我趴在偏房一處隱蔽的房頂上張望箱季。 院中可真熱鬧,春花似錦棍掐、人聲如沸藏雏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掘殴。三九已至,卻和暖如春粟誓,著一層夾襖步出監(jiān)牢的瞬間奏寨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工鹰服, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留病瞳,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓悲酷,卻偏偏與公主長得像套菜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子设易,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容

  • 一逗柴、apply、call 有什么作用顿肺,什么區(qū)別戏溺? 1.二者都屬于function.prototype的一個方法渣蜗,以...
    咩咩咩1024閱讀 235評論 0 0
  • What's this? 由于運行期綁定的特性,JavaScript 中的 this 含義非常多旷祸,它可以是全局對象...
    yuhuan121閱讀 453評論 0 0
  • 目錄1.this究竟是什么2.綁定this的方法3.caller耕拷、arguments和callee 1.this究...
    犯迷糊的小羊閱讀 642評論 0 0
  • What's this? 由于運行期綁定的特性,JavaScript 中的 this 含義非常多托享,它可以是全局對象...
    cce117b0a0ce閱讀 321評論 0 0
  • 作為函數(shù)調用 在函數(shù)被直接調用時this綁定到全局對象骚烧。在瀏覽器中,window 就是該全局對象 作為內部函數(shù) 函...
    蓋被吹空調閱讀 349評論 0 1