摘要:的指向簡(jiǎn)單描述版函數(shù)的調(diào)用在的面向?qū)ο笾惺潜硎竞瘮?shù)調(diào)用相關(guān)聯(lián)的對(duì)象函數(shù)的上下文。結(jié)語(yǔ)關(guān)于的指向是前端面試中經(jīng)常出現(xiàn)的問(wèn)題,以上只是暫時(shí)簡(jiǎn)短總結(jié)了一下結(jié)果而已,后面會(huì)對(duì)各個(gè)函數(shù)調(diào)用的方式進(jìn)行深入解析。
this的指向(簡(jiǎn)單描述版) 函數(shù)的調(diào)用
在JS的面向?qū)ο笾?b>this是表示函數(shù)調(diào)用相關(guān)聯(lián)的對(duì)象(函數(shù)的上下文)。所以要想了解this的指向,我們先要清楚函數(shù)的調(diào)用的方式
1.作為函數(shù)調(diào)用
function add(a,b) { return a + b; } add(1,2);
以上代碼就是函數(shù)作為函數(shù)直接被調(diào)用,那么在這種情況下,函數(shù)上下文(this)就有兩種可能性質(zhì)
在瀏覽器環(huán)境中,this指向了window對(duì)象
在嚴(yán)格模式下將會(huì)是undefined
2.作為方法被調(diào)用
var method = {}; method.add = function () {}; method.add();
當(dāng)一個(gè)函數(shù)被賦值給一個(gè)對(duì)象屬性,并且通過(guò)對(duì)象屬性引用的方式時(shí)候,函數(shù)就會(huì)被作為對(duì)象的方法被調(diào)用。那么在這種情況下,this指向的就是引用該方法的宿主對(duì)象
3.作為構(gòu)造函數(shù)調(diào)用
let person = new Person();
在使用new的時(shí)候會(huì)有如下動(dòng)作
創(chuàng)建一個(gè)新對(duì)象
該對(duì)象作為this參數(shù)傳遞給構(gòu)造函數(shù),成為構(gòu)造函數(shù)的上下文
新構(gòu)造函數(shù)對(duì)象作為new的返回值
4.使用call,apply方法調(diào)用
function arguNum() { var result = 0; for(var i = 0; i < arguments.length; i++) { result += arguments[i]; } this.result = result; } var obj1 = {}; var obj2 = {}; arguNum.apply(obj1, [1,2,3]); // 6 arguNum.call(obj2, 1,2,3); // 6
使用call,apply可以改變this的指向,call&apply區(qū)別在于傳遞的參數(shù)是通過(guò)什么方式,call傳遞的是參數(shù)列表,apply傳遞的是一個(gè)數(shù)組。
結(jié)語(yǔ)關(guān)于this的指向是前端面試中經(jīng)常出現(xiàn)的問(wèn)題,以上只是暫時(shí)簡(jiǎn)短總結(jié)了一下結(jié)果而已,后面會(huì)對(duì)各個(gè)函數(shù)調(diào)用的方式進(jìn)行深入解析。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/100409.html
摘要:當(dāng)東西發(fā)售時(shí),就會(huì)打你的電話通知你,讓你來(lái)領(lǐng)取完成更新。其中涉及的幾個(gè)步驟,按上面的例子來(lái)轉(zhuǎn)化一下你買東西,就是你要使用數(shù)據(jù)你把電話給老板,電話就是你的,用于通知老板記下電話在電話本,就是把保存在中。剩下的步驟屬于依賴更新 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【...
閱讀 1559·2021-11-23 09:51
閱讀 1093·2021-10-12 10:12
閱讀 2812·2021-09-22 16:06
閱讀 3638·2019-08-30 15:56
閱讀 3462·2019-08-30 15:53
閱讀 3110·2019-08-29 16:29
閱讀 2362·2019-08-29 15:27
閱讀 2018·2019-08-26 10:49