总结

1 ECMAScript 中的数据类型

原始类型(值类型): string、number、boolean、null、undefined、symbol、bigint 共七种
对象类型(引用类型): array、object、regexp、set、,map......

2 ECMAScript中声明变量的方式

共六种方式:
1、 var
2、 function
3、 let
4、 const (常量)
5、 class
6、 import

let、const、class、import 都是 ES6 新增的方式,所声明的变量(常量)都具备 4 个特点:

1)不能重复声明。

2)不能提升。

3)不会作为全局对象的属性。

4)具有块级作用域。

3 实现数组扁平化的方式

//1. 使用flat() 
arr.flat(Infinity)

//2. 利用字符串的join方法  缺点:数组的元素都会变为字符串类型
arr.join().split(',')

//3. 自定义递归函数
function flatArray(array) {
    //创建一个空数组
    let res = [];
    // 遍历传进来的数组
    for (var i = 0; i < array.length; i ++) {
        //判断数组的元素还是不是数组
        if (array[i] instanceof Array) {
            res = res.concat(flatArray(array[i]));
        } else {
            res.push(array[i]);
        }
    }
    //返回新数组
    return res;
}

4 对象的浅拷贝

数组的浅拷贝:

1. [...arr] 扩展运算符
2. arr.concat() 返回新的数组
3. arr.slice()    返回新的数组,从头截取到尾
4. Array.from(arr) 返回新的数组

对象的浅拷贝:

1. {...obj} 扩展运算符
2. Object.assign({}, obj) 返回新对象,利用对象合并实现对象浅拷贝

5 对象的浅拷贝

// 1. 借助于JSON  无法拷贝方法,适合于纯数据对象
JSON.parse(JSON.stringify(obj));
// 2. 递归函数实现
//定义函数 获取对象的构造函数(类)名
function getObjectClass(obj) {
    return Object.prototype.toString.call(obj).slice(8,-1)
}
//深拷贝的函数
function deepClone(obj) {
    //判断obj是对象是数组还是其他
    if (getObjectClass(obj) === 'Object') {
        var res = {};   //创建空的对象
    } else if (getObjectClass(obj) === 'Array') {
        var res = [];   //创建空数组
    } else {
        return obj;
    }
    //对传入的对象(遍历)进行遍历
    for (let i in obj) {
        res[i] = deepClone(obj[i]);
    }
    //返回新数组或对象
    return res;
}

results matching ""

    No results matching ""