中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

探尋JavaScript中this指針指向
來(lái)源:易賢網(wǎng) 閱讀:935 次 日期:2016-07-06 15:54:55
溫馨提示:易賢網(wǎng)小編為您整理了“探尋JavaScript中this指針指向”,方便廣大網(wǎng)友查閱!

JavaScript由于其在運(yùn)行期進(jìn)行綁定的特性,JavaScript 中的 this 可以是全局對(duì)象、當(dāng)前對(duì)象或者任意對(duì)象,這完全取決于函數(shù)的調(diào)用方式。

探尋JavaScript中this指針指向

首先必須要說(shuō)的是,this的指向在函數(shù)定義的時(shí)候是確定不了的,只有函數(shù)執(zhí)行的時(shí)候才能確定this到底指向誰(shuí),實(shí)際上this的最終指向的是那個(gè)調(diào)用它的對(duì)象(這句話有些問(wèn)題,后面會(huì)解釋為什么會(huì)有問(wèn)題,雖然網(wǎng)上大部分的文章都是這樣說(shuō)的,雖然在很多情況下那樣去理解不會(huì)出什么問(wèn)題,但是實(shí)際上那樣理解是不準(zhǔn)確的,所以在你理解this的時(shí)候會(huì)有種琢磨不透的感覺),那么接下來(lái)我會(huì)深入的探討這個(gè)問(wèn)題。

為什么要學(xué)習(xí)this?如果你學(xué)過(guò)函數(shù)式編程,面向?qū)ο缶幊蹋悄憧隙ㄖ栏墒裁从玫模绻銢]有學(xué)過(guò),那么暫時(shí)可以不用看這篇文章,當(dāng)然如果你有興趣也可以看看,畢竟這是js中必須要掌握的東西。

例子1:

function a(){

  var user = "追夢(mèng)子";

  console.log(this.user); //undefined

  console.log(this); //Window

}

a();

按照我們上面說(shuō)的this最終指向的是調(diào)用它的對(duì)象,這里的函數(shù)a實(shí)際是被Window對(duì)象所點(diǎn)出來(lái)的,下面的代碼就可以證明。

function a(){

  var user = "追夢(mèng)子";

  console.log(this.user); //undefined

  console.log(this);  //Window

}

window.a();

和上面代碼一樣吧,其實(shí)alert也是window的一個(gè)屬性,也是window點(diǎn)出來(lái)的。

例子2:

var o = {

  user:"追夢(mèng)子",

  fn:function(){

    console.log(this.user); //追夢(mèng)子

  }

}

o.fn();

這里的this指向的是對(duì)象o,因?yàn)槟阏{(diào)用這個(gè)fn是通過(guò)o.fn()執(zhí)行的,那自然指向就是對(duì)象o,這里再次強(qiáng)調(diào)一點(diǎn),this的指向在函數(shù)創(chuàng)建的時(shí)候是決定不了的,在調(diào)用的時(shí)候才能決定,誰(shuí)調(diào)用的就指向誰(shuí),一定要搞清楚這個(gè)。

其實(shí)例子1和例子2說(shuō)的并不夠準(zhǔn)確,下面這個(gè)例子就可以推翻上面的理論。

如果要徹底的搞懂this必須看接下來(lái)的幾個(gè)例子

例子3:

var o = { user:"追夢(mèng)子", 

fn:function()

{ console.log(this.user); //追夢(mèng)子 } } 

window.o.fn();

這段代碼和上面的那段代碼幾乎是一樣的,但是這里的this為什么不是指向window,如果按照上面的理論,最終this指向的是調(diào)用它的對(duì)象,這里先說(shuō)個(gè)而外話,window是js中的全局對(duì)象,我們創(chuàng)建的變量實(shí)際上是給window添加屬性,所以這里可以用window點(diǎn)o對(duì)象。

這里先不解釋為什么上面的那段代碼this為什么沒有指向window,我們?cè)賮?lái)看一段代碼。

var o = {

  a:10,

  b:{

    a:12,

    fn:function(){

      console.log(this.a); //12

    }

  }

}

o.b.fn();

這里同樣也是對(duì)象o點(diǎn)出來(lái)的,但是同樣this并沒有執(zhí)行它,那你肯定會(huì)說(shuō)我一開始說(shuō)的那些不就都是錯(cuò)誤的嗎?其實(shí)也不是,只是一開始說(shuō)的不準(zhǔn)確,接下來(lái)我將補(bǔ)充一句話,我相信你就可以徹底的理解this的指向的問(wèn)題。

情況1:如果一個(gè)函數(shù)中有this,但是它沒有被上一級(jí)的對(duì)象所調(diào)用,那么this指向的就是window,這里需要說(shuō)明的是在js的嚴(yán)格版中this指向的不是window,但是我們這里不探討嚴(yán)格版的問(wèn)題,你想了解可以自行上網(wǎng)查找。

情況2:如果一個(gè)函數(shù)中有this,這個(gè)函數(shù)有被上一級(jí)的對(duì)象所調(diào)用,那么this指向的就是上一級(jí)的對(duì)象。

情況3:如果一個(gè)函數(shù)中有this,這個(gè)函數(shù)中包含多個(gè)對(duì)象,盡管這個(gè)函數(shù)是被最外層的對(duì)象所調(diào)用,this指向的也只是它上一級(jí)的對(duì)象,例子3可以證明,如果不相信,那么接下來(lái)我們繼續(xù)看幾個(gè)例子。

var o = {

  a:10,

  b:{

    // a:12,

    fn:function(){

      console.log(this.a); //undefined

    }

  }

}

o.b.fn();

盡管對(duì)象b中沒有屬性a,這個(gè)this指向的也是對(duì)象b,因?yàn)閠his只會(huì)指向它的上一級(jí)對(duì)象,不管這個(gè)對(duì)象中有沒有this要的東西。

