对象引用

var a = 5;
var b = a;
b+=3;
alert(b);//8
alert(a);//5

基本类型之间是赋值关系.

对象和函数都是引用的关系.

var a = [1,2,3];
var b = a;
b.push(4);
alert(b);//1,2,3,4
alert(a);//1,2,3,4
var a = [1,2,3];
var b = a;
b=[1,2,3,4];//相当于重新创建了一个b

alert(b);//1,2,3,4
alert(a);//1,2,3
var obj ={
    a:10
};

var obj2 = obj;
obj2.a = 20;

alert(obj.a);//20
var obj ={
    a:10
};

function copy(obj){//浅拷贝

    var newObj = {};
    for(var attr in obj){
        newObj[attr] = obj[attr];
    }
    return newObj;

}

var obj2 = copy(obj);
obj2.a = 20;
alert(obj.a);//10

注:简单说:for in 和for of 的区别;

for in 遍历的是键名,for of遍历的是键值.

简单记:  i 在字母表排在o 前面 ;

遍历时 a:10; 于是in对应a,of对应10;故记住.

 

递归:

1.函数调用函数自身.执行递的动作.

2.最后一次判断一个终止条件,可以执行归的动作.

var obj ={
    a:{b:10}
};

function deepCopy(obj){

    if(typeof obj != 'object'){
        return obj;
    }

    var newObj  = {};
    for(var attr in obj){

        newObj[attr]=deepCopy(obj[attr]);
    }

    return newObj;
}

var obj2 = deepCopy(obj);
obj2.a.b = 20;
alert(obj.a.b);//10

 

posted on 2016-12-13 11:13  夜行锦衣  阅读(69)  评论(0编辑  收藏  举报

导航