JS学习总结(红宝书第五章----基本引用类型)

基本引用类型

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日期/时间组件方法

JS学习总结(红宝书第五章----基本引用类型)
JS学习总结(红宝书第五章----基本引用类型)
(图片源自《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。返回数组包含两个属性:indexinput。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随机选择一个数字返回。

上一篇:python – 在计算Pandas创建的数据框中列的平均值时指定“skip NA”


下一篇:P1328 生活大爆炸版石头剪刀布