還有一種比較特殊的情況,例子4:

var o = {

  a:10,

  b:{

    a:12,

    fn:function(){

      console.log(this.a); //undefined

      console.log(this); //window

    }

  }

}

var j = o.b.fn;

j();

這里this指向的是window,是不是有些蒙了?其實(shí)是因?yàn)槟銢]有理解一句話,這句話同樣至關(guān)重要。

this永遠(yuǎn)指向的是最后調(diào)用它的對(duì)象,也就是看它執(zhí)行的時(shí)候是誰(shuí)調(diào)用的,例子4中雖然函數(shù)fn是被對(duì)象b所引用,但是在將fn賦值給變量j的時(shí)候并沒有執(zhí)行所以最終指向的是window,這和例子3是不一樣的,例子3是直接執(zhí)行了fn。

this講來(lái)講去其實(shí)就是那么一回事,只不過(guò)在不同的情況下指向的會(huì)有些不同,上面的總結(jié)每個(gè)地方都有些小錯(cuò)誤,也不能說(shuō)是錯(cuò)誤,而是在不同環(huán)境下情況就會(huì)有不同,所以我也沒有辦法一次解釋清楚,只能你慢慢地的去體會(huì)。

構(gòu)造函數(shù)版this:

function Fn(){

  this.user = "追夢(mèng)子";

}

var a = new Fn();

console.log(a.user); //追夢(mèng)子

這里之所以對(duì)象a可以點(diǎn)出函數(shù)Fn里面的user是因?yàn)閚ew關(guān)鍵字可以改變this的指向,將這個(gè)this指向?qū)ο骯,為什么我說(shuō)a是對(duì)象,因?yàn)橛昧薾ew關(guān)鍵字就是創(chuàng)建一個(gè)對(duì)象實(shí)例,理解這句話可以想想我們的例子3,我們這里用變量a創(chuàng)建了一個(gè)Fn的實(shí)例(相當(dāng)于復(fù)制了一份Fn到對(duì)象a里面),此時(shí)僅僅只是創(chuàng)建,并沒有執(zhí)行,而調(diào)用這個(gè)函數(shù)Fn的是對(duì)象a,那么this指向的自然是對(duì)象a,那么為什么對(duì)象Fn中會(huì)有user,因?yàn)槟阋呀?jīng)復(fù)制了一份Fn函數(shù)到對(duì)象a中,用了new關(guān)鍵字就等同于復(fù)制了一份。

除了上面的這些以外,我們還可以自行改變this的指向,關(guān)于自行改變this的指向請(qǐng)看JavaScript中call,apply,bind方法的總結(jié)這篇文章,詳細(xì)的說(shuō)明了我們?nèi)绾问謩?dòng)更改this的指向。

更新一個(gè)小問(wèn)題當(dāng)this碰到return時(shí)

function fn() 

  this.user = '追夢(mèng)子'; 

  return {}; 

}

