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.