JavaScript高级程序设计4 第五章 基本引用类型

引用值(或对象)是某个特定引用类型的实例。

对象被认为是某个特定引用类型的实例。新对象通过new操作符后跟一个构造函数来创建。

Date

Date.parse()方法接受一个表示日期的字符串参数,尝试将这个字符串转换为表示改日期的毫秒数。传给Date.parse()的字符串并不表示日期,则返回NaN。直接把表示日期的字符串传给Date构造函数,那么Date会在后台调用Date.parse()

日期时间组件方法

方法 说明
getTime() 返回日期的毫秒表示
getFullYear() 返回4位数年(如2022)
getMonth() 返回日期的月(0表示1月,11表示12月)
getDate() 返回日期的日(1—31)
getDay() 返回日期中表示周几的数值( 0 表示周日, 6 表示周六)
getHours() 返回日期中的时(0—23)
getMinutes() 返回日期中的分( 0~59)
getSeconds() 返回日期中的秒( 0~59)

RegExp

  • g:全局模式,表示查找字符串的全部内容,而不是找到第一个匹配的内容就会结束
  • i:不区分大小写
  • m:多行模式,表示查找到一行文本末尾时会继续查找
  • y:粘附模式,表示只查找从lastIndex开始及之后的字符串。
  • u:Unicode模式,启用Unicode匹配
  • s:dotAll模式,表示元字符,匹配任何字符(包括\n或\r)

正则表达式可以使用RegExp构造函数来创建,它接收两个参数:模式字符串和可选的标记字符串。

可以使用RegExp基于已有的正则表达式实例修改他们的标记。

RegExp实例方法

RegExp实例的主要方法是exec(),主要用于匹配捕获组使用。这个方法只接收一个参数,即要应用模式的字符串。如果找到了匹配项,则返回包含第一个匹配信息的数组;如果没有找到匹配项,则返回null

如果模式设置了全局标记,则每次调用exec()方法会返回一个匹配的信息。如果没有设置全局标记,则无论对同一个字符串调用多少次exec(),都只会返回第一个匹配信息。

如果模式设置了粘附标记y,则每次调用exec()就只会在lastIndex的位置上寻找匹配项。粘附标记覆盖全局标记。

test(),接收一个字符串参数。如果输入的文本与模式匹配,则参数返回true,否则返回false

RegExp构造函数的属性

全名 简写 说明
input $_ 最后搜索的字符串
lastMathch $& 最后匹配的文本
lastParen $+ 最后匹配的捕获组
leftContext $` input 字符串中出现在 lastMatch 前面的文本
rightContext $' input 字符串中出现在 lastMatch 后面的文本

原始值包装类型

在原始值包装类型的实例上调用typeof会返回‘object’,所有原始值包装对象都会转为转换为布尔值 true。

Object构造函数作为一个工厂方法,能够根据传入值的类型返回原值包装类型的实例

Number()

  • toString()方法可选地接收一个表示基数 的参数,并返回相应基数形式的数值字符串。

  • toFixed()方法返回包含指定小数点位数的数值字符串。

  • 原始数值在调用typeof时返回‘number’,而Number对象则返回‘object’。

  • Number.isInteger()方法,用于辨别一个数值是否保存为整数

String()

  • 每个String对象都有一个length属性,表示字符串中字符的数量
  • charAt()方法返回给定索引位置的字符
  • concat(),用于将一个或多个字符串拼接成一个新字符串,可以接收多个参数
  • slice(),substr()和substring()。这3个方法都返回调用他们的字符串的一个子字符串,而且都接收一或两个参数,第一个参数表示子字符串开始的位置,第二个参数表示子字符串结束。对slice()和substring()而言,第二个参数是提取结束的位置(即该位置之前的字符会被提取出来)。对substr()而言,第二个参数表示返回子字符串的字符数量。任何情况下,省略第二个参数都意味着提取到字符串末尾。都不会修改调用他们的字符串,只会返回提取到的新字符串值。
  • slice()方法将所有负值参数都当成字符串长度加上负参数值。
  • substr()方法将第一个负参数值当成字符串长度加上该值,将第二个负参数值转换为0.
  • substring()方法将所有负参数值都转换为0
  • indexOf()和lastIndexOf()这两个方法从字符串中搜索传入的字符串,并返回位置(如果没找到返回-1),这两个方法都可以接收可选的第二个参数,表示开始搜索的位置。
  • 判断字符串中是否包含另一字符串的方法:startsWith()、endsWith()和includes(),返回表示是否包含的布尔值,startsWith()和includes()方法接收可选的第二个参数,表示开始搜索的位置。endsWith()方法接收可选的第二个参数,表示应该当做字符串末尾的位置,如果不提供这个参数,那么默认就是字符串长度,如果提供这个参数,那么就好像字符串只有那么多字符一样。
  • trim()创建字符串一个副本,删除前、后所有空格符,在返回结果,trim()返回的是字符串的副本,因此原始字符串不受影响。
  • repeat()方法。这个方法接收一个整数参数,表示要将字符串复制多少次,然后返回拼接所有副本后的结果
  • padStart()和padEnd()方法会复制字符串,如果小于指定长度,则在相应一边填充字符,直至满足长度条件。这两个方法的第一个参数是长度,第二个参数是可选的填充字符串,默认为空格。
  • tolowerCase()和toLocaleLowerCase()都将字符串转为小写字符,如果不知道代码涉及什么语言,则最好使用地区特定的转换方法。
  • 字符串模式匹配方法:
    • match()方法接收一个参数,可以是一个正则表达式字符串,也可以是RegExp对象。match()方法返回的数组与RegExp对象的exec()方法返回的数组是一样的:第一个元素是与整个模式匹配的字符串,其余元素则是与表达式中的捕获组匹配的字符串。
    • replace()方法接收两个参数,第一个参数可以是RegExp对象或一个字符串(这个字符串不会转换为正则表达式),第二个参数可以是一个字符串或一个函数。如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,第一个参数必须为正则表达式并且带全局标记。
    • split()这个方法会根据传入的分隔符将字符串拆分成数组

单例内置对象

  • 通过eval()执行的代码属于该调用所在上下文,被执行的代码与该上下文拥有相同的作用域链。通过eval()定义的任何变量和函数都不会被提升,这是因为在解析代码的时候,它们是被包含在一个字符串中的。它们只是在eval()执行的时候才会被创建。在严格模式下,在eval()内部创建的变量和函数无法被外部访问。
  • 浏览器将window对象实现为Global对象的代理。因此所有全局作用域中声明的变量和函数都变成了window的属性。

Math

Math对象有一些属性,主要用于保存数学中的一些特殊值。

  • Math.ceil()方法始终向上舍入为最接近的整数
  • Math.floor()方法始终向下舍入为最接近的整数
  • Math.round()方法执行四舍五入
  • Math.fround()方法返回数值最接近的单精度浮点值表示。
  • Math.random()方法返回一个0-1范围内的随机数,其中包含0但不包含1
posted @ 2021-06-03 13:56  _大可乐  阅读(44)  评论(0编辑  收藏  举报