随机 js

1.易混的几种方式

  (1;slice  返回值为截取的新字符串  接收参数(start,end) 特点:可接收负数  (-1表示从末尾处从后往前)  如果end没有值  则判定为从start开始到最后,,, 取值特点为[)    适用范围:string array

    (2;  substring 返回值为截取的新字符串  接收参数(start, end)  不能为负数 否则为0  如果start 大于 end的话  进行计算的时候 会交换start和end 的位置, 取值特点为[) 适用范围:string

  (3;substr  返回值为截取的新字符串  接收参数(start, length)   特点:可接收负数  (-1表示从末尾处从后往前) 适用范围:string

 

  (4:splice 返回值为截取的新数组 接收参数(start,length,array)前两个可参照substr  第三个参数是要插入的数组项,,,就是前两项表明要删除的起始位置 长度  删除之后 把第三个参数的数组插入到这个空缺 ,注意:这个方法会把原数组改变array 适用范围:array

2. cancat : 用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

3. Obj.assign() : 可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象,,,Object.assign({}, obj)

4.对象的浅copy和深复制  浅拷贝是将一个目标对象的地址拷贝到源对象里面 而深拷贝是将目标对象里面的值拷贝到原对象里面   最直观的区别是  对目标对象的操作 在浅拷贝里面是会进行同步的(因为仅仅是地址的复制,里面的值其实是一套),而深拷贝是不会的,因为跟目标对象已经灭有任何关系了

 1 //浅复制
 2 var obj1={'a':1};
 3 var obj2={'b':{'b1':22,'b2':33}};
 4 
 5 $.extend(obj1, obj2);   //obj1拷贝了obj2的属性
 6 
 7 console.log(obj1)  // {'a':1,'b'{'b1':22,'b2':33}}
 8 console.log(obj1.b.b1)  // 22
 9 
10 obj2.b.b1=44;   //obj2重新赋值
11 console.log(obj1.b.b1)  // 44  obj1.b仅拷贝了对象的指引,所以受原obj2的影响
12 
13 //深复制
14 
15 var obj1={'a':1};
16 var obj2={'b':{'b1':22,'b2':33}};
17 
18 $.extend(true,obj1, obj2);   //第一个参数设为true表示深复制
19 
20 console.log(obj1)  // {'a':1,'b'{'b1':22,'b2':33}}
21 console.log(obj1.b.b1)  // 22
22 
23 obj2.b.b1=44;   //obj2重新赋值
24 console.log(obj1.b.b1)  // 22 obj1拷贝了obj2的所有属性以及值,并不受obj2的影响

5.

 

  

 

上一篇:js垃圾回收机制


下一篇:深入理解jvm jdk1,7(14)