# JavaScript | API 速查表

摘录一些常用的 API(且不限于方法,如属性、常量),在全面与精简中尽量作平衡。

表格内每一项时常以内在意义进行排序而非字母顺序排序,请**善用目录Ctrl+F**👍

# 目录


注:本文符号对应关系:

符号 对应
斜体 需要替换为对应内容的标记
[args] 可选参数



# 数据类型

# Number

详细解释:JavaScript Number 对象 | 菜鸟教程 (opens new window)

# 舍入

方法 描述(返回值)
num.toFixed([len]) 指定位小数位数的数字字符串
num.toPrecision([len]) 指定长度的数字字符串
num.toExponential([len]) 已被四舍五入并使用指数计数法的数字字符串

# 常量属性

属性 描述
Number.MAX_VALUE 返回 JavaScript 中可能的最大数
Number.MIN_VALUE 返回 JavaScript 中可能的最小数
Number.NEGATIVE_INFINITY 表示负的无穷大(溢出返回)
Number.NaN 表示非数字值("Not a Number")
Number.POSITIVE_INFINITY 表示无穷大(溢出返回)

# 其他函数

方法 描述
num.isFinite() 是否是有限数
num.isNaN() 是否为 NaN

# String

详细解释:JavaScript String 对象 | 菜鸟教程 (opens new window)

# 查找子串

方法 描述
str.indexOf(substr [, pos]) 顺序查找子串并返回位置
str.lastIndexOf(subStr [, pos]) 从末尾开始查找子串并返回位置
str.includes(substr [, pos]) 是否包含子串并返回boolean值
str.startsWith(str2) 是否按某字符串开始
str.endsWith(str2) 是否按某字符串结束

# 获取子串

