这期内容当中小编将会给大家带来有关JavaScript中浅拷贝和深拷贝的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联公司是一家集网站建设,来凤企业网站建设,来凤品牌网站建设,网站定制,来凤网站建设报价,网络营销,网络优化,来凤网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1.JavaScript主要用来向HTML页面添加交互行为。 2.JavaScript可以直接嵌入到HTML页面,但写成单独的js文件有利于结构和行为的分离。 3.JavaScript具有跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行。
浅拷贝的实现方式
1、自定义函数
function shallowClone (initalObj) { var obj = {}; for ( var i in initalObj) { obj[i] = initalObj[i]; } return obj; }
2、ES6 的 Object.assign()
let newObj = Object.assign({}, obj);
3、ES6 的对象扩展
let newObj = {...obj};
深拷贝的实现方式
1、JSON.stringify 和 JSON.parse
用 JSON.stringify
把对象转换成字符串,再用 JSON.parse
把字符串转换成新的对象。
可以转成 JSON 格式的对象才能使用这种方法,如果对象中包含 function 或 RegExp 这些就不能用这种方法了。
let newObj = JSON.parse(JSON.stringify(obj));
2、jquery 和 zepto
jquery 和 zepto 里的 $.extend
方法可以用作深拷贝。
var $ = require('jquery'); var newObj = $.extend(true, {}, obj);
3、lodash
用 lodash 函数库提供的 _.cloneDeep
方法实现深拷贝。
var _ = require('lodash'); var newObj = _.cloneDeep(obj);
4. 自己封装
deepClone = (obj) => { let objClone = Array.isArray(obj)?[]:{}; if(obj && typeof obj==="object"){ // for...in 会把继承的属性一起遍历 for(let key in obj){ // 判断是不是自有属性,而不是继承属性 if(obj.hasOwnProperty(key)){ //判断ojb子元素是否为对象或数组,如果是,递归复制 if(obj[key]&&typeof obj[key] ==="object"){ objClone[key] = this.deepClone(obj[key]); }else{ //如果不是,简单复制 objClone[key] = obj[key]; } } } } return objClone; }
上述就是小编为大家分享的JavaScript中浅拷贝和深拷贝的原理是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。