代码描述:js对象 直接量拷贝。js对象直接量拷贝源码实例
本章节介绍一下关于对象直接量拷贝相关的一些问题。 可能很多朋友认为这个操作实在是太简单了,看如下代码实例:
<script> var obj={ webName:"51前端", innerObj:{ url:"51qianduan.com" } } var newObj=new Object(); for(var prop in obj){ newObj[prop]=obj[prop]; } console.log(newObj.webName); </script>
上面的代码貌似很完美的实现拷贝复制效果,其实并非如此,看如下代码:
<script> var obj={ webName:"51前端", innerObj:{ url:"softwhy.com" } } var newObj=new Object(); for(var prop in obj){ newObj[prop]=obj[prop]; } obj.innerObj.url="51前端网址"; console.log(newObj.innerObj.url); </script>
从上面的代码可以看出并没有实现真正的拷贝效果,通过obj对象修改属性的相关值,在所谓的拷贝对象中也会被修改。 这是因为在上面的对象拷贝中,如果属性值是一个引用类型的,那么新拷贝中的相关属性的赋值只是那个引用类型数据的地址,所以这并不是真正的拷贝。下面来看一下如何实现真正的拷贝,代码如下:
<script> var obj={ webName:"51前端", innerObj:{ url:"softwhy.com" } } function cloneObj(oldObj){ if (typeof(oldObj) != 'object') return oldObj; if (oldObj == null) return oldObj; var newObj = new Object(); for (var prop in oldObj){ newObj[prop] = cloneObj(oldObj[prop]); } return newObj; }; var newObj=cloneObj(obj); obj.innerObj.url="51前端网址"; console.log(newObj.innerObj.url); </script>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能