ISO格式的日期
ISO 是International Organization for standardization(国际标准化组织)的简称
😼在ES5中,如果日期采用连词线(-)格式分隔,且具有前导0或满足两位数时,JavaScript会认为这是一个ISO(格林尼治国际标准时的时区)格式的日期字符串,导致返回的时间是以UTC(国际协调时间,Universal Time Coordinated)计算的。其他格式的日期一律视为非ISO格式,采用本地时区(UTC+8)作为计时标准。
😼ES6中,规定凡是没有指定时区的日期字符串,一律使用用户所在的本地时区。
😼 日期字符串中 T代表后面跟的是时分秒 z代表的是与utc的偏移量。
赋值、浅拷贝、深拷贝的区别
个人理解 赋值针对的原始数据可以是基本类型和引用类型,深浅拷贝针对的只是引用类型
| -- | 和原数据是否指向同一对象 | 第一层数据为基本数据类型 | 原数据中包含子对象 |
|---|---|---|---|
| 赋值 | 是 | 改变会使原数据一同改变 | 改变会使原数据一同改变 |
| 浅拷贝 | 否 | 改变不会使原数据一同改变 | 改变会使原数据一同改变 |
| 深拷贝 | 否 | 改变不会使原数据一同改变 | 改变不会使原数据一同改变 |
浅拷贝
含义:浅拷贝会先创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性值是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址。
简单来说可以理解为浅拷贝只解决了第一层的问题,拷贝第一层的基本类型值,以及第一层的引用类型地址。
常见的浅拷贝
Object.assign({},obj);
let cloneObj = {...obj}; //扩展运算符 `Spread`
Array.prototype.slice(); //返回的新数组也是一种浅拷贝
Array.prototype.concat();
深拷贝
含义:将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象
常用的深拷贝
JSON.parse(JSON.stringify(obj))
存在的问题
1.会忽略 undefined、symbol、function
2.不能解决循环引用的对象
3.不能处理正则