JS-9-拷贝

一、浅拷贝

var person = {

name:"cj",

age:22,

address;{

home:"home address",

office:"office address"

},

schools:["xiaoxue","daxue"]

}

var programer = {

language:"javascript"

}

function extend(p, c){

var c = c || {};

for(var prop in p){

c[prop] = p[prop];

}

}

extend(person,programer)

弊端:给一个赋值会影响另一个

二、深拷贝

var person = {

name:"cj",

age:22,

address;{

home:"home address",

office:"office address"

}

}

var programer = {

language:"javascript"

}


function extendDeeply(p,c){

var c = c||{};

for(var prop in p){

if(typeof p[prop]===“object”){

c[prop] = (p[prop].constructor ===Array)?[]:{};

extendDeeply(p[prop],c[prop])

}else{

c[prop]=p[prop]

}

}

}

extendDeeply(person,programer)

三、call拷贝

function Parent(){

this.name = "abc";

this.address = {home:"home"};

}

function Child(){

Parent.call(this);

this.language = "java";

}

四、create

var p = {name:"cj"};

function myCreate(p){

var ins;

ins = {};

function F(){};  //ins.__protp__ = p;

F.prototype = p;

ins = new F();

return ins;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值