1.易混的几种方式数组
(1;slice 返回值为截取的新字符串 接收参数(start,end) 特色:可接收负数 (-1表示从末尾处从后往前) 若是end没有值 则断定为从start开始到最后,,, 取值特色为[) 适用范围:string arrayspa
(2; substring 返回值为截取的新字符串 接收参数(start, end) 不能为负数 不然为0 若是start 大于 end的话 进行计算的时候 会交换start和end 的位置, 取值特色为[) 适用范围:stringcode
(3;substr 返回值为截取的新字符串 接收参数(start, length) 特色:可接收负数 (-1表示从末尾处从后往前) 适用范围:string对象
(4:splice 返回值为截取的新数组 接收参数(start,length,array)前两个可参照substr 第三个参数是要插入的数组项,,,就是前两项代表要删除的起始位置 长度 删除以后 把第三个参数的数组插入到这个空缺 ,注意:这个方法会把原数组改变array 适用范围:arrayblog
2. cancat : 用于链接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被链接数组的一个副本字符串
3. Obj.assign() : 能够把任意多个的源对象自身的可枚举属性拷贝给目标对象,而后返回目标对象,,,Object.assign({}, obj)同步
4.对象的浅copy和深复制 浅拷贝是将一个目标对象的地址拷贝到源对象里面 而深拷贝是将目标对象里面的值拷贝到原对象里面 最直观的区别是 对目标对象的操做 在浅拷贝里面是会进行同步的(由于仅仅是地址的复制,里面的值实际上是一套),而深拷贝是不会的,由于跟目标对象已经灭有任何关系了string
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.console