談一談js里面的this指向問題

? ? ?'前言 :

先來說一下this指向的問題 this指向在面試里面也會被經(jīng)常的被問到 在開發(fā)里面也會遇到一些this指向的問題

經(jīng)驗有限 不足之處還望各位大佬指出來。

1 當我們在一個script的便簽里面直接打印this的話。毫不疑問這個this會指向window ,就是當我們不對this進行任何操作或者綁定的話默認就是指向window

2 且看下面,我們來看一下,箭頭函數(shù)里面的this指向問題

?const?name='window';

??????const?obj={

??????????name:'我是對象的名字',

??????????showName(){//等同于 showName:function(){}

??????????????console.log(this.name)//打印出 '我是對象的名字'

??????????},

? ? ? ? showNameTest:()=>{console.log(this.name)}//這里會打印window

??????}

?obj.showName()//這里的this指向的就是obj這個對象? 既普通函數(shù)會對this做一個綁定既誰調(diào)用他 this就指向誰

obj.showNameTest()//這里的this會指向window 因為這里使用了箭頭函數(shù) 箭頭函數(shù)不會綁定this 箭頭函數(shù)里面的this只會和函數(shù)執(zhí)行時所在的區(qū)域有關?

那如果我們想用showName這個函數(shù)來打印 window 此時我們就可以借用 call

apply? bind這三個函數(shù)來處理了 這三個函數(shù)是用來改變this指向的?

obj.showName.call(window)//這里把window這個對象傳進去 使得函數(shù)內(nèi)部的this指向window

那我們可不可以?showNameTest()讓這個函數(shù)來打印obj的name呢 答案是不行的 通過這三個函數(shù)并沒有辦法改變箭頭函數(shù)里面的this指向

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • js三座大山:原型和原型鏈 作用域和閉包 異步和單線程引用類型:對象 數(shù)組 函數(shù) 因為指針引用的是一個空間 所以叫...
    悠哈121閱讀 624評論 0 11
  • 1.1 函數(shù)聲明 //ES5 function getSum(){} function (){}//匿名函數(shù) //...
    i_木木木木木閱讀 300評論 0 0
  • 日期:2019 年 9 月 5 日 this 指向問題 介紹 this 指向問題一直是 js 中一個令人頭疼的問題...
    五十嵐色葉閱讀 402評論 0 3
  • JS--this指向問題 1.function中的this在不同環(huán)境下的指向 事件調(diào)用環(huán)境:誰觸發(fā)的事件,函數(shù)里面...
    不禿頭的賴閱讀 354評論 0 1
  • ECMAScript - 學習筆記 ?? ??nvm node.js 包管理工具 nvm github[https:/...
    Super三腳貓閱讀 899評論 0 1

友情鏈接更多精彩內(nèi)容