方法 描述
str.slice(start [, end]) 支持负值
str.substring(start [, end]) 不支持负值,支持start大于end
str.substr(start [, length])` 指定字符串长度而非结束位置

推荐使用slice方法。


# 转义字符

字符 描述
\n 换行
\r 回车:不单独使用
Windows文本文件使用 \r\n 组合表示换行符
\', \" 引号
\\ 反斜线
\t 制表符
\xXX 十六进制的 unicode XX
\uXXXX UTF-16 编码的十六进制 unicode 符号
\u{X…XXXXXX}(1到6个字符) UTF-32 编码的十六进制 unicode 符号

# 其他

方法 描述
str.charAt(pos) 获得字符串特定位置字符(也可以使用方括号直接获得)
str.toLowerCase() 转换为小写
str.toUpperCase() 转换为大写
str.localeCompare(str2) 根据语言比较字符串而非字符代码大小
str.trim() 删除字符串前后的空格
str.repeat(n) 重复字符串 n 次

# 常用库

# Math

# 舍入

方法 描述
Math.floor() 向下舍入
Math.ceil() 向上舍入
Math.round() 四舍五入
Math.trunc() 只取整数部分(IE不支持)

这些函数都是取整,如需要保留n位小数,则使用:

  • toFixed(precision) 方法
  • 先乘10n,舍完再除10n

# 其他

方法 描述
Math.random() 获得随机数
Math.max(a, b, c...) 返回参数中的最大值
Math.min(a, b, c...) 返回参数中的最小值

# 对象

# Objects

// TODO


# Array

详细解释:JavaScript Array 对象 | 菜鸟教程 (opens new window)

# 添加/删除元素

方法 描述
push(...items) 从结尾添加元素
pop() 从结尾提取元素
shift() 从开头提取元素
unshift(...items) 从开头添加元素
splice(pos, deleteCount [, ...items]) 从 pos 开始删除 deleteCount 个元素并在当前位置插入元素
slice(start [, end]) 从 start 到 end(不包括end)的元素返回一个新的数组
concat(...items) 返回当前数组所有成员并添加 items(如为数组则提取其中元素)的新数组

注意: splice 方法会修改数组本身。


# 查询元素

方法 描述
indexOf(item [, pos]) 从 pos 开始找到 item 则返回索引,否则返回 -1
lastIndexOf(item [, pos]) 从 结尾找到 pos,如找到 item 则返回索引,否则返回 -1
includes(value) 数组有 value 则返回 true,否则返回 false
find(func) 通过函数过滤元素:返回符合 func 条件的第一个值
filter(func) 通过函数过滤元素:返回符合 func 条件的全部值

findIndex 和 find 类似,但返回索引而不是值。


# 数组转换

方法 描述
map(func) 从每个元素调用 func 的结果创建一个新数组
sort(func) 将数组按func条件判断并排序,然后返回。例:arr.sort((a, b) => a-b)
reverse() 在原地颠倒数组,然后返回它
split(delim) 将字符串按 delim 分隔符拆分为数组并返回
join(delim) 将数组按 delim 分隔符黏合为字符串并返回

注意: sort 方法、reverse 方法会修改数组本身。


# 迭代元素

方法 描述
forEach(func) 为每个元素调用 func,不返回任何东西

# 其他

方法 描述
Array.isArray(arr) 检查 arr 是否是一个数组
Array.from(object [, mapFunction, thisValue]) 通过给定的对象中创建一个数组

方法 描述
arr.some(func) 对数组每个元素调用函数 func,若存在有结果为 true,则返回 true,否则返回 false
arr.every(func) 对数组每个元素调用函数 func,若所有的结果为 true,则返回 true,否则返回 false
arr.fill(value [, start, end]) 用 value 重复填充数组
reduce(func(total, currVal [, currIdx, arr]) [, initVal]) 将数组元素计算为一个值(例如数组所有元素累加)
arr.copyWithin(target [, start, end]) 从数组的指定位置拷贝元素到数组的另一个指定位置中(覆盖现有)

# Map

方法 / 属性 描述
new Map() 创建 map
map.set(key, value) 根据键(key)存储值(value)。支持链式调用
map.get(key) 根据键返回值。若该键不存在,返回 undefined
map.has(key) 若键存在,返回 true,否则返回 false
map.delete(key) 移除该键的值
map.clear() 清空 map
map.size 返回当前元素个数

# Set

方法 / 属性 描述
new Set(iterable) 创建 set,可以利用可迭代对象(如数组)来创建
set.add(value) 添加值,返回 set 自身
set.delete(value) 删除值,若该 value 存在则返回 true ,否则返回 false
set.has(value) 如果 set 中存在该值则返回 true ,否则返回 false
set.clear() 清空 set
set.size 返回当前元素个数

# HTML DOM

# 节点导航

节点属性 描述
parentNode 父节点
childNodes[nodeNumber] 第 nodeNumber 位子节点
firstChild 首个子节点
lastChild 最后一个子节点
nextSibling 同一层级的后一个节点
previousSibling 同一层级的前一个节点

# 查找 HTML 元素

方法 描述
document.getElementById(id) 通过 id 来查找 HTML 元素
document.getElementsByTagName(name) 通过标签名来查找 HTML 元素
document.getElementsByClassName(name) 通过类名来查找 HTML 元素
document.querySelectorAll(name-with-selector) 通过 CSS 选择器查找 HTML 元素

注意getElement与getElements的区别


# 改变 HTML 元素

方法 描述
element.innerHTML = new-html-content 改变元素的 innerHTML
element.attribute = new-value 改变元素的属性值
element.setAttribute(attribute, value) 改变元素的属性值
element.style.property = new style 改变元素的 CSS 样式

# 增删 HTML 元素

# 旧方法

方法 描述
document.createElement(element) 创建 HTML 元素
elem.removeChild(child) 删除 HTML 元素
elem.appendChild(child) 添加 HTML 元素
elem.insertBefore(element) 插入 HTML 元素
elem.replaceChild(newchild, oldchild) 替换 HTML 元素
document.write(text) 写入 HTML 输出流

# 新方法

插入文本或节点

方法 插入位置
node.before() node 前面
node.prepend() node 内部开头
node.append() node 内部末尾
node.after() node 后面
node.replaceWith() 替换 node

插入 HTML

element.insertAdjacentHTML(position, html);

position 字符串值 插入位置
beforebegin elem 开头位置前插入 html
afterbegin elem 开头位置后插入 html
beforeend elem 结束位置前插入 html
afterend elem 结束位置后插入 html

其他方法

方法 描述
node.remove() 移除 node
node.cloneNode(bool) 克隆节点(深/浅)

# 对象、集合和属性

分为 HTML DOM Level 1 和 HTML DOM Level 3。

属性 描述(返回值) DOM
document.documentElement <html> 元素 3
document.head <head> 元素 3
document.title <title> 元素 1
document.body <body> 元素 1
document.scripts 所有 <script> 元素 3
document.images 所有 <img> 元素 1
document.forms 所有 <form> 元素 1
document.embeds 所有 <embed> 元素 3
document.anchors 拥有 name 属性的所有 <a> 元素。 1
document.links 拥有 href 属性的所有 <area><a> 元素 1
document.cookie 文档 cookie 1
document.doctype 文档 doctype 3
document.documentMode 浏览器使用的模式 3
document.readyState 文档加载状态 3
document.inputEncoding 文档编码(字符集) 3
document.URL 文档完整 URL 1
document.documentURI 文档 URI 3
document.baseURI 文档绝对基准 URI 3
document.referrer 引用的 URI(链接文档) 1
document.domain 文档服务器的域名 1
document.lastModified 文档更新的日期和时间 3
document.implementation DOM 实现 3
document.strictErrorChecking 是否强制执行错误检查 3

不常用:

属性 描述 DOM
document.applets 返回所有 <applet> 元素(HTML5 不建议使用) 1
document.domConfig 废弃。返回 DOM 配置 3

# 事件种类

事件名 描述
onload / onunload 进入/离开 页面时
onchange 内容 被改变 时
onmouseover / onmouseout 移入/移出 某个元素的上方时
onmousedown / onmouseup 鼠标按钮 按下/抬起时
onclick 鼠标按钮点击后(按下与抬起动作都在元素上方完成)

# nodeType 节点类型

节点 类型 例子
ELEMENT_NODE 1 <h1>W3School</h1>
ATTRIBUTE_NODE 2 class = "heading" (HTML DOM 弃用,仅 XML DOM)
TEXT_NODE 3 W3School
COMMENT_NODE 8 <!-- 这是注释 -->
DOCUMENT_NODE 9 HTML 文档本身(<html> 的父节点)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

# Attribute 特性

方法 / 属性 描述
elem.hasAttribute(name) 检查是否存在这个特性
elem.getAttribute(name) 获取这个特性
elem.setAttribute(name, value) 把这个特性设置为 name
elem.removeAttribute(name) 移除这个特性
elem.attributes 所有特性的集合

# BOM

# 元素尺寸

属性 包括内容 不包括内容 读写性
clientWidth 元素宽度、内边距 边框和外边距 只读
offsetWidth 元素宽度、内边距、边框 外边距 只读
scrollWidth 元素宽度、内边距、溢出尺寸 边框和外边距 可读写
style.width 元素宽度 内边距、边框和外边距 可读写

# 页面滚动

方法 描述
window.pageYOffset/pageXOffset 页面当前滚动位置
window.scrollTo(pageX, pageY) 绝对定位
window.scrollBy(x, y) 相对当前位置滚动
elem.scrollIntoView([topBoolean]) elem 与 与窗口顶部/底部对齐

# Timing 事件

方法 描述
setTimeout(function, milliseconds) 在等待指定的毫秒数后执行函数。
clearTimeout(timeoutVariable) 停止执行 setTimeout() 中规定的函数。
setInterval(function, milliseconds) 持续重复在等待指定的毫秒数后执行该函数。
clearInterval(timeoutVariable) 停止执行 clearInterval() 中规定的函数。

其中,timeoutVariablesetInterval() 的返回值。


# window.location 对象

属性 / 方法 描述
location.href 返回当前页面的 URL
location.hostname 返回 web 主机的域名
location.pathname 返回当前页面的路径或文件名
location.protocol 返回页面的 web 协议
location.assign(url) 加载新文档

# window.History 对象

window.history 对象包含浏览器历史,为了保护用户的隐私,JavaScript 访问此对象存在限制。

方法 描述
history.back() 等同于在浏览器点击后退按钮
history.forward() 等同于在浏览器中点击前进按钮

# window.navigator 对象

window.navigator 对象包含有关访问者的信息。

属性 / 方法 描述
navigator.appName 浏览器应用程序名称
navigator.appCodeName 浏览器应用程序代码名称
navigator.platform 浏览器平台(操作系统)
navigator.cookieEnabled cookie 是否启用
navigator.product 浏览器引擎名称
navigator.appVersion 浏览器版本信息
navigator.userAgent 由浏览器发送到服务器的 user-agent header
navigator.language 浏览器语言
navigator.onLine 浏览器是否在线
navigator.javaEnabled() Java 是否已启用
上次更新: 2020/3/14 16:40:23