UNPKG

1.33 kBJavaScriptView Raw
1var helperDeleteProperty = require('./helperDeleteProperty')
2
3var isPlainObject = require('./isPlainObject')
4var isObject = require('./isObject')
5var isArray = require('./isArray')
6var isNull = require('./isNull')
7var assign = require('./assign')
8var objectEach = require('./objectEach')
9
10/**
11 * 清空对象
12 *
13 * @param {Object} obj 对象
14 * @param {*} defs 默认值,如果不传(清空所有属性)、如果传对象(清空并继承)、如果传值(给所有赋值)
15 * @param {Object/Array} assigns 默认值
16 * @return {Object}
17 */
18function clear (obj, defs, assigns) {
19 if (obj) {
20 var len
21 var isDefs = arguments.length > 1 && (isNull(defs) || !isObject(defs))
22 var extds = isDefs ? assigns : defs
23 if (isPlainObject(obj)) {
24 objectEach(obj, isDefs ? function (val, key) {
25 obj[key] = defs
26 } : function (val, key) {
27 helperDeleteProperty(obj, key)
28 })
29 if (extds) {
30 assign(obj, extds)
31 }
32 } else if (isArray(obj)) {
33 if (isDefs) {
34 len = obj.length
35 while (len > 0) {
36 len--
37 obj[len] = defs
38 }
39 } else {
40 obj.length = 0
41 }
42 if (extds) {
43 obj.push.apply(obj, extds)
44 }
45 }
46 }
47 return obj
48}
49
50module.exports = clear