Skip to content

Commit 4224cf2

Browse files
committed
update: --
1 parent 9e637f0 commit 4224cf2

15 files changed

+761
-1
lines changed

README.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ https://github.com/webVueBlog/Leetcode
1313

1414
欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star (此仓库每天都会准时更新)
1515

16-
## 😘 阶段十三(347
16+
## 😘 阶段十三(361
1717

1818
<details open>
1919
<summary>展开查看</summary>
@@ -25,6 +25,20 @@ https://github.com/webVueBlog/Leetcode
2525
- 345.[引用计数](./阶段十三/引用计数.js)
2626
- 346.[性能](./阶段十三/性能.js)
2727
- 347.[内存管理](./阶段十三/内存管理.js)
28+
- 348.[基本引用类型](./阶段十三/基本引用类型.js)
29+
- 349.[Date](./阶段十三/Date.js)
30+
- 350.[Date继承的方法](./阶段十三/Date继承的方法.js)
31+
- 351.[Date日期格式化方法](./阶段十三/Date日期格式化方法.js)
32+
- 352.[Date组件方法](./阶段十三/Date组件方法.js)
33+
- 353.[RegExp](./阶段十三/RegExp.js)
34+
- 354.[RegExp实例属性](./阶段十三/RegExp实例属性.js)
35+
- 355.[RegExp实例方法](./阶段十三/RegExp实例方法.js)
36+
- 356.[RegExp构造函数属性](./阶段十三/RegExp构造函数属性.js)
37+
- 357.[RegExp模式局限](./阶段十三/RegExp模式局限.js)
38+
- 358.[原始值包装类型](./阶段十三/原始值包装类型.js)
39+
- 359.[Boolean](./阶段十三/Boolean.js)
40+
- 360.[Number](./阶段十三/Number.js)
41+
- 361.[String](./阶段十三/String.js)
2842

2943
</details>
3044

阶段十三/Boolean.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
3+
Boolean 是对应布尔值的引用类型。
4+
5+
let booleanObject = new Boolean(true);
6+
7+
Boolean 的实例会重写 valueOf()方法,返回一个原始值 true 或 false。
8+
9+
let falseObject = new Boolean(false);
10+
console.log(falseObject);
11+
VM1120:2 Boolean {false}
12+
undefined
13+
let falseObject = new Boolean(false);
14+
let result = falseObject && true;
15+
console.log(result); // true
16+
VM1124:3 true
17+
18+
let falseValue = false;
19+
result = falseValue && true;
20+
console.log(result); // false
21+
22+
console.log(typeof falseObject); // object
23+
console.log(typeof falseValue); // boolean
24+
console.log(falseObject instanceof Boolean); // true
25+
console.log(falseValue instanceof Boolean); // false
26+
27+
*/

阶段十三/Date.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
3+
Date 类型将日期保存为自协调世界时(UTC,Universal Time Coordinated)时间 1970 年 1 月 1 日午夜(零时)至今所经过的毫秒数。
4+
5+
console.log(new Date());
6+
VM260:1 xx xx xx xxxx xx:xx:xx GMT+0800 (中国标准时间)
7+
8+
要创建日期对象,就使用 new 操作符来调用 Date 构造函数:
9+
let now = new Date();
10+
11+
在不给 Date 构造函数传参数的情况下,创建的对象将保存当前日期和时间。
12+
13+
两个辅助方法:Date.parse()和 Date.UTC()。 必须传入其毫秒表示
14+
15+
Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒数。
16+
17+
支持下列日期格式:
18+
19+
“月/日/年”,如"5/23/2019";
20+
21+
“月名 日, 年”,如"May 23, 2019";
22+
23+
“周几 月名 日 年 时:分:秒 时区”,如"Tue May 23 2019 00:00:00 GMT-0700";
24+
25+
ISO 8601 扩展格式“YYYY-MM-DDTHH:mm:ss.sssZ”,如 2019-05-23T00:00:00(只适用于兼容 ES5 的实现)。
26+
27+
let someDate = new Date(Date.parse("May 23, 2019"));
28+
29+
如果传给 Date.parse()的字符串并不表示日期,则该方法会返回 NaN。
30+
31+
let someDate = new Date("May 23, 2019");
32+
33+
Date.UTC()方法也返回日期的毫秒表示,但使用的是跟 Date.parse()不同的信息来生成这个值。传给 Date.UTC()的参数是年、零起点月数(1 月是 0,2 月是 1,以此类推)、日(1~31)、时(0~23)、分、秒和毫秒。
34+
35+
这些参数中,只有前两个(年和月)是必需的。如果不提供日,那么默认为 1 日。其他参数的默认值都是 0。
36+
37+
// GMT 时间 2000 年 1 月 1 日零点
38+
let y2k = new Date(Date.UTC(2000, 0));
39+
// GMT 时间 2005 年 5 月 5 日下午 5 点 55 分 55 秒
40+
let allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
41+
42+
let y2k = new Date(Date.UTC(2000, 0));
43+
console.log(y2k);
44+
VM432:3 Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间)
45+
46+
47+
// 本地时间 2000 年 1 月 1 日零点
48+
let y2k = new Date(2000, 0);
49+
console.log(y2k);
50+
VM510:3 Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间)
51+
52+
// 本地时间 2000 年 1 月 1 日零点
53+
let y2k = new Date(2000, 0);
54+
// 本地时间 2005 年 5 月 5 日下午 5 点 55 分 55 秒
55+
let allFives = new Date(2005, 4, 5, 17, 55, 55);
56+
57+
58+
Date.now()方法,返回表示方法执行时日期和时间的毫秒数。
59+
60+
// 起始时间
61+
let start = Date.now();
62+
// 调用函数
63+
doSomething();
64+
// 结束时间
65+
let stop = Date.now(),
66+
result = stop - start;
67+
68+
69+
*/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
3+
这些方法的输出会因浏览器而异
4+
5+
6+
Date 类型有几个专门用于格式化日期的方法,它们都会返回字符串:
7+
8+
 toDateString()显示日期中的周几、月、日、年(格式特定于实现);
