diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index 4e6ebf2c..0a0690e8 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -78,14 +78,16 @@ exports.copyArray = function(array){ }; exports.deepCopy = function (obj) { - if (typeof obj != "object") { + if (typeof obj !== "object" || !obj) + return obj; + var cons = obj.constructor; + if (cons === RegExp) return obj; - } - var copy = obj.constructor(); + var copy = cons(); for (var key in obj) { - if (typeof obj[key] == "object") { - copy[key] = this.deepCopy(obj[key]); + if (typeof obj[key] === "object") { + copy[key] = exports.deepCopy(obj[key]); } else { copy[key] = obj[key]; }