第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JavaScript:箭頭函數(shù)中的 this 關(guān)鍵字訪問問題

JavaScript:箭頭函數(shù)中的 this 關(guān)鍵字訪問問題

開心每一天1111 2023-04-20 17:13:53
const user = {    name: "Praveen",    videos: ["html", "css", "js"],        greet() {        console.log(`welcome ${this.name}`);        const getVideos = () => {            console.log(`You have ${this.videos.length} videos`);        };        getVideos();      },    };user.greet();我可以訪問videos.length上面代碼中的值(我使用了箭頭函數(shù)),但我無法訪問videos.length下面代碼中的值:const user = {    name: "Praveen",    videos: ["html", "css", "js"],        greet() {        console.log(`welcome ${this.name}`);        const getVideos = function () {          console.log(`You have ${this.videos.length} videos`);        };        getVideos();      },    };user.greet();
查看完整描述

3 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

用關(guān)鍵字定義的函數(shù)function將有自己的this,而箭頭函數(shù)則沒有(doc)


因此,在您的情況下,當(dāng)您在示例 1 中使用箭頭函數(shù)時(shí),將this引用user,而在示例 2 中,this將引用getVideos


要解決此問題,您可以將this其存儲(chǔ)user到一個(gè)新變量中


const user = {

  name: "Praveen",

  videos: ["html", "css", "js"],


  greet() {

    console.log(`welcome ${this.name}`)

    const self = this // notice me

    const getVideos = function () {

      console.log(`You have ${self.videos.length} videos`)

    }

    getVideos()

  },

}

user.greet()

或者使用call然后將this參考應(yīng)用user到getVideos


const user = {

  name: "Praveen",

  videos: ["html", "css", "js"],


  greet() {

    console.log(`welcome ${this.name}`)

    const getVideos = function () {

      console.log(`You have ${this.videos.length} videos`)

    }

    getVideos.call(this) // notice me

  },

}

user.greet()


查看完整回答
反對(duì) 回復(fù) 2023-04-20
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

getVideos()在沒有上下文的情況下被調(diào)用,因此this指的是窗口對(duì)象。


解決此問題的首選方法是使用箭頭函數(shù),如第一個(gè)示例所示。


一個(gè)預(yù)箭頭功能的方法是做這樣的事情:


const user = {

  name: "Praveen",

  videos: ["html", "css", "js"],


  greet() {

    console.log(`welcome ${this.name}`);

    const that = this;  // <---- that now refers to this context

    const getVideos = function () {

      console.log(`You have ${that.videos.length} videos`);   // <--- use that instead of this

    };

    getVideos();

  },

};


查看完整回答
反對(duì) 回復(fù) 2023-04-20
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

在這里你應(yīng)該使用箭頭函數(shù)。這是使用 JavaScript 的 HTML 代碼


<!DOCTYPE html>

<html>

<head>

<script>

       const user = {

      name: "Praveen",

      videos: ["html", "css", "js"],

    

      greet() {

        console.log(`welcome ${this.name}`);

        const getVideos = () => {

          console.log(`You have ${this.videos.length} videos`);

        };

        getVideos();

      },

    };

    user.greet();

</script>

</head>

<body>


</body>

</html>


查看完整回答
反對(duì) 回復(fù) 2023-04-20
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)