9+
 toTimeString()显示日期中的时、分、秒和时区(格式特定于实现);
10+
 toLocaleDateString()显示日期中的周几、月、日、年(格式特定于实现和地区);
11+
 toLocaleTimeString()显示日期中的时、分、秒(格式特定于实现和地区);
12+
 toUTCString()显示完整的 UTC 日期(格式特定于实现)。
13+
14+
15+
*/

阶段十三/Date组件方法.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
3+
getTime() 返回日期的毫秒表示;与 valueOf()相同
4+
setTime(milliseconds) 设置日期的毫秒表示,从而修改整个日期
5+
6+
getFullYear() 返回 4 位数年(即 2019 而不是 19)
7+
getUTCFullYear() 返回 UTC 日期的 4 位数年
8+
setFullYear(year) 设置日期的年(year 必须是 4 位数)
9+
setUTCFullYear(year) 设置 UTC 日期的年(year 必须是 4 位数)
10+
11+
getMonth() 返回日期的月(0 表示 1 月,11 表示 12 月)
12+
getUTCMonth() 返回 UTC 日期的月(0 表示 1 月,11 表示 12 月)
13+
setMonth(month) 设置日期的月(month 为大于 0 的数值,大于 11 加年)
14+
setUTCMonth(month) 设置 UTC 日期的月(month 为大于 0 的数值,大于 11 加年)
15+
16+
getDate() 返回日期中的日(1~31)
17+
getUTCDate() 返回 UTC 日期中的日(1~31)
18+
setDate(date) 设置日期中的日(如果 date 大于该月天数,则加月)
19+
setUTCDate(date) 设置 UTC 日期中的日(如果 date 大于该月天数,则加月)
20+
21+
getDay() 返回日期中表示周几的数值(0 表示周日,6 表示周六)
22+
getUTCDay() 返回 UTC 日期中表示周几的数值(0 表示周日,6 表示周六)
23+
24+
getHours() 返回日期中的时(0~23)
25+
getUTCHours() 返回 UTC 日期中的时(0~23)
26+
setHours(hours) 设置日期中的时(如果 hours 大于 23,则加日)
27+
setUTCHours(hours) 设置 UTC 日期中的时(如果 hours 大于 23,则加日)
28+
29+
getMinutes() 返回日期中的分(0~59)
30+
getUTCMinutes() 返回 UTC 日期中的分(0~59)
31+
setMinutes(minutes) 设置日期中的分(如果 minutes 大于 59,则加时)
32+
setUTCMinutes(minutes) 设置 UTC 日期中的分(如果 minutes 大于 59,则加时)
33+
34+
getSeconds() 返回日期中的秒(0~59)
35+
getUTCSeconds() 返回 UTC 日期中的秒(0~59)
36+
setSeconds(seconds) 设置日期中的秒(如果 seconds 大于 59,则加分)
37+
setUTCSeconds(seconds) 设置 UTC 日期中的秒(如果 seconds 大于 59,则加分)
38+
39+
getMilliseconds() 返回日期中的毫秒
40+
getUTCMilliseconds() 返回 UTC 日期中的毫秒
41+
setMilliseconds(milliseconds) 设置日期中的毫秒
42+
setUTCMilliseconds(milliseconds) 设置 UTC 日期中的毫秒
43+
44+
getTimezoneOffset() 返回以分钟计的 UTC 与本地时区的偏移量(如美国 EST 即“东部标准时间”
45+
返回 300,进入夏令时的地区可能有所差异)
46+
47+
*/

