# 应用-内置对象

JavaScript 为我们提供了一些内置的对象,这些对象可以直接使用,为运用 JavaScript 解决实际问题带来方便

# Math

  1. Math 对象是 JavaScript 的原生对象,提供各种数学功能,该对象不能作为构造函数,也没有实例对象,毕竟要是能创建 Math 实例,鬼知道会是什么东西:牛顿大爷,欧拉大神?

  2. 静态属性

    Math 内置对象的静态属性 属性值
    Math.E 自然常数 e 2.71828
    Math.LN2 2 的自然对数 0.693147
    Math.LN10 10 的自然对数 2.302585
    Math.LOG2E 以 2 为底 e 的对数
    Math.LOG10E 以 10 为底 e 的对数
    Math.PI 常数π 3.141592653
    Math.SQRT1_2 0.5 的平方根 0.707
    Math.SQRT2 2 的平方根 1.414
  3. 静态方法

    Math 内置对象的静态方法 作用
    Math.abs() 绝对值
    Math.max() 最大值
    Math.min() 最小值
    Math.ceil() 向上取整
    Math.floor() 向下取整
    Math.round() 四舍五入
    Math.pow(num1, num2) 第一个参数为底数,第二个参数为指数的幂运算
    Math.sqrt() 平方根
    Math.log() 自然对数
    Math.exp() 常数e的参数次方
    Math.random() 返回一个伪随机数,范围是[0,1)
  4. 三角函数方法(单位为弧度制)

    Math.sin() Math.cos() Math.tan()
    Math.asin() Math.acos() Math.atan()

# Date

  1. 概述

    1. Date对象是 JavaScript 原生的时间库。它以国际标准时间(UTC)1970 年 1 月 1 日 00:00:00 作为时间的零点
  2. 普通函数的用法

    1. Date对象可以作为普通函数直接调用,返回一个代表当前时间的字符串。 无论有没有参数,直接调用Date总是返回当前时间。
  3. 构造函数的用法

    1. Date还可以当作构造函数使用。对它使用new命令,会返回一个Date对象实例。

    2. 作为构造函数时,Date对象可以接受多种格式的参数,返回一个该参数对应的 Date 实例。

      var currentDate = new Date(); //返回当前时间的日期对象
      var targetDate = new Date("2020-12-31"); //返回字符串对应时间的日期对象
      
  4. 日期的运算

    1. 类型自动转换时,Date实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。
  5. 静态方法

    Date 构造函数的方法 作用
    Date.now() 返回当前时间距离时间零点(1970 年 1 月 1 日 00:00:00 UTC)的毫秒数
    Date.parse() 解析日期字符串,返回该时间距离时间零点(1970 年 1 月 1 日 00:00:00)的毫秒数。
    Date.UTC() 接受年、月、日等变量作为参数,返回该时间距离时间零点(1970 年 1 月 1 日 00:00:00 UTC)的毫秒数。
  6. 实例方法

    Date 实例对象的 to 类方法 toJSON()返回一个 JSON 格式的 ISO 日期字符串
    toString()返回一个完整的日期字符串 toUTCString()返回对应的 UTC 时间
    toISOString()返回对应时间的 ISO8601 写法 toTimeString()返回时间字符串
    toDateString()返回日期字符串 toLocaleString()为表示本地时间的字符串
    Date 实例对象的 get 类方法 作用
    date.getTime() 返回总毫秒数
    date.getFullYear() 返回四位的年份
    date.getMonth() 返回月份(0 表示 1 月,11 表示 12 月)
    date.getDate() 返回实例对象对应每个月的几号(从 1 开始)
    date.getDay() 返回星期几,星期日为 0,星期一为 1
    date.getHours() 返回小时(0-23)
    date.getMinutes() 返回分钟(0-59)
    date.getSeconds() 返回秒(0-59)

