diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index 863bbb55..921dee1d 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -81,20 +81,24 @@ 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(); + copy = cons(); for (var key in obj) { - if (typeof obj[key] === "object") { - copy[key] = exports.deepCopy(obj[key]); - } else { - copy[key] = obj[key]; - } + copy[key] = deepCopy(obj[key]); } return copy; };