var a = new fn; 

console.log(a.user); //undefined

再看一個(gè)

function fn() 

  this.user = '追夢(mèng)子'; 

  return function(){};

}

var a = new fn; 

console.log(a.user); //undefined

再來(lái)

function fn() 

  this.user = '追夢(mèng)子'; 

  return 1;

}

var a = new fn; 

console.log(a.user); //追夢(mèng)子

function fn() 

  this.user = '追夢(mèng)子'; 

  return undefined;

}

var a = new fn; 

console.log(a.user); //追夢(mèng)子

什么意思呢?

如果返回值是一個(gè)對(duì)象,那么this指向的就是那個(gè)返回的對(duì)象,如果返回值不是一個(gè)對(duì)象那么this還是指向函數(shù)的實(shí)例。

function fn() 

  this.user = '追夢(mèng)子'; 

  return undefined;

}

var a = new fn; 

console.log(a); //fn {user: "追夢(mèng)子"}

還有一點(diǎn)就是雖然null也是對(duì)象,但是在這里this還是指向那個(gè)函數(shù)的實(shí)例,因?yàn)閚ull比較特殊。

function fn() 

  this.user = '追夢(mèng)子'; 

  return null;

}

var a = new fn; 

console.log(a.user); //追夢(mèng)子

知識(shí)點(diǎn)補(bǔ)充:

1.在嚴(yán)格版中的默認(rèn)的this不再是window,而是undefined。

2.new操作符會(huì)改變函數(shù)this的指向問(wèn)題,雖然我們上面講解過(guò)了,但是并沒有深入的討論這個(gè)問(wèn)題,網(wǎng)上也很少說(shuō),所以在這里有必要說(shuō)一下。

function fn(){

  this.num = 1;

}

var a = new fn();

console.log(a.num); //1

