mirror of https://github.com/vuejs/core.git
perf: optimize toDisplayString
This commit is contained in:
parent
11383ae72d
commit
1ef15c780f
|
@ -7,7 +7,6 @@ import {
|
|||
isObject,
|
||||
isPlainObject,
|
||||
isSet,
|
||||
isString,
|
||||
isSymbol,
|
||||
objectToString,
|
||||
} from './general'
|
||||
|
@ -22,17 +21,24 @@ const isRef = (val: any): val is { value: unknown } => {
|
|||
* @private
|
||||
*/
|
||||
export const toDisplayString = (val: unknown): string => {
|
||||
return isString(val)
|
||||
? val
|
||||
: val == null
|
||||
? ''
|
||||
: isArray(val) ||
|
||||
(isObject(val) &&
|
||||
(val.toString === objectToString || !isFunction(val.toString)))
|
||||
? isRef(val)
|
||||
? toDisplayString(val.value)
|
||||
: JSON.stringify(val, replacer, 2)
|
||||
: String(val)
|
||||
switch (typeof val) {
|
||||
case 'string':
|
||||
return val
|
||||
case 'object':
|
||||
if (val) {
|
||||
if (isRef(val)) {
|
||||
return toDisplayString(val.value)
|
||||
} else if (
|
||||
isArray(val) ||
|
||||
val.toString === objectToString ||
|
||||
!isFunction(val.toString)
|
||||
) {
|
||||
return JSON.stringify(val, replacer, 2)
|
||||
}
|
||||
}
|
||||
default:
|
||||
return val == null ? '' : String(val)
|
||||
}
|
||||
}
|
||||
|
||||
const replacer = (_key: string, val: unknown): any => {
|
||||
|
|
Loading…
Reference in New Issue