克隆对象: var obj={
name:"zhang",
age:23;
}
var obj2=obj 这种写法不是克隆对象,就直是把obj的内存地址赋给obj2。
1.通过for in 克隆: 不管是私有的还是共有的都克隆成私有的。
var obj={
name:"zhang",
age:23
}
var obj2={};
for(var key in obj){
obj2[key]=obj[key]
}
console.log(obj2)
2.Js提供了一个克隆的方法Object.create()
var obj2=Object.creat(obj) 将obj的所有属性克隆到obj2的原型上
var obj={
name:"zhang",
age:23
}
var obj2=object.create(obj,{name:{value:"wang"}})
console.log(obj2)
对象继承:七种对象继承
1.call继承:
将父类的私有属性继承为子类的私有属性
2.原型继承
将父类的私有属性和公有属性都继承为子类的公有属性
3.冒充对象继承
将父类的私有属性和公有属性都继承为子类的私有属性
4.混合继承
私有的继承为私有的,公有的和私有的再次继承为公有的,混合继承是call继承和原型继承的结合,私有的被继承了两次
5.组合继承
私有的继承为私有的,公有的继承为公有的
6.中间类继承
function f(){
arguments.__proto__=Array.prototype;
console.lob((arguments))
arguments.shift()
}
f(12,23,56)
7.深拷贝和浅拷贝
浅拷贝:其实就是将一个对象的属性一个一个的复制到另一个对象中去主要针对第一层的属性
深拷贝:如果对象中的属性值又是一个引用数据类型,浅拷贝还是把后边的引用数据类型的地址赋值给空对象的一个属性,深拷贝,将属性值也一个个遍历赋值。