递归方法
- */
- function clone(obj) {
- var o;
- switch (typeof obj) {
- case "undefined":
- break;
- case "string":
- o = obj + "";
- break;
- case "number":
- o = obj - 0;
- break;
- case "boolean":
- o = obj;
- break;
- case "object": // object 分为两种情况 对象 (Object) 或数组(Array)
- if (obj === null) {
- o = null;
- } else {
- if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {
- o = [];
- for (var i = 0; i obj.length; i++) {
- o.push(clone(obj[i]));
- }
- } else {
- o = {};
- for (var k in obj) {
- o[k] = clone(obj[k]);
- }
- }
- }
- break;
- default:
- o = obj;
- break;
- }
- return o;
- }
来源: http://www.qdfuns.com/article/24611/61a9b962c0ebb467dbdd364e01e344fb.html