JS中this指針指向

1.this的作用
function identify() {
return this.name.toUpperCase();
}
function sayHello() {
var greeting = "Hello, I'm " + identify.call( this );
console.log( greeting );
}
var person1= {
name: "Kyle"
};
var person2= {
name: "Reader"
};
identify.call( person1); // KYLE
identify.call( person2); // READER
sayHello.call( person1); // Hello, I'm KYLE
sayHello.call( person2); // Hello, I'm READER
用來(lái)綁定對(duì)象,進(jìn)行屬性和方法的操作。

順便說(shuō)一句:
JS中不在乎你寫成什么,而在于你把它看成什么。
個(gè)人認(rèn)為:萬(wàn)物皆為對(duì)象恨憎。對(duì)象內(nèi)部存在屬性和方法。

2.只有4種方式改變this指向

2.1 默認(rèn)綁定全局變量

這條規(guī)則是最常見(jiàn)的,也是默認(rèn)的塘幅。當(dāng)函數(shù)被單獨(dú)定義和調(diào)用的時(shí)候,應(yīng)用的規(guī)則就是綁定全局變量尿贫。如下: 
function fn() {
console.log( this.a );
}
var a = 2;
fn(); // 2 -- fn單獨(dú)調(diào)用电媳,this引用window

2.2 隱式綁定
 隱式調(diào)用的意思是,函數(shù)調(diào)用時(shí)擁有一個(gè)上下文對(duì)象庆亡,就好像這個(gè)函數(shù)是屬于該對(duì)象的一樣匾乓。
這里需要了解,函數(shù)內(nèi)部的this指向調(diào)用該函數(shù)的對(duì)象又谋。
例如:

 function fn() {
     console.log( this.a );
 }
 var obj = {
 a: 2,
 fn: fn
 };

obj.fn(); // 2 -- this引用obj拼缝。
 需要說(shuō)明的一點(diǎn)是娱局,最后一個(gè)調(diào)用該函數(shù)的對(duì)象是傳到函數(shù)的上下文對(duì)象

function fn() {
console.log( this.a );
}
var obj2 = {
a: 42,
fn: fn
};
var obj1 = {
a: 2,
obj2: obj2
};
obj1.obj2.fn(); // 42 -- this引用的是obj2.
  還有一點(diǎn)要說(shuō)明的是,失去隱式綁定的情況咧七,如下:
function fn() {
console.log( this.a );
}
var obj = {
a: 2,
fn: fn
};
var bar = obj.fn; // 函數(shù)引用傳遞
var a = "全局"; // 定義全局變量
bar(); // "全局"
  如上衰齐,第8行雖然有隱式綁定,但是它執(zhí)行的效果明顯是把fn賦給bar继阻。這樣bar執(zhí)行的時(shí)候耻涛,依然是默認(rèn)綁定全局變量,所以輸出結(jié)果如上瘟檩。

2.3 顯示綁定
  學(xué)過(guò)bind()\apply()\call()函數(shù)的都應(yīng)該知道抹缕,它接收的第一個(gè)參數(shù)即是上下文對(duì)象并將其賦給this∶⑴粒看下面的例子:
function fn() {
console.log( this.a );
}
var obj = {
a: 2
};
fn.call( obj ); // 2
  如果我們傳遞第一個(gè)值為簡(jiǎn)單值歉嗓,那么后臺(tái)會(huì)自動(dòng)轉(zhuǎn)換為對(duì)應(yīng)的封裝對(duì)象。如果傳遞為null背蟆,那么結(jié)果就是在綁定默認(rèn)全局變量鉴分,如:
function fn() {
console.log( this.a );
}
var obj = {
a: 2
};
var a = 10;
fn.call( null); // 10

其中call和apply作用相同,但是apply后面接偽數(shù)組[1,2,3]带膀,call后面接正規(guī)參數(shù)(a,b,c)或者數(shù)組[1,2,3]志珍。
而bind在ES5中提出,用來(lái)解決apply和call沒(méi)有解決的問(wèn)題垛叨。將方法執(zhí)行和this綁定分開伦糯。

2.4 new新對(duì)象綁定
  如果是一個(gè)構(gòu)造函數(shù),那么用new來(lái)調(diào)用嗽元,那么綁定的將是新創(chuàng)建的對(duì)象敛纲。如:
function fn(a) {
this.a = a;
}
var bar = new fn( 2 );
console.log( bar.a );// 2
  其實(shí)第四條和第三條是同樣的。new的過(guò)程中剂癌,自動(dòng)發(fā)生了call方法淤翔,進(jìn)行了this的綁定。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佩谷,一起剝皮案震驚了整個(gè)濱河市旁壮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谐檀,老刑警劉巖抡谐,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異桐猬,居然都是意外死亡麦撵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厦坛,“玉大人五垮,你說(shuō)我怎么就攤上這事《沤眨” “怎么了放仗?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撬碟。 經(jīng)常有香客問(wèn)我诞挨,道長(zhǎng),這世上最難降的妖魔是什么呢蛤? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任惶傻,我火速辦了婚禮,結(jié)果婚禮上其障,老公的妹妹穿的比我還像新娘银室。我一直安慰自己,他們只是感情好励翼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布蜈敢。 她就那樣靜靜地躺著,像睡著了一般汽抚。 火紅的嫁衣襯著肌膚如雪抓狭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天造烁,我揣著相機(jī)與錄音否过,去河邊找鬼。 笑死惭蟋,一個(gè)胖子當(dāng)著我的面吹牛苗桂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播告组,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼煤伟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惹谐?” 一聲冷哼從身側(cè)響起持偏,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驼卖,失蹤者是張志新(化名)和其女友劉穎氨肌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酌畜,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怎囚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恳守。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡考婴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出催烘,到底是詐尸還是另有隱情沥阱,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布伊群,位于F島的核電站考杉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舰始。R本人自食惡果不足惜崇棠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丸卷。 院中可真熱鬧枕稀,春花似錦、人聲如沸谜嫉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骄恶。三九已至食铐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間僧鲁,已是汗流浹背虐呻。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寞秃,地道東北人斟叼。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像春寿,于是被迫代替她去往敵國(guó)和親朗涩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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