vue源碼中的檢測(cè)方法的實(shí)現(xiàn)
判斷是否為undefined或null
const isDef = (v) => {
return v !== undefined && v !== null
}
判斷是否為Promise 函數(shù)
const isPromise = (val) => {
return (
val !== undefine &&
typeof val.then === 'function' &&
typeof val.catch === 'function'
)
}
判斷是否為簡(jiǎn)單數(shù)據(jù)類型
const isPrimitive (value) => {
return (
typeof value === 'string' ||
typeof value === 'number' ||
typeof value === 'symbol' ||
typeof value === 'boolean'
)
}
嚴(yán)格檢查復(fù)雜數(shù)據(jù)類型
const isPlainObject = (obj) => {
return Object.prototype.toString.call(obj) === '[object Object]'
}
const isRegExp = (v) => {
return Object.prototype.toString.call(v) === '[object RegExp]'
}
將駝峰字符串轉(zhuǎn)成連接符 magicEightTall 轉(zhuǎn)換成 magic-eight-tall
const hyphenateRE = /\B([A-Z])/g
const hyphenate = (str) => {
return str.replace(hyphenateRE, '-$1').toLowerCase()
}
將連接符轉(zhuǎn)成駝峰字符串 magic-eight-tall 轉(zhuǎn)換成 magicEightTall
const camelizeRE = /-(\w)/g
const camelize = (str) => {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')
}
如果不想重復(fù)轉(zhuǎn)換,可用以下方法調(diào)用轉(zhuǎn)換函數(shù)
const cached = (fn) => {
const cache = Object.create(null)
console.log(cache);
return ((str) => {
const hit = cache[str]
return hit || (cache[str] = fn(str))
})
};
例
const camelize = cached((str) => {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 在Vue項(xiàng)目中取消ESLint代碼檢測(cè)的步驟講解
- vue檢測(cè)對(duì)象和數(shù)組的變化分析
- Vue不能檢測(cè)到Object/Array更新的情況的解決
- 關(guān)于vue的語(yǔ)法規(guī)則檢測(cè)報(bào)錯(cuò)問(wèn)題的解決
- 去掉vue 中的代碼規(guī)范檢測(cè)兩種方法(Eslint驗(yàn)證)
- 解決Vue不能檢測(cè)數(shù)組或?qū)ο笞儎?dòng)的問(wèn)題
- vue將對(duì)象新增的屬性添加到檢測(cè)序列的方法
- 關(guān)于vue中watch檢測(cè)到不到對(duì)象屬性的變化的解決方法
- vue中遇到的坑之變化檢測(cè)問(wèn)題(數(shù)組相關(guān))
- Vue.js中數(shù)組變動(dòng)的檢測(cè)詳解
相關(guān)文章
Vue3中的setup執(zhí)行時(shí)機(jī)與注意點(diǎn)說(shuō)明
這篇文章主要介紹了Vue3中的setup執(zhí)行時(shí)機(jī)與注意點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
如何在vite初始化項(xiàng)目中安裝scss以及scss的使用
今天想要給vite項(xiàng)目,添加全局的scss變量文件引用,這樣我們?cè)谑褂胹css變量和函數(shù)的時(shí)候就不需要每個(gè)組件都取引用了,下面這篇文章主要給大家介紹了關(guān)于如何在vite初始化項(xiàng)目中安裝scss以及scss使用的相關(guān)資料,需要的朋友可以參考下2022-10-10
在Vue使用$attrs實(shí)現(xiàn)構(gòu)建高級(jí)組件
本文我們主要來(lái)看下Vue3中的$attrs屬性。首先,我們會(huì)介紹它的用途以及它的實(shí)現(xiàn)與Vue2有哪些不兩同點(diǎn),并通過(guò)事例來(lái)加深對(duì)它的理解2022-09-09
用vue2.0實(shí)現(xiàn)點(diǎn)擊選中active其他選項(xiàng)互斥的效果
這篇文章主要介紹了用vue2.0實(shí)現(xiàn)點(diǎn)擊選中active其他選項(xiàng)互斥的效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
vue使用recorder.js實(shí)現(xiàn)錄音功能
這篇文章主要為大家詳細(xì)介紹了vue使用recorder.js實(shí)現(xiàn)錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)預(yù)覽視頻封面組件示例詳解
這篇文章主要為大家介紹了vue實(shí)現(xiàn)鼠標(biāo)滑動(dòng)預(yù)覽視頻封面組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

