基本引用类型
Date
创建日期对象:
let now = new Date();
若不传入参数,对象将保存当前的日期和时间。若基于其他日期创建时间可以参考以下两种方法Date.parse()
Date.UTC()
比如创建一个“2019年5月23日”的日期对象
let someDate = new Date(Date.parse("May 23, 2019"));
还有Date.now()
的方法,返回执行时日期和时间的毫秒数。
5.1.1继承方法
toLocaleString()
和toString()
第一个返回与浏览器运行的本地环境一致的日期和时间,但不包含时区。第二个返回带时区的信息的日期和时间,而时间也是以24小时制的。两种只对调试有用,不能用于显示。
5.1.2日期格式化方法
toDateString()//显示日期的周几、月、日、年
toTimeString()//显示日期中的时、分、秒和时区
toLocateDateString()//显示日期的周几、月、日、年(格式特定于时区)
toLocateTimeString()//显示日期中的时、分、秒
5.1.3日期/时间组件方法
(图片源自《JavaScript高级程序设计》)
RegExp
正则表达式。以下给出了表示匹配模式的标记:
- g:全局模式,表示查找字符串的全部内容。
- i:不区分大小写,表示查找匹配时忽略pattern和字符串的大小写。
- m:多行模式,表示查找到一行文本末尾时会继续查找。
- y :粘附模式,表示只查找从last Index开始及以后的字符串。
- u:Unicode模式,启用Unicode匹配。
所有元字符在模式中必须转义。
let pattern1 = /at/g;//匹配字符中所有“at”
let pattern2 = /.at/gi;//匹配所有以at结尾的三字符组合,忽略大小写。
5.2.1实例属性(了解)
-
global
:布尔值,表示是否设置了g标记。 -
ignoreCase
:布尔值,表示是否设置了i标记。 -
unicode
:布尔值,表示是否设置了u标记。 -
sticky
:布尔值,表示是否设置了y标记。 -
lastIndex
:整数,下次搜索开始位置,始终为0。 -
multiline
:布尔值,表示是否设置了m标记。 -
dotAll
:布尔值,表示是否设置了s标记。 -
source
:正则表达式的字面量字符串。
5.2.2实例方法
主要方法是exec()
。只接收一个参数。如果找到了匹配项,则返回包含第一个匹配信息的数组;若没有则返回null。返回数组包含两个属性:index和input。index是字符串中匹配模式的其起始位置,input是要查找的字符串。数组第一个元素是匹配整个模式的字符串,其他的则是捕获组匹配的字符串。若没有捕获组,则数组只包含一个元素。
let text = "mom and dad and baby";
let pattern = /mom(and dad (and baby)?)?/gi;
lrt matches = pattern.exec(text);
console.log(matches.index); //0
console.log(matches.input); //"mom and dad and baby"
console.log(matches[0]); //"mom and dad and baby"
console.log(matches[1]); //"and dad and baby"
如果模式设置了全局标记,则每次调用exec()方法会返回一个匹配的信息,都会在字符串中向前搜索下一个匹配项。若没有设置,则永远返回第一个匹配信息。
5.2.3构造函数属性
-
input
属性中包含原始字符串。 -
leftConext
属性包含原始字符串之前的内容。 -
rightConext
属性包含原始字符串之后的内容。 -
lastMatch
属性包含整个匹配字符串。 -
lastParen
属性包含捕获组的上一次匹配。
let text = "this has been a short summer";
let pattern = /(.)hort/g;
if(pattern.test(text)){
console.log(RegExp.input); //this has been a short summer
console.log(RegExp.leftConext); //this has been a
console.log(RegExp.rightConext); //summer
console.log(RegExp.lastMatch); //short
console.log(RegExp.lastParen); //s
}
原始值包装类型
5.3.1Boolean
对应布尔值的引用类型,用Bollean构造函数并传入true或false。
5.3.2Number
-
toFixed()
返回包含指定小数点位数的数值字符串。
let num = 10;
console.log(num.toFixed(2));//"10.00"
若数值本身的小数位超过了参数指定的位数,则四舍五入到最接近的小数位。
-
toExponential()
返回科学计数法。 -
toPrecision()
根据数值和精度来决定调用上述两种方法。 -
isInteger()
辨别一个数值是否保存整数。
console.log(Number.isInteger(1));//true
console.log(Number.isInteger(1.00));//true
console.log(Number.isInteger(1.01));//false
5.3.3String
1.Javascript字符
-
length
表示字符串包含多少个16位码元(字符) -
charAT()
返回该位置的字符
2.字符串操作方法
-
concat()
拼接字符串。
let stringValue = "hello ";
let result = stringValue.concat("world");
console.log(result);//hello world
-
slice()
、substr()
、substring()
提取字符串。
第一个参数表示字符串开始位置,而对于前两个而言,第二个参数是提取结束位置。对于第三个则是返回字符串的数量。
let stringValue = "hello world";
console.log(stringValue.slice(3));//"lo world"
console.log(stringValue.substring(3));//"lo world"
console.log(stringValue.substr(3));//"lo world"
console.log(stringValue.slice(3,7));//"lo w"
console.log(stringValue.slice(3,7));//"lo w"
console.log(stringValue.slice(3,7));//"lo worl"
3.字符串位置方法indexOf()
和lastIndexOf()
,一个从头开始查找,一个从末尾。并且都可以传入第二个参数,表示开始查找的位置。
4.字符串包含方法includes()
let message = "foobarbaz";
console.log(message.includes("bar"));//true
5.trim()
方法
创建一个副本,删除前后所有空格符。
let stringValue = " hello world ";
let trimmedStringValue = stringValue.trim();
console.log(stringValue);//" hello world "
console.log(trimmedStringValue);//"hello world"
6.repeat()
方法
接受一个整数参数,表示要复制多少次。
let stringValue = "na";
console.log(stringValue.repeat(16)+"batman");
//na na na na na na na na na na na na na na na na batman
7.字符串大小写转换toLowerCase()
和toLocaleLowerCase()
let stringValue = "hello world";
console.log(stringValue.toLowerCase());//"HELLO WORLD"
单例内置对象
5.4.1Global
eval()
解释代码。
eval("console.log('hi')");
console.log("hi");
//两行代码等价
let msg = "hello world";
eval(console.log(msg));//"hello world"
5.4.2Math
1.min()
和max()
的方法
可接收任意多的参数,并返回数值。
2.舍入方法Math.round()
四舍五入
console.log(Math.round(25.9));//26
3.random()方法
let num = Math.floor(Math.random() * 9 + 2);
2~10随机选择一个数字返回。