阶段十三/Date继承的方法.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
3+
Date 类型重写了 toLocaleString()、toString()和 valueOf()方法
4+
5+
Date 类型的 toLocaleString()方法返回与浏览器运行的本地环境一致的日期和时间。这通常意味着格式中包含针对时间的 AM(上午)或 PM(下午),但不包含时区信息(具体格式可能因浏览器而不同)。toString()方法通常返回带时区信息的日期和时间,而时间也是以 24 小时制(0~23)表示的。
6+
7+
8+
toLocaleString() - 2/1/2019 12:00:00 AM
9+
toString() - Thu Feb 1 2019 00:00:00 GMT-0800 (Pacific Standard Time)
10+
11+
toLocaleString()和 toString()可能只对调试有用,不能用于显示。
12+
13+
Date 类型的 valueOf()方法根本就不返回字符串,这个方法被重写后返回的是日期的毫秒表示。
14+
15+
let date1 = new Date(2019, 0, 1); // 2019 年 1 月 1 日
16+
let date2 = new Date(2019, 1, 1); // 2019 年 2 月 1 日
17+
console.log(date1);
18+
console.log(date2);
19+
VM787:3 Tue Jan 01 2019 00:00:00 GMT+0800 (中国标准时间)
20+
VM787:4 Fri Feb 01 2019 00:00:00 GMT+0800 (中国标准时间)
21+
undefined
22+
console.log(date1 < date2); // true
23+
console.log(date1 > date2); // false
24+
VM791:1 true
25+
VM791:2 false
26+
27+
*/

阶段十三/Number.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/**
2+
Number 是对应数值的引用类型。
3+
4+
let numberObject = new Number(10);
5+
6+
Number 类型重写了 valueOf()、toLocaleString()和 toString()方法。valueOf()方法返回 Number 对象表示的原始数值,另外两个方法返回数值字符串。
7+
8+
9+
let num = 10;
10+
console.log(num.toString()); // "10"
11+
console.log(num.toString(2)); // "1010"
12+
console.log(num.toString(8)); // "12"
13+
console.log(num.toString(10)); // "10"
14+
console.log(num.toString(16)); // "a"
15+
16+
17+
toFixed()方法返回包含指定小数点位数的数值字符串
18+
19+
let num = 10;
20+
console.log(num.toFixed(2)); // "10.00"
21+
22+
let num = 10.005;
23+
console.log(num.toFixed(2)); // "10.01"
24+
25+
则四舍五入
26+
27+
toFixed()自动舍入的特点可以用于处理货币。
28+
29+
30+
比如,0.1 + 0.2 = 0.30000000000000004。
31+
32+
33+
toExponential()也接收一个参数,表示结果中小数的位数。
34+
35+
let num = 10;
36+
console.log(num.toExponential(1)); // "1.0e+1"
37+
38+
toPrecision()方法会根据情况返回最合理的输出结果,可能是固定长度,也可能是科学记数法形式。
39+
40+
let num = 99;
41+
console.log(num.toPrecision(1)); // "1e+2"
42+
console.log(num.toPrecision(2)); // "99"
43+
console.log(num.toPrecision(3)); // "99.0"
44+
45+
let numberObject = new Number(10);
46+
let numberValue = 10;
47+
console.log(typeof numberObject); // "object"
48+
console.log(typeof numberValue); // "number"
49+
console.log(numberObject instanceof Number); // true
50+
console.log(numberValue instanceof Number); // false
51+
52+
isInteger()方法与安全整数
53+
54+
ES6 新增了 Number.isInteger()方法,用于辨别一个数值是否保存为整数
55+
56+
console.log(Number.isInteger(1)); // true
57+
console.log(Number.isInteger(1.00)); // true
58+
console.log(Number.isInteger(1.01)); // false
59+
60+
61+
*/

