1. join和toString
同:都可将数组转换为字符串。
异:join可自定义拼接的连接符号,默认为‘,’ ;而toString只有‘,’
例如:
var a=[1,2,3]
a.join();//'1,2,3'
a,join('-');//'1-2-3'
a.toString();//'1,2,3'
2. 深拷贝,浅拷贝,一层深拷贝
针对引用数据类型产生的问题。引用数据类型的数据,值存放在堆内存中,地址存放在栈内存中。
简单的赋值操作,实际上是将地址赋值给新的变量,因此导致一个变量改变,另一个变量同时改变。即浅复制。
进而,如果要实现深拷贝,使变量间的改变不会相互影响,须要使得实际的赋值操作为操作的变量的值而不是变量的地址。
详细的有:https://www.jianshu.com/p/cf1e9d7e94fb
3. 构造函数创建变量
https://www.jianshu.com/p/4dda15852f36
4.instanceof原理与原型链
https://www.jianshu.com/p/6c99d3678283
5.sort()原理
6.多维数组
JS只支持一维数组,更高纬度的数组由嵌套数组发展而来。
一维数组:[1,2,3]; //数组的每一个元素是一个标量
二维数组:[["a","b","c"],[1,2,3],123]; //数组的每一个元素是一个一维数组
三维数组:[[["a","b","c"],[1,2,3]],[["a","b","c"],[1,2,3]]]; //数组的每一个元素是一个二维数组
需要注意的是,多维空数组不能直接向某个元素赋值,如
var arr1=[];//一维数组 var arr2=[];//二维数组 var arr3=[];//三维数组 //直接赋值,失败 arr3[0][0][0]=1; //必须,逐层赋值 arr1[0]=0; arr2[0]=arr1 arr3[0]=arr2; //可以直接访问元素 console.log(arr3[0][0][0]);