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

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

ES6類繼承問題

ES6類繼承問題

牧羊人nacy 2019-03-14 18:15:05
export default class Base extends Component<Props> {    constructor(props) {        super(props);        console.log("Base this",this)//打印this 可以看到箭頭函數(shù)showToast 但是不能看到renderModal    }    /*    *顯示Toast    * */    showToast=(msg)=>{        console.log("showToast",this)    }    /**     *顯示彈出框     * */    renderModal(contentView, visible, close, animation, customerlayout){     console.log("renderModal",this)    }    componentDidMount() {    }    componentWillUnmount() {    }}在子類中使用時(shí)super.renderModal("hahahhah")//正確 super.showToast("hahahhah")//報(bào)錯(cuò)如下打印base的this可以看到箭頭函數(shù)的名字求詳細(xì)解釋
查看完整描述

2 回答

?
猛跑小豬

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

這個(gè)和箭頭函數(shù)沒有關(guān)系。


其實(shí)只有第二種寫法是 es6 的 class 語法:


class Base {

    constructor() {

        console.log("constructor")

    }


    fn(){

     console.log("fn")

    }


}

而 class 本質(zhì)上還是 js 的原型鏈繼承,因此這個(gè)函數(shù)其實(shí)是在 class 實(shí)例的原型鏈上:

https://img1.sycdn.imooc.com//5c9b1fbb0001b13302820117.jpg

而 showToast=(msg)=>{} 語法,雖然 React-Native 可以使用,但是這個(gè)需要靠 babel 編譯。這個(gè)是 Stage 3 的提案 class-fields,也就是曾經(jīng)被廢棄的 Stage2 的 class-public-fields

你可以把字類的 2 個(gè) super 改成 this

this.renderModal("hahahhah")//正確

this.showToast("hahahhah")//報(bào)錯(cuò)如下


查看完整回答
反對(duì) 回復(fù) 2019-03-27
?
慕勒3428872

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

箭頭函數(shù)沒有自己的this。它的this并不是像你想的那樣指向當(dāng)前子類或base對(duì)象,而是在定義的時(shí)候的當(dāng)前對(duì)象。如果你是在全局作用域下創(chuàng)建的base類,那就是undefined。


查看完整回答
反對(duì) 回復(fù) 2019-03-27
  • 2 回答
  • 0 關(guān)注
  • 731 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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