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);

原型挂在实例的原型链上,修改实例不影响原型

 

posted @ 2017-03-17 14:35  sungang  阅读(1304)  评论(0编辑  收藏  举报