js原型模式
原型模式(prototype):是指用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。
对于原型模式,可以利用JavaScript特有的原型继承特性去创建对象的方式,真正的原型继承是作为最新版的
ECMAScript5标准提出的,使用Object。create方法来创建这样的对象,如
Object.create(prototype,optionalDescriptorObjects)。
1.浅拷贝:
var myobj={
str:'mystring',
num:2,
myarr:[3,{arr:'i am arr'}],
myobj:{
innerobj:{
test:25
},
innerstr:'myobjinnerstr'
}
}
var result1 = cloneq(myobj);
result1.myobj.innerstr='outter';
console.log(result1.myobj.innerstr);
console.log(myobj);//修改实例可以影响到原型 outter
2.深拷贝
function clonesh(obj){
var ret={},k,i;
for(k in obj){
ret[k] = typeof obj[k]==='object'?clonesh(obj[k]):obj[k];
}
return ret;
}
var result1=clonesh(myobj);
result1.myobj.innerstr='outter';
console.log(result1.myobj.innerstr);
console.log(myobj); //修改实例不能影响到原型
3.Object.create()
var result3=Object.create(obj);
原型挂在实例的原型链上,修改实例不影响原型