設(shè)置Object默認(rèn)值

本篇比較短,記錄自己剛學(xué)到的設(shè)置對象默認(rèn)值

眾所周知對象是通過valueOf跟toString來轉(zhuǎn)換值的

var obj={
    valueOf:()=>{console.log('ValueOf');return {}},
    toString:()=>{console.log('String');return {}}
}

首先我們寫一個對象并添加valueOf跟toString屬性,先進(jìn)行number轉(zhuǎn)換

 +obj

可以看到先進(jìn)行了valueOf 然后是toString,最后報(bào)錯(因?yàn)閞eturn 被我修改了)

那么再進(jìn)行String轉(zhuǎn)換

String(obj)

那么就先進(jìn)行toString,當(dāng)然如果return一個隨意字符串就會終止這個過程

如果是對象自身隱式轉(zhuǎn)換,則是valurOf優(yōu)先

var obj={
    valueOf:()=>{console.log('ValueOf');return {}},
    toString:()=>{console.log('String');return 'a'}
}

console.log(obj=='1',obj==1,'1'==obj,1==obj)

為了防止報(bào)錯,給予了一個字符串a(chǎn)

那么ES6之后規(guī)定了一個ToPrimitive函數(shù),用來規(guī)定這個轉(zhuǎn)換規(guī)則,也可以看到報(bào)錯中出現(xiàn)了這個單詞

使用方法很簡單

var obj={
    [Symbol.toPrimitive](n){
        
    }
}

n的話是當(dāng)前的環(huán)境所指(Stirng or Number)

var obj={
    [Symbol.toPrimitive](n){
        console.log(n)
        if(n=='string'){
            return  'vue'
        }
        if(n=='number'){
            return 110
        }

            return true;
    }
} 

此時進(jìn)行一個number操作

console.log(+obj)

同樣的字符串操作(使用模板字符串)

console.log(`${obj}`)

默認(rèn)執(zhí)行

console.log(obj+'')  //此時就是default狀態(tài)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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