判断数据类型和实现一个深拷贝

138 阅读1分钟

判断数据类型

const getObjectType = obj => {
	let toString = Object.prototype.toString;
    	let map = {
          '[object Boolean]': 'boolean',
          '[object Number]': 'number',
          '[object String]': 'string',
          '[object Function]': 'function',
          '[object Array]': 'array',
          '[object Date]': 'date',
          '[object RegExp]': 'regExp',
          '[object Undefined]': 'undefined',
          '[object Null]': 'null',
          '[object Object]': 'object'
    	}
        if (obj instanceof Element) {
        	return "element"
        }
        return map[toString.call(obj)]
}

实现深拷贝

const deepClone = data => {
    let type = getObjectType(data);
    let obj;
    if (type === "array") {
    	obj = []
        for(let i = 0, len = data.length; i < len; i++){
           obj.push(deepClone(data[i]))
        }
    } else if (type === "object") {
    	obj = {}
        for (let key in data) {
           obj[key] = deepClone(data[key])
        }
    } else {
    	return data
    }
    return obj;
}

以上代码,亲测可用,如有疑问,随时评论……