国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

【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指向問題的評論 (共 條)

分享到微博請遵守國家法律
明光市| 从江县| 临海市| 章丘市| 德令哈市| 百色市| 隆林| 肃宁县| 新化县| 临桂县| 怀化市| 新宁县| 东平县| 泰宁县| 长海县| 台湾省| 岳普湖县| 屯门区| 永宁县| 石泉县| 自治县| 武胜县| 江门市| 天台县| 道孚县| 若尔盖县| 菏泽市| 宁武县| 溧水县| 临洮县| 邵阳市| 盐山县| 将乐县| 彭阳县| 衡阳县| 应用必备| 惠来县| 新平| 韶关市| 广平县| 广饶县|