十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以使用Object.assign()函数来克隆一个object对象,使用方式如下:
创新互联公司是一家专业提供定南企业网站建设,专注与成都网站制作、成都做网站、html5、小程序制作等业务。10年已为定南众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
var obj = {a:1, b:2};
var obj1 = Object.assign({}, obj);
//看看是不是克隆成功了
obj1.a = 2;
console.log(obj1.a);//2
console.log(obj.a);//1
发现,改变obj1中属性的值没有影响obj的属性,大功告成。
浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。
深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象间的联系。
[img]这题的意思是把一个对象中的内容一级一级的复制到另外一个对象中。用for(var i in obj)的方式就可以了。
至于类型,js虽然是弱类型,但其实是有类型的,如数字类型,就是Number,对象类型就是Object,String,Date,Array,Boolean,Function等,然要判断对象的类型也很简单,如:
var a = 2;
a.constructor == Number;// 判断是否为数值
a.constructor == String;// 判断是否为字符串 a = "test"
a.constructor == Date;// 判断是否为日期 a = new Date()
a.constructor == Array;// 判断是否为数组 a = [1,"2",true]
a.constructor == Boolean;// 判断是否为布尔型 a = true
a.constructor == Object;// 判断是否为对象 a = {}
a.constructor == Function;// 判断是否为方法类型 a = function(){}
模似继承的方法:对象冒充、apply方法、call方法,原型方式、混合方式。
第一种严格来说不叫克隆。a和b指向同一个对象,修改b的时候其实a也被修改了
第二种是把a做了一个复制,然后把复制出来的新对象给b,修改b的时候a不会变