红宝书学习记录
目录
- 什么是JavaScript
- HTML中的JavaScript
- 语言基础
- 变量、作用域与内存
- 基本引用类型
- 集合引用类型
- 迭代器与生成器
- 对象、类与面向对象编程
- 代理与反射
- 函数
- 期约与异步函数
- BOM
- 客户端检测
- DOM
- DOM扩展
- DOM2与DOM3
- 事件
- 动画与Canvas图形
- 表单脚本
- JavaScript API
- 错误处理与调试
- 处理XML
- JSON
- 网络请求与远程资源
- 客户端存储
- 模块
- 工作者线程
- 最佳实践
附录A ES2018与ES2019
附录B 严格模式
附录C JavaScript库和框架
附录D JavaScript工具
学习时间安排:
https://www.cnblogs.com/eve-d/p/15765509.html
每日有学习记录进行打卡
- 2022年1月5日
5、基本引用类型学习记录
1)对象被认为是某个特定引用类型的实例;
2)构造函数就是用来创建新对象的函数;
3)新对象通过使用new操作符后跟一个构造函数(constructor)来创建。
例如:
注意 函数也是一种引用类型
5.1 Date学习记录
1)Date类型将日期保存为时间1970年1月1日午夜(零时)至今所经过的毫秒数。
2)Date类型可以精确表示1970年1月1日之前及之后285616年的日期。
3)创建日期对象: let now = new Date()。(⚠️:data——〉数据,date才是———〉日期)
注意:在不给Date构造函数传参数的情况下,创建的对象将保存当前日期和时间。
4)辅助方法:Date.parse()和Date.UTC(),以及Date.now()方法
Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒数。
比如,要创建一个表示“2019年5月23日”的日期对象,可以使用以下代码:
注意:如果传给Date.parse()的字符串并不表示日期,则该方法会返回NaN。
如果直接把表示日期的字符串传给Date构造函数,那么Date会在后台调用Date.parse()。换句话说,下面这行代码跟前面那行代码是等价的:
注意 不同的浏览器对Date类型的实现有很多问题。比如,很多浏览器会选择用当前日期替代越界的日期,因此有些浏览器会将"January 32, 2019"解释为"February 1, 2019"。Opera则会插入当前月的当前日,返回"January当前日,2019"。就是说,如果是在9月21日运行代码,会返回"January 21,2019"。
Date.UTC()方法也返回日期的毫秒表示
注意 传给Date.UTC()的参数是年、零起点月数(1月是0,2月是1,以此类推)、日(1~31)、时(0~23)、分、秒和毫秒。这些参数中,只有前两个(年和月)是必需的。如果不提供日,那么默认为1日。其他参数的默认值都是0。
例如:
注意 Date.parse()一样,Date.UTC()也会被Date构造函数隐式调用,但有一个区别:这种情况下创建的是本地日期,不是GMT日期。不过Date构造函数跟Date.UTC()接收的参数是一样的。因此,如果第一个参数是数值,则构造函数假设它是日期中的年,第二个参数就是月,以此类推。
Date.now()方法
ECMAScript提供了Date.now()方法,返回表示方法执行时日期和时间的毫秒数。这个方法可以方便地用在代码分析中
5.1.1 继承的方法学习记录
Date类型重写了toLocaleString()、toString()和valueOf()方法
Date类型的toLocaleString()方法返回与浏览器运行的本地环境一致的日期和时间。
toString()方法通常返回带时区信息的日期和时间,而时间也是以24小时制(0~23)表示的。
例如:2019年2月1日零点的示例
因为现代浏览器在这两个方法的输出上已经趋于一致。在比较老的浏览器上,每个方法返回的结果可能在每个浏览器上都是不同的。这些差异意味着toLocaleString()和toString()可能只对调试有用,不能用于显示。
Date类型的valueOf()方法根本就不返回字符串,这个方法被重写后返回的是日期的毫秒表示。
例如:
5.1.2 日期格式化方法
Date类型有几个专门用于格式化日期的方法,它们都会返回字符串:
❑ toDateString()显示日期中的周几、月、日、年(格式特定于实现);
❑ toTimeString()显示日期中的时、分、秒和时区(格式特定于实现);
❑ toLocaleDateString()显示日期中的周几、月、日、年(格式特定于实现和地区);
❑ toLocaleTimeString()显示日期中的时、分、秒(格式特定于实现和地区);
❑ toUTCString()显示完整的UTC日期(格式特定于实现)。
这些方法的输出与toLocaleString()和toString()一样,会因浏览器而异。因此不能用于在用户界面上一致地显示日期。
注意 还有一个方法叫toGMTString(),这个方法跟toUTCString()是一样的,目的是为了向后兼容。不过,规范建议新代码使用toUTCString()。
5.1.3 日期/时间组件方法
5.2 RegExp学习记录
ECMAScript通过RegExp类型支持正则表达式。正则表达式使用类似Perl的简洁语法来创建:
正则表达式匹配模式的标记:
❑ g:全局模式,表示查找字符串的全部内容,而不是找到第一个匹配的内容就结束。
❑ i:不区分大小写,表示在查找匹配时忽略pattern(模式)和字符串的大小写。
❑ m:多行模式,表示查找到一行文本末尾时会继续查找。
❑ y:粘附模式,表示只查找从lastIndex开始及之后的字符串。
❑ u: Unicode模式,启用Unicode匹配。
❑ s:dotAll模式,表示元字符.匹配任何字符(包括\n或\r)。
举例:
在正则表达式中,所有元字符在模式中也必须转义,包括:
元字符在正则表达式中都有一种或多种特殊功能,所以要匹配上面这些字符本身,就必须使用反斜杠来转义。
举例:
正则表达式也可以使用RegExp构造函数来创建,它接收两个参数:模式字符串和(可选的)标记字符串。任何使用字面量定义的正则表达式也可以通过构造函数来创建,比如:
注意,RegExp构造函数的两个参数都是字符串。
- 2022年1月18号
6、集合引用类型
1)对象
2)数组与定型数组
3)Map、WeakMap、Set以及WeakSet类型
6.1 Object
一、显式地创建Object的实例有两种方式:
1)使用new Object
2)使用字面量的方式
二、属性的存取方式:
1)点存取
2)通过属性名存取,也可通过变量访问属性
通常,点语法是首选的属性存取方式,除非访问属性时必须使用变量。
注意 在使用对象字面量表示法定义对象时,并不会实际调用Object构造函数。
6.2 Array
一、数组的创建方式:
1)new Array
给构造函数Array传入一个数值,指明创建一个多长的数组;
给构造函数Array传入字符串,传几个就创建有几个元素的数组;
不传,创建一个空数组
在使用Array构造函数时,也可以省略new操作符。结果是一样的,比如:
2)字面量方式
注意 与对象一样,在使用数组字面量表示法创建数组不会调用Array构造函数。
三、Array构造函数还有两个ES6新增的用于创建数组的静态方法:from()和of()。from()用于将类数组结构转换为数组实例,而of()用于将一组参数转换为数组实例。
1)Array.from()的第一个参数是一个类数组对象,即任何可迭代的结构,或者有一个length属性和可索引元素的结构。这种方式可用于很多场合:
⚠️:
1)Array.from()方法对现有数组执行浅拷贝