核心提示:浅拷贝使用Object.assign就够了,大多数情况下,使用该方法。深拷贝: (参考:zepto extend)var class2type = {}function type(obj) {retu...
浅拷贝使用Object.assign就够了,大多数情况下,使用该方法。
深拷贝: (参考:zepto extend)
var class2type = {} function type(obj) { return obj == null ? String(obj) : class2type[toString.call(obj)] || "object" } function isFunction(value) { return type(value) == "function" } function isWindow(obj) { return obj != null && obj == obj.window } function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE } function isObject(obj) { return type(obj) == "object" } function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype } var isArray = Array.isArray || function(object){ return object instanceof Array } function extend(target, source, deep) { for (key in source) if (deep && (isPlainObject(source[key]) || isArray(source[key]))) { if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {} if (isArray(source[key]) && !isArray(target[key])) target[key] = [] extend(target[key], source[key], deep) } else if (source[key] !== undefined) target[key] = source[key] }
直接Clone一个Nested Object的简便方法:
var origin = {"a": "a"} var copy = JSON.parse(JSON.stringify(origin));