脚本宝典收集整理的这篇文章主要介绍了js实例教程-js深度clone的代码实例,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
VAR App = App || {}; (function(){ /** * 判断是否是数组 * @param val * @returns {boolean} */ var toString = Object.PRototyPE.toString; App.isArray = function(val){ return ('isArray' IN ARRAY) ? Array.isArray(val) : toString.call(val) === '[object Array]'; }; /** * 判断是否是对象 * IE6 使用toString判断是Object * @param val * @returns {boolean} */ App.isObject = function(val){ return toString.call(null) === '[object Object]' ? val !== null && val !== undefined && toString.call(val) === '[object Object]' && val.ownerDocument === undefined//排除dom : toString.call(val) === '[object Object]'; }; /** * copy 解除引用 * @param val * @returns {*} */ App.clone = function(val){ return JSON.parse(JSON.stringify(val)); }; App.cloneAllObject = function(val){ var k, obj; for(k in val){ var ITem = val[k]; if(App.isArray(item)){//判断数组 obj[k] = App.cloneAllArray(item); }else if(App.isObject(item)){ obj[k] = App.cloneAllItems(item); }else{ obj[k] = item; } } return item; }; App.cloneAllArray = function(val){ /** * 解除数组关系的引用 * @type {Array.<T>} */ var arr = Array.prototype.slice.call(val), newArr = [], i, len = arr.length; for(i=0;i<len;i++){ var item = arr[i]; if(App.isArray(item)){ newArr.push(App.cloneAllArray(item)); }else if(App.isObject(item)){ newArr.push(App.cloneAllObject(item)); }else{ newArr.push(val); } } return newArr; }; App.cloneAllItems = function(val){ //解除引用 val = App.clone(val); if(App.isArray(val)){ App.cloneAllArray(); }else if(App.isArray(val)){ App.cloneAllObject(val); } return val; }; }());
js深度clone的代码实例
var App = App || {}; (function(){ /** * 判断是否是数组 * @param val * @returns {boolean} */ var toString = Object.prototype.toString; App.isArray = function(val){ return ('isArray' in Array) ? Array.isArray(val) : toString.call(val) === '[object Array]'; }; /** * 判断是否是对象 * IE6 使用toString判断是Object * @param val * @returns {boolean} */ App.isObject = function(val){ return toString.call(null) === '[object Object]' ? val !== null && val !== undefined && toString.call(val) === '[object Object]' && val.ownerDocument === undefined//排除dom : toString.call(val) === '[object Object]'; }; /** * copy 解除引用 * @param val * @returns {*} */ App.clone = function(val){ return JSON.parse(JSON.stringify(val)); }; App.cloneAllObject = function(val){ var k, obj; for(k in val){ var item = val[k]; if(App.isArray(item)){//判断数组 obj[k] = App.cloneAllArray(item); }else if(App.isObject(item)){ obj[k] = App.cloneAllItems(item); }else{ obj[k] = item; } } return item; }; App.cloneAllArray = function(val){ /** * 解除数组关系的引用 * @type {Array.<T>} */ var arr = Array.prototype.slice.call(val), newArr = [], i, len = arr.length; for(i=0;i<len;i++){ var item = arr[i]; if(App.isArray(item)){ newArr.push(App.cloneAllArray(item)); }else if(App.isObject(item)){ newArr.push(App.cloneAllObject(item)); }else{ newArr.push(val); } } return newArr; }; App.cloneAllItems = function(val){ //解除引用 val = App.clone(val); if(App.isArray(val)){ App.cloneAllArray(); }else if(App.isArray(val)){ App.cloneAllObject(val); } return val; }; }());
觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦! js技巧,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的js实例教程-js深度clone的代码实例全部内容,希望文章能够帮你解决js实例教程-js深度clone的代码实例所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。