diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index 13b76f77..921dee1d 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -81,32 +81,25 @@ exports.copyArray = function(array){ return copy; }; -exports.deepCopy = function (obj) { +exports.deepCopy = function deepCopy(obj) { if (typeof obj !== "object" || !obj) return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } var cons = obj.constructor; if (cons === RegExp) return obj; - var copy = cons(); - if (Array.isArray(obj)) { - for (var key = 0; key < obj.length; key++) { - if (typeof obj[key] === "object") { - copy[key] = exports.deepCopy(obj[key]); - } else { - copy[key] = obj[key]; - } - } - } else { - for (var key in obj) { - if (typeof obj[key] === "object") { - copy[key] = exports.deepCopy(obj[key]); - } else { - copy[key] = obj[key]; - } - } + copy = cons(); + for (var key in obj) { + copy[key] = deepCopy(obj[key]); } - return copy; };