forked from dcloudio/uni-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.js
77 lines (64 loc) · 1.81 KB
/
util.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const _toString = Object.prototype.toString
const hasOwnProperty = Object.prototype.hasOwnProperty
const _completeValue = value => {
return value > 9 ? value : ('0' + value)
}
export function isFn (fn) {
return typeof fn === 'function'
}
export function isStr (str) {
return typeof str === 'string'
}
export function isPlainObject (obj) {
return _toString.call(obj) === '[object Object]'
}
export function hasOwn (obj, key) {
return hasOwnProperty.call(obj, key)
}
export function noop () {}
export function toRawType (val) {
return _toString.call(val).slice(8, -1)
}
/**
* Create a cached version of a pure function.
*/
export function cached (fn) {
const cache = Object.create(null)
return function cachedFn (str) {
const hit = cache[str]
return hit || (cache[str] = fn(str))
}
}
/**
* Camelize a hyphen-delimited string.
*/
const camelizeRE = /-(\w)/g
export const camelize = cached((str) => {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')
})
export function setProperties (item, props, propsData) {
props.forEach(function (name) {
if (hasOwn(propsData, name)) {
item[name] = propsData[name]
}
})
}
export function getLen (str = '') {
/* eslint-disable no-control-regex */
return ('' + str).replace(/[^\x00-\xff]/g, '**').length
}
export function formatDateTime ({
date = new Date(),
mode = 'date'
}) {
if (mode === 'time') {
return _completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes())
} else {
return date.getFullYear() + '-' + _completeValue(date.getMonth() + 1) + '-' + _completeValue(date.getDate())
}
}
export function updateElementStyle (element, styles) {
for (let attrName in styles) {
element.style[attrName] = styles[attrName]
}
}