不要怂,就是干,撸起袖子干!

Commit a3d45b8b by Daniel Friesen

Change method to abort customization of plain objects/arrays first

1 parent 3d316493
Showing with 5 additions and 7 deletions
......@@ -95,16 +95,14 @@ var Utils = module.exports = {
},
cloneDeep: function(obj, fn) {
return lodash.cloneDeep(obj, function (elem) {
// Do not try to customize cloning of plain objects and strings
if (Array.isArray(elem) || lodash.isPlainObject(elem)) {
return undefined;
}
// Preserve special data-types like `fn` across clones. _.get() is used for checking up the prototype chain
if (elem) {
// Allow objects to implement their own clone method
if (typeof elem.clone === 'function') {
// However do not mistakenly call clone methods on arrays and plain objects
if (!Array.isArray(elem) && !lodash.isPlainObject(elem)) {
if (elem && typeof elem.clone === 'function') {
return elem.clone();
}
}
}
// Unfortunately, lodash.cloneDeep doesn't preserve Buffer.isBuffer, which we have to rely on for binary data
if (Buffer.isBuffer(elem)) { return elem; }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!