# JSON

  1. JSON 格式

    JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式 , 目的是取代繁琐笨重的 XML 格式。

  2. JSON 对象

    JSON对象是 JavaScript 的原生对象,用来处理 JSON 格式数据。它有两个静态方法:JSON.stringify()JSON.parse()

  3. JSON.stringify()

    JSON.stringify方法用于将一个值转为 JSON 字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。

    如果参数对象有自定义的toJSON方法,那么JSON.stringify会使用这个方法的返回值作为参数 。

    toJSON方法的一个应用是,将正则对象自动转为字符串。因为JSON.stringify默认不能转换正则对象,但是设置了toJSON方法以后,就可以转换正则对象了。

  4. JSON.parse()

    JSON.parse()方法用于将 JSON 字符串转换成对应的对象数据结构。

# URL

内建的 URL 类提供了用于创建和解析 URL 的便捷接口。

没有任何一个网络方法一定需要使用 URL 对象,字符串就足够了。所以从技术上讲,我们并不是必须使用 URL。但是有些时候 URL 对象真的很有用。

  • 创建一个 URL 对象

创建一个新 URL 对象的语法:

let url = new URL(url, [base]);

下面这两个 URL 是一样的:

let url1 = new URL("https://javascript.info/profile/admin");
let url2 = new URL("/profile/admin", "https://javascript.info");
let url = new URL("http://www.example.com:80/path/to/myfile.html?key1=value1$key2=value2#SomewhereInTheDocument");
console.log(url);
// hash: "#SomewhereInTheDocument"
// host: "www.example.com"
// hostname: "www.example.com"
// href: "http://www.example.com/path/to/myfile.html?key1=value1$key2=value2#SomewhereInTheDocument"
// origin: "http://www.example.com"
// password: ""
// pathname: "/path/to/myfile.html"
// port: ""
// protocol: "http:"
// search: "?key1=value1$key2=value2"
// searchParams: URLSearchParams {}
// username: ""

1

2

3

4

5

  • URLSearchParams

假设,我们想要创建一个具有给定搜索参数的 url,例如:https://google.com/search?query=JavaScript (opens new window)

我们可以在 URL 字符串中提供它们。 然后通过 url.searchParams 来处理,它是一个 URLSearchParams 类型的实例对象

let url = new URL("https://google.com/search?query=JavaScript");
url.searchParams.set("q", "test me!");
console.log(url.href);
// https://google.com/search?query=JavaScript&q=test+me%21
console.log(url.searchParams.get("q"));
// test me!
  • URL 编码

在过去,在出现 URL 对象之前,人们使用字符串作为 URL。 如果使用字符串,则需要手动编码/解码特殊字符。

下面是用于编码/解码 URL 的内建函数:

  • encodeURI
  • decodeURI
  • encodeURIComponent
  • decodeURIComponent

区别是:

  • encodeURI 仅编码 URL 中完全禁止的字符。
  • encodeURIComponent 则会把正常 URL 中允许的字符比如:,?,=,&,#,也进行编码

一般来说特殊字符都是出现在 URL 参数中,因此encodeURIComponent更加常用

# RegExp

  • RegExp对象提供正则表达式的功能。
  • 正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本。匹配路径从左到右。
  • RegExp对象也可以做构造函数,但在实际应用中,基本上都采用字面量定义正则表达式。
  • RegExp.lastIndex 指定下一次的匹配索引位置
RegExp 对象的实例属性
reg.source 正则表达式的文本
reg.sticky 搜索是否 sticky
reg.unicode0 Unicode 功能是否开启
RegExp 对象的实例方法
reg.exec() 返回一个匹配的结果数组
reg.test() 返回是否匹配的布尔值
reg.toString() 返回正则表达式的字符串

| String 对象的实例方法 | | | str.match() | 返回结果 | | str.matchAll() | 返回所有结果 | | str.replace(reg,str) | 替换 | | str.search() | 返回索引 | | str.split() | 拆分为数组 |

TIP

正则表达式的使用看下篇