阶段十三/RegExp.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
3+
ECMAScript 通过 RegExp 类型支持正则表达式。正则表达式使用类似 Perl 的简洁语法来创建:
4+
5+
let expression = /pattern/flags;
6+
7+
这个正则表达式的 pattern(模式)可以是任何简单或复杂的正则表达式,包括字符类、限定符、分组、向前查找和反向引用。每个正则表达式可以带零个或多个 flags(标记),用于控制正则表达式的行为。
8+
9+
g:全局模式,表示查找字符串的全部内容,而不是找到第一个匹配的内容就结束。
10+
i:不区分大小写,表示在查找匹配时忽略 pattern 和字符串的大小写。
11+
m:多行模式,表示查找到一行文本末尾时会继续查找。
12+
y:粘附模式,表示只查找从 lastIndex 开始及之后的字符串。
13+
u:Unicode 模式,启用 Unicode 匹配。
14+
s:dotAll 模式,表示元字符.匹配任何字符(包括\n 或\r)。
15+
16+
// 匹配字符串中的所有"at"
17+
let pattern1 = /at/g;
18+
// 匹配第一个"bat"或"cat",忽略大小写
19+
let pattern2 = /[bc]at/i;
20+
// 匹配所有以"at"结尾的三字符组合,忽略大小写
21+
let pattern3 = /.at/gi;
22+
23+
所有元字符在模式中也必须转义, ( [ { \ ^ $ | ) ] } ? * + .
24+
25+
// 匹配第一个"bat"或"cat",忽略大小写
26+
let pattern1 = /[bc]at/i;
27+
// 匹配第一个"[bc]at",忽略大小写
28+
let pattern2 = /\[bc\]at/i;
29+
// 匹配所有以"at"结尾的三字符组合,忽略大小写
30+
let pattern3 = /.at/gi;
31+
// 匹配所有".at",忽略大小写
32+
let pattern4 = /\.at/gi;
33+
34+
35+
// 匹配第一个"bat"或"cat",忽略大小写
36+
let pattern1 = /[bc]at/i;
37+
// 跟 pattern1 一样,只不过是用构造函数创建的
38+
let pattern2 = new RegExp("[bc]at", "i");
39+
40+
/\[bc\]at/ "\\[bc\\]at"
41+
/\.at/ "\\.at"
42+
/name\/age/ "name\\/age"
43+
/\d.\d{1,2}/ "\\d.\\d{1,2}"
44+
/\w\\hello\\123/ "\\w\\\\hello\\\\123"
45+
46+
47+
const re1 = /cat/g;
48+
console.log(re1); // "/cat/g"
49+
const re2 = new RegExp(re1);
50+
console.log(re2); // "/cat/g"
51+
const re3 = new RegExp(re1, "i");
52+
console.log(re3); // "/cat/i"
53+
VM804:2 /cat/g
54+
VM804:4 /cat/g
55+
VM804:6 /cat/i
56+
57+
58+
*/

阶段十三/RegExp实例属性.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
3+
global:布尔值,表示是否设置了 g 标记。
4+
5+
ignoreCase:布尔值,表示是否设置了 i 标记。
6+
7+
unicode:布尔值,表示是否设置了 u 标记。
8+
9+
sticky:布尔值,表示是否设置了 y 标记。
10+
11+
lastIndex:整数,表示在源字符串中下一次搜索的开始位置,始终从 0 开始。
12+
13+
multiline:布尔值,表示是否设置了 m 标记。
14+
15+
dotAll:布尔值,表示是否设置了 s 标记。
16+
17+
source:正则表达式的字面量字符串(不是传给构造函数的模式字符串),没有开头和结尾的斜杠。
18+
19+
flags:正则表达式的标记字符串。始终以字面量而非传入构造函数的字符串模式形式返回(没有前后斜杠)。
20+
21+
let pattern1 = /\[bc\]at/i;
22+
console.log(pattern1.global); // false
23+
console.log(pattern1.ignoreCase); // true
24+
console.log(pattern1.multiline); // false
25+
console.log(pattern1.lastIndex); // 0
26+
console.log(pattern1.source); // "\[bc\]at"
27+
console.log(pattern1.flags); // "i"
28+
let pattern2 = new RegExp("\\[bc\\]at", "i");
29+
console.log(pattern2.global); // false
30+
console.log(pattern2.ignoreCase); // true
31+
console.log(pattern2.multiline); // false
32+
console.log(pattern2.lastIndex); // 0
33+
console.log(pattern2.source); // "\[bc\]at"
34+
console.log(pattern2.flags); // "i"
35+
36+
37+
*/

0 commit comments

Comments
 (0)