JS 里的 this

this 總是返回一個(gè)對(duì)象;
this就是屬性或方法“當(dāng)前”所在的對(duì)象;
如果用一個(gè)對(duì)象調(diào)用一個(gè)函數(shù),那么這個(gè)對(duì)象就是 該函數(shù)里的 this;
改成 call() ,this 就是 call() 的第一個(gè)參數(shù);
箭頭函數(shù)沒有 this ,箭頭函數(shù)內(nèi)外 this 不變,向上找。

!function(){
  var view = document.querySelector('#topNavBar')
  var controller = {
    view: null,
    init: function(view){
      this.view = view
      this.bindEvents() 
      //轉(zhuǎn)換成 this.bindEvents.call(this),bindEvents() 里的 this 就是左邊的 this
    },
    bindEvents: function(){
      window.addEventListener('scroll', (x) => {
        if(window.scrollY > 0){
          this.active()
        }
        else{
          this.deactive()
        }
      })
    },
    active: function(){
      this.view.classList.add('sticky')
    },
    deactive: function(){
      this.view.classList.remove('sticky')
    }
  }
  controller.init(view) 
  //轉(zhuǎn)換成 controller.init.call(controller,view) ,init 函數(shù)里的 this 就是對(duì)象 controller
}.call()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 在我的徹底理解js的執(zhí)行上下文,以及變量對(duì)象中我說過,執(zhí)行上下文是在函數(shù)被調(diào)用的時(shí)候被創(chuàng)建的,其中包括創(chuàng)建變量對(duì)象...
    csRyan閱讀 1,441評(píng)論 1 11
  • 1. this之謎 在JavaScript中,this是當(dāng)前執(zhí)行函數(shù)的上下文。因?yàn)镴avaScript有4種不同的...
    百里少龍閱讀 1,104評(píng)論 0 3
  • 1.概念 在JavaScript中,this 是指當(dāng)前函數(shù)中正在執(zhí)行的上下文環(huán)境,因?yàn)檫@門語(yǔ)言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,251評(píng)論 0 2
  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    陳老板_閱讀 518評(píng)論 0 1
  • 明天體育考試,雖然一聽就知道不是什么好東西,但是,體育考試真的,我真的曾經(jīng)幻想自己能拿第一。 我以為自己每天跑步,...
    羋霓閱讀 208評(píng)論 0 0

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