最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【js學習筆記十三】前端中的this指向問題

2023-05-16 10:45 作者:前端程序猿歌謠  | 我要投稿

?

目錄


前言

導語

情況1 默認this指向

情況2 箭頭函數方式

注意

情況3 bind綁定

注意

情況4 new綁定 ?

注意

apply用法

call用法

注意

注意

情況5 對象.

注意

注意

情況6 直接調用


前言

我是歌謠 我有個兄弟 巔峰的時候排名c站總榜19 叫前端小歌謠 曾經我花了三年的時間創(chuàng)作了他 現在我要用五年的時間超越他 今天又是接近兄弟的一天人生難免坎坷 大不了從頭再來 歌謠的意志是永恒的 放棄很容易 但是堅持一定很酷

導語

大家好 我是歌謠 對于平時中的一些問題還是有必要自己總結 有時候自己不總結很難了解全部

編輯


情況1 默認this指向

console.log(this,"geyao") //window

直接在瀏覽器中 直接打印 找出this的指向是指向window

情況2 箭頭函數方式

?//箭頭函數 ? geyao=()=>{ ? ? console.log(this,"geyao")//window ? } ? geyao();

箭頭函數的指向指向外層的this

注意

//箭頭函數 ? geyao=()=>{ ? ? console.log(this,"geyao")//window ? } ?// ?geyao(); ? //箭頭函數不能作為構造函數 ? new geyao()

箭頭函數不能作為構造函數 報錯 Uncaught TypeError: geyao is not a constructor

情況3 bind綁定

//bind綁定 ?function geyao() { ? ?console.log(this)//geyao ?} ?geyao.bind("geyao").bind("fangfang")()

bind綁定以第一次綁定為準

注意

// 箭頭函數 ? geyao=()=>{ ? ? console.log(this,"geyao")//window ? } ? geyao.bind("geyao").bind("fangfang")()

箭頭函數中的this不會被修改

情況4 new綁定 ?

function geyao() { ? ?console.log(this,"geyao") //geyao{} ?} ?new geyao()

new 對象的this指向當前的geyao對象

注意

?//new優(yōu)先級大于bind ?function geyao() { ? ?console.log(this,"geyao") //geyao{} ?} ?fangfang= geyao.bind("fangfang") ?new fangfang();

new 的優(yōu)先級大于bind

apply用法

?//apply用法 ?function geyao(a,b){ ?return a+b; ? }function fangfang(a,b){ ?return a-b; ? }console.log(geyao.apply(fangfang,[4,2]));  //fangfang調用geyao的方法 6console.log(fangfang.apply(geyao,[4,2])); //geyao 調用fangfang的方法 2

call用法

?function geyao(a,b){ ?return a+b; ? }function fangfang(a,b){ ?return a-b; ? }//call用法var a1 = geyao.call(sub,4,2);//6

區(qū)別在于通過 apply 調用時實參是放到數組中的,而通過 call 調用時實參是逗號分隔的

注意

//箭頭函數的指向不會被apply改變geyao=()=>{ ? ? console.log(this,"geyao")//window ? } ? geyao.apply("fangfang")

箭頭函數的指向不會被apply影響

注意

function geyao(){ ? ? console.log(this,"geyao")//fangfang ? } ?fangfang= geyao.bind("fangfang") ?fangfang.apply("geyao")

bind中this不會被改變

情況5 對象.

function geyao() { ?console.log(this.fangfang) //fangfang} obj = { fangfang: "fangfang" } obj.geyao = geyao obj.geyao()

注意

geyao=()=>{ ?console.log(this.fangfang) //window undefined} obj = { fangfang: "fangfang" } obj.geyao = geyao obj.geyao()

箭頭函數的優(yōu)先級更高

注意

function geyao() { ?console.log(this) //fangfang} obj = { fangfang: "fangfang" } obj.geyao = geyao.bind("geyao") obj.geyao()

bind的優(yōu)先級比對象.高

情況6 直接調用

function geyao() { ?console.log(this) //windows}geyao()

全局調用直接指向windows


【js學習筆記十三】前端中的this指向問題的評論 (共 條)

分享到微博請遵守國家法律
洛扎县| 尉犁县| 阳泉市| 萨迦县| 黄梅县| 泸溪县| 西藏| 固始县| 历史| 滁州市| 秭归县| 虹口区| 图木舒克市| 三江| 腾冲县| 汽车| 合肥市| 陆良县| 阜城县| 崇文区| 靖边县| 南皮县| 眉山市| 普格县| 嘉祥县| 都匀市| 丹寨县| 遂宁市| 韩城市| 淳化县| 赤峰市| 襄垣县| 尚义县| 平阳县| 昌吉市| 长春市| 桐城市| 琼中| 八宿县| 隆安县| 陵川县|