為什么this會(huì)指向a?首先new關(guān)鍵字會(huì)創(chuàng)建一個(gè)空的對(duì)象,然后會(huì)自動(dòng)調(diào)用一個(gè)函數(shù)apply方法,將this指向這個(gè)空對(duì)象,這樣的話函數(shù)內(nèi)部的this就會(huì)被這個(gè)空的對(duì)象替代。

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:探尋JavaScript中this指針指向
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国内精品久久久久影院优| 亚洲天堂免费在线观看视频| 蜜桃av噜噜一区二区三区| 亚洲美女黄色| 久久精品视频导航| 国产精品va在线播放我和闺蜜| 久久精品1区| 欧美视频在线不卡| 亚洲国产中文字幕在线观看| 国产人成一区二区三区影院| 国产精品家教| 国产精品夜夜夜| 羞羞漫画18久久大片| 国产精品乱码久久久久久| 亚洲精品一区二区三区蜜桃久| 韩国精品一区二区三区| 伊人蜜桃色噜噜激情综合| 激情综合久久| 久久午夜电影网| 亚洲国产三级在线| 亚洲午夜在线观看视频在线| 在线视频精品| 国产午夜亚洲精品理论片色戒| 国产伪娘ts一区| 欧美在线视频免费播放| 亚洲精品久久| 嫩草伊人久久精品少妇av杨幂| 国内不卡一区二区三区| 亚洲福利在线视频| 99re66热这里只有精品4| 国产精品久久久久久影院8一贰佰| 国产精品男人爽免费视频1| 国产精品日韩一区二区三区| 久久久www免费人成黑人精品| 久久性天堂网| 欧美日韩国产成人精品| 国产欧美一区二区三区在线老狼| 一色屋精品视频免费看| 9色国产精品| 久久久久网站| 亚洲欧美日韩精品综合在线观看 | 99精品久久久| 久久久久国产免费免费| 亚洲在线视频| 欧美日韩久久精品| 亚洲人体大胆视频| 久久综合狠狠综合久久激情| 亚洲欧美一区二区视频| 亚洲国产欧美一区二区三区同亚洲| 国产精品黄色| 亚洲精品久久久久久一区二区 | 国产午夜精品全部视频播放| 亚洲国内自拍| 猛干欧美女孩| 国产一区二区成人| 久久九九免费| 欧美四级剧情无删版影片| 亚洲破处大片| 亚洲国产成人不卡| 美女91精品| 欧美aaa级| 欧美精品一区三区| 欧美—级高清免费播放| 亚洲人体一区| 亚洲国产精品一区二区第四页av| 久久国产视频网站| 亚洲一区二区三区四区五区黄| 一区二区三区.www| 一区二区三区国产在线| 在线视频精品一区| 欧美影院精品一区| 模特精品在线| 亚洲图片欧美一区| 国产欧美日韩精品专区| 欧美大成色www永久网站婷| 亚洲欧美日韩在线综合| 亚洲大胆美女视频| 国产精品高潮呻吟久久av无限| 欧美综合激情网| 亚洲午夜精品一区二区| 亚洲国产精品福利| 国产午夜亚洲精品不卡| 欧美色综合网| 欧美 日韩 国产 一区| 欧美一区二区在线播放| 亚洲性色视频| 在线一区日本视频| 亚洲美女av电影| 黑人一区二区| 国产日本欧美在线观看| 欧美日韩精品久久久| 欧美韩日一区| 久久精品成人| 亚洲在线观看视频| 亚洲国内自拍| 国产日韩欧美一区在线| 国产精品入口麻豆原神| 美女网站在线免费欧美精品| 亚洲午夜未删减在线观看| 在线观看91精品国产入口| 国产精品视频999| 国产精品国产三级国产专播精品人 | 国产日韩精品入口| 欧美精品日韩综合在线| 久久精品一区二区国产| 亚洲综合不卡| 亚洲午夜精品在线| 在线看一区二区| 国内外成人免费激情在线视频网站 | 免费精品99久久国产综合精品| 亚洲欧美三级在线| 亚洲欧美综合精品久久成人| 99精品热6080yy久久| 中日韩高清电影网| 亚洲网站视频| 这里只有精品丝袜| 中文亚洲免费| 亚洲视频电影图片偷拍一区| 亚洲精品一区二区三区av| 亚洲欧洲综合另类在线| 亚洲国产精品一区二区www| 亚洲国产综合在线| 亚洲精品中文在线| 亚洲黄色一区| 亚洲精品久久久久| 亚洲欧美日本在线| 麻豆精品国产91久久久久久| 欧美电影免费观看网站| 欧美紧缚bdsm在线视频| 欧美激情精品久久久六区热门| 欧美成人福利视频| 国产精品国产三级欧美二区| 国产精品影音先锋| 韩国一区二区三区在线观看| 国内精品模特av私拍在线观看| 一区二区视频免费完整版观看| 91久久国产综合久久| 亚洲视频每日更新| 欧美一区二区三区男人的天堂| 中文日韩在线| 欧美在线国产精品| 欧美黄网免费在线观看| 欧美日韩成人一区| 国产精品视频专区| 黄色成人av| av成人老司机| 久久综合中文字幕| 国产精品一区二区在线观看| 日韩视频在线免费| 久久嫩草精品久久久精品| 国产精品乱人伦一区二区| 亚洲大黄网站| 亚洲欧美日韩一区二区在线| 欧美另类一区| 一区在线电影| 久久久久在线| 国产精品久久久久一区二区三区 | 国产精品扒开腿做爽爽爽软件| 精品99一区二区| 亚洲午夜av在线| 欧美日韩在线播放一区二区| 狠色狠色综合久久| 亚洲欧美日韩精品久久久| 欧美激情综合五月色丁香| 国产偷国产偷精品高清尤物| 亚洲视频精选| 欧美午夜不卡影院在线观看完整版免费| 亚洲高清在线| 奶水喷射视频一区| 亚洲国产欧美另类丝袜| 猛男gaygay欧美视频| 在线免费观看一区二区三区| 久久青青草原一区二区| 黄色一区二区在线| 可以看av的网站久久看| 亚洲国产精品v| 欧美久久电影| aa国产精品| 欧美亚洲成人网| 亚洲综合色自拍一区| 国产精品自拍在线| 欧美一区二区三区四区在线观看地址| 国产精品jvid在线观看蜜臀| 亚洲天堂av在线免费| 国产精品欧美久久| 久久福利影视| 在线欧美视频| 欧美婷婷久久| 久久国产精品久久久久久电车 | 欧美精品在线网站| 99精品欧美一区| 欧美午夜一区二区| 亚洲欧美日韩国产中文在线| 国产亚洲精品久| 欧美高清视频| 午夜精品久久久久影视| 激情综合色丁香一区二区| 欧美精品精品一区| 欧美在线免费看| 日韩视频三区|