陈颂光
全栈工程师,承接从编译器到网站的各类软件开发与咨询,也可以聊历史哲学。
关注我的 GitHub

Javascript概览

Javascript(ECMAScript)是,除了作为客户端网页脚本的事实标准外,也逐渐在服务器端取得一些应用(如Node),还在个别其它地方用作脚本语言(如PDF)。JS是一种基于对象的动态类型语言,但并不基于类而基于原型。JS的对象可看作其它语言中的散列表,键值对即属性(键称为属性的名字,值称为属性的值)不区分方法和域,其中每个对象有一个prototype属性的值称为对象的原型。

类型系统

分类

基本类型

未定义类型

只有一个值undefined,未被赋值的变量都有这个值。

空类型

只有一个值null

布尔类型

只有两个值truefalse分别表示真、假。

符号类型

符号用作对象的属性的键,符号都是惟一和不可变的,并与undefined或字符串关联。

字符串类型

字符串是由零个或多个16位无符号整数组成的序列,用从0开始的指标引用各整数。其中的整数通常用于表示UTF-16代码点。

数值类型

数值即IEEE754双精度浮点数。

对象类型

对象就是属性的集合,属性即键值对,由键(是字符串的话叫名字)。属性可分为:

  • 数据属性关联一个值和一些布尔配置:
    • [[Value]]值为取访问属性时得到的值(默认为undefined
    • [[Writable]]决定能否改变属性的值(默认为false
    • [[Enumerable]]决定能否用for‐in遍历(默认为false
    • [[Configurable]]决定能否删除属性、改变配置(除把[[Writable]]改为false)、改为访问器属性(默认为false
  • 访问器属性关联一个或两个访问器函数和一些布尔配置:
    • [[Get]]值为取访问时被以空参数列表调用以返回值的函数对象(默认为undefined
    • [[Set]]值为设访问时被以被设值为单一参数调用的函数对象(默认为undefined
    • [[Enumerable]]决定能否用for‐in遍历(默认为false
    • [[Configurable]]决定能否删除属性、改变配置、改为数据属性(默认为false

类型转换

到基本类型

  1. 如对象有toPrimitive方法,调用它并返回结果
    • 若提示为字符串,依次尝试调用对象的toStringvalueOf方法,得到非对象就返回它
    • 依次尝试调用对象的valueOftoString方法,得到非对象就返回它
  2. 抛出TypeError异常

到布尔类型

undefinednullfalse+0-0NaN""被转换为false,否则为true

到数值类型

结果
undefined NaN
null +0
false +0
true 1
数值 自身
字符串 类似于解析数值(另支持Infinity+Infinity-Infinity),容许前后有空白,全空白则返回0,无法解析则返回NaN
符号 抛出TypeError异常
对象 先转换为基本类型(提示数值),再按上述规则

到字符串类型

结果
undefined "undefined"
null "null"
false "false"
true "true"
数值 其字符串表示
字符串 自身
符号 抛出TypeError异常
对象 先转换为基本类型(提示字符串),再按上述规则

到对象类型

结果
undefined 抛出TypeError异常
null 抛出TypeError异常
布尔值 对应Boolean对象
数值 对应Number对象
字符串 对应String对象
符号 对应Symbol对象
对象 自身

语法

JS代码分为:

  • 全局代码不解析为FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition、ArrowFunction、ClassDeclaration或ClassExpression的部分
  • Eval代码是给内置函数eval的代码文本的全局部分
  • 函数代码为解析为FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition、ArrowFunction、ClassDeclaration或ClassExpression的部分,但不包括嵌套的
  • 模块代码为作为模块体的代码文本,在模块初始化时运行,不包括解析为FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition、ArrowFunction、ClassDeclaration或ClassExpression的部分

在以下情况会启用严格模式:

  • 由含的导言开始的全局代码
  • 模块代码
  • 类定义和类表达式中
  • 由含的导言开始的全局代码或由严格模式代码直接调用的eval代码
  • 由Use Strict导言开始或关联的FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition、ArrowFunction、ClassDeclaration或ClassExpression包含于严格模式代码的函数代码
  • 开始于含Use Strict导言的作为内置函数和生成器构造器的参数的函数代码

词法

注释

JS的注释与Java等等类似,有两种形式:

  • //到行结束符前(不包括行结束符以免影响自动分号插入)
  • /*开始到最近的*/

标号

以下之一:

{ ( ) [ ] . ... ; , < > <= >= == != === !== + ‐ * % ++ ‐‐ << >> >>> & | ^ ! ~ && || ? : = +=
‐= *= %= <<= >>= >>>= &= |= ^= => ** **=
/ /=
}
自动分号插入

假设从左到右解析脚本或模块,

  • 若遇到没有生成规则接受一个标记,并且
    • 该标记前有行结束符
    • 该标记为}
    • 前一标记为)且插入的分号会被解析为do-while语句的结束 则在标记前插入分号
  • 若遇到输入结束而未能完成解析,则插入分号到输入结束处
  • 若遇到只有受限的生成规则容许的标记且会成为标注“[no LineTerminator here]”(如=>++--前;return、continue、break、throw、yield后;)后的首个符号,但与上一标记相隔至少一个行结束符,则在标记前插入分号

然而,如插入的分号会被解析为空语句或for语句头的两个分号之一,则不进行插入。

标识符

标识符由$_或有ID_START属性的Unicode字符开始,然后是零个可多个$_、U+200C、U+200D、或有ID_Continue属性的Unicode字符,其中的字符也可用转义序列如\u{十六进制整数}\uhhhh(但仍要满足前述规则)。但以下是保留字:

  • null
  • truefalse
  • 关键字breakdointypeofcaseelseinstanceofvarcatchexportnewvoidclassextendsreturnwhileconstfinallysuperwithcontinueforswitchyielddebuggerfunctionthisdefaultifthrowdeleteimporttry
  • enumawait 两个标识符视为相等当且仅当它们对应相同的代码点序列

空常量

null

布尔常量

truefalse

字符串常量

字符串由"包围的以下序列组成:

  • "\和行结束符外的其它字符,表示它自身
  • \后接一个或以上行结束符,不表示什么
  • \u后接四个十六进制数字表示有指定代码点的字符
  • \u{一个或以上十六进制数字}表示有指定代码点的字符
  • \x后接两个十六进制数字表示有指定代码点的字符
  • \0\b\t\n\v\f\r\"\'\\含义如Java
  • \后接无关字符则表示该字符

上述的"可以同时改为'

正则表达式常量

正则表达式表示为/表达式/选项,其中表达式中首字符不能为*,也不能有换行或/,选项为可用于标识符中非开始处的字符组成的序列。

模板常量

模板由`包围,其中除由${}包围处外,由以下组成:

  • `\$外的其它字符
  • \后接一个或以上行结束符
  • \u后接四个十六进制数字
  • \u{一个或以上十六进制数字}
  • \x后接两个十六进制数字
  • \0\b\t\n\v\f\r\"\'\\
  • \后接无关字符则表示该字符

数值常量

  • 二进制的0b0B后接由0和1`组成的非空序列
  • 八进制的0o0O后接由07组成的非空序列
  • 十进制的依次由以下部分组成:
    • 可选的整数部分为由09组成的序列
    • 可选的小数部分为.和由09组成的序列(与上一条加起来至少要有一个数字)
    • 可选的指数部分由eE、可选的+-、由09组成的非空序列组成
  • 十六进制的0x0X后接由09afAF组成的非空序列

表达式

初等表达式 效果
标识符 值为对应绑定的值
yield 值为对应绑定的值
this  
常量 值为相应的空常量、布尔常量、字符串常量、数值常量
数组常量 值为对应的数组
对象常量 值为对应的对象
function 标识符 ( 形参列表 ) { 函数体 } 值为对应函数
function ( 形参列表 ) { 函数体 } 值为对应函数
类表达式 语法同类声明,值为对应类
生成器表达式 语法同生成器声明,值为对应函数
正则表达式常量 值为相应的正则表达式对象
模板常量 值为替换结果
( 表达式 ) 值为表达式的值

其中,

  • 数组常量由[开始、由]结束,中间为由,分隔的零个或多个赋值表达式或空,赋值表达式前可以有...以表示展开
  • 对象常量由{开始、由}结束,中间为由,分隔的零个或多个属性定义:
    • 标识符
    • 标识符=赋值表达式
    • 属性名:赋值表达式,其中属性名为标识符、字符串、数值或[赋值表达式]
    • 方法声明
成员表达式(辅助) 效果
初等表达式 值为表达式的值
成员表达式 [ 表达式 ] 值为成员表达式的值的名为表达式的值的属性
成员表达式 . 标识符 值为成员表达式的值的指定属性
成员表达式 模板常量 值为以模板常量给出的参数值列表调用成员表达式的值的返回值
super [ 表达式 ] 值为名为表达式的值的超属性
super . 标识符 值为指定的超属性
new . target 值为新的目标
new 成员表达式 参数 值为用创建表达式的值为构造器、以指定参数值列表创建的对象
创建表达式(辅助) 效果
成员表达式 表达式的值
new 创建表达式 值为用创建表达式的值为构造器创建的对象
调用表达式(辅助) 效果
成员表达式 参数 值为以给定参数值列表调用成员表达式的值的返回值
super 参数 值为用父构造器、以给定参数值列表创建的对象
调用表达式 参数 参考前表
调用表达式 [ 表达式 ] 参考前表
调用表达式 . 标识符 参考前表
调用表达式 模板常量 参考前表

其中,参数由(开始、由)结束,中间为由,分隔的零个或多个赋值表达式,赋值表达式前可以有...以表示展开

左值表达式 效果
创建表达式 表达式的值
调用表达式 表达式的值
自增减表达式(辅助) 效果
a++ 自增a,值为增加前的值
a– 自减a,值为减少前的值
++a 自增a(a为一元表达式),值为增加后的值
–a 自减a(a为一元表达式),值为减少后的值
一元表达式 效果
`delete 一元表达式 删除属性或绑定,值表示是否成功
void 一元表达式 求值一元表达式,值为undefined
typeof 一元表达式 值为一元表达式的类型,如”undefined”、”boolean”、”function”、”number”、”symbol”或”string”等等
+ 一元表达式 值为一元表达式的值(转换为数值)
‐ 一元表达式 值为一元表达式的负值(转换为数值)
~ 一元表达式 值为一元表达式的值转换为32位整数后的按位补
! 一元表达式 值为一元表达式的值转换为布尔后的反
指数表达式 说明
自增减表达式 ** 指数表达式 值为幂
积性表达式 说明
积性表达式 * 指数表达式 值为积
积性表达式 / 指数表达式 值为商
积性表达式 % 指数表达式 值为余
加性表达式 说明
加性表达式 + 积性表达式 值为和或字符串串接
加性表达式 - 积性表达式 值为差
移位表达式 说明
移位表达式 << 和性表达式 值为左移位结果(位数只有低5位有效)
移位表达式 >> 和性表达式 值为右算术移位结果(位数只有低5位有效)
移位表达式 >>> 和性表达式 值为右逻辑移位结果(位数只有低5位有效)
关系表达式 说明
关系表达式 < 移位表达式 是否小于
关系表达式 > 移位表达式 是否大于
关系表达式 <= 移位表达式 是否小于等于
关系表达式 >= 移位表达式 是否大于等于
关系表达式 in 移位表达式 是否有属性
关系表达式 instanceof 移位表达式 是否派生自
相等表达式 说明
相等表达式 == 关系表达式 是否相等
相等表达式 != 关系表达式 是否不相等
相等表达式 === 关系表达式 是否严格相等
相等表达式 !== 关系表达式 是否不严格相等
位与表达式 说明
位与表达式 & 相等表达式
位异或表达式 说明
位异或表达式 ^ 位与表达式 异或
位或表达式 说明
位或表达式 | 位异或表达式
逻辑与表达式 说明
逻辑与表达式 && 位或表达式 短路与
逻辑或表达式 说明
逻辑或表达式 || 逻辑与表达式 短路或
条件表达式 说明
逻辑或表达式 ? 赋值表达式 : 赋值表达式 首表达式转换为布尔值真时值为次表达式的值,否则为末表达式的值
赋值表达式 说明
条件表达式  
yield表达式  
箭头表达式 对应匿名函数
左值表达式 赋值运算符 赋值表达式 若左值表达式为对象常量或数组常量,再求值赋值表达式,用于更新解构后的左值表达式;否则,先后求值左值表达式和赋值表达式,用后者的值更新前者(后者为匿名函数时也设置其name属性)

其中赋值运算符为以下之一:

= *= /= %= += ‐= <<= >>= >>>= &= ^= |= **=

箭头表达式则形如箭头形参 => {函数体}箭头形参 => 不始于花括号的赋值表达式,其中箭头形参为以下之一:

  • 标识符
  • ( 表达式 )
  • ( )
  • ( ... 标识符 )
  • ( ... 绑定模式 )
  • ( 表达式 , ... 标识符 )
  • ( 表达式 , ... 绑定模式 )

yield表达式形如以下之一:

  • yield表示生成undefined
  • yield 赋值表达式表示生成赋值表达式的值
  • yield * 赋值表达式表示生成赋值表达式的值(作为迭代器)的最后一个元素
逗号表达式 效果
a,b 先后求值a、b,值为后者的值

语句和声明

语句

语句|语法|效果 :—|:—|:— 块|由{开始、由}结束,中间为由;分隔的零个或多个语句或声明|在新环境中按块中声明初始化,然后在块中依次运行块中语句,最后得到的非空值(如有)作为块语句的值,退出块前恢复原来环境 变量|由var开始,然后是由,分隔的一个或多个变量声明,最后以;结束|引入变量 空|;| 表达式|表达式 ;,但开始时向前看符号非{ functionclasslet [|值为表达式的值 分支|if ( 表达式 ) 语句 else 语句|若表达式求值转换为布尔值true,值为首语句的值,否则为次语句的值 分支|if ( 表达式 ) 语句|若表达式求值转换为布尔值true,值为首语句的值,否则为undefined 继续|continue 表达式;continue;|结束指定或最内层循环的当前迭代 离开|break 表达式;break;|离开指定或最内层循环或switch语句 返回|return 表达式;|返回表达式的值 环境|with ( 表达式 ) 语句|先把表达式求值为一个对象,然后以它和原环境构造新环境运行语句,以语句的值为值 循环|do 语句 while ( 表达式 ) ;|运行语句,再求值表达式,若其值转换为true则重复,值为最后运行的非空值语句的值(如有) 循环|while ( 表达式 ) 语句|求值表达式,若其值转换为true则求值语句并重复,值为最后运行的非空值语句的值(如有) 循环|for ( [lookahead ∉ { let [ }] 表达式 opt ; 表达式 opt ; 表达式 opt ) 语句 |先求值首个表达式,然后在每次迭代前求值次表达式,若其值转换为true则运行语句再求值末表达式,再准备下次迭代,其值为语句的最后一个非空值 循环|for ( var 变量声明列表 ; 表达式 opt ; 表达式 opt ) 语句|先声明变量,然后在每次迭代前求值首表达式,若其值转换为true则运行语句再求值末表达式,再准备下次迭代,其值为语句的最后一个非空值 循环|for ( 词法作用域变量声明 表达式 opt ; 表达式 opt ) 语句|在新环境中声明变量,然后在每次迭代前求值首表达式,若其值转换为true则运行语句再求值末表达式,再准备下次迭代,其值为语句的最后一个非空值 循环|for ( [lookahead ∉ { let [ }] 左值表达式 in 表达式 ) 语句|先求值表达式得到一对象,从而枚举其属性键字符串的迭代器,每次迭代中把当前元素(解构)赋值给左值表达式的值,再运行语句 循环|for ( var for绑定 in 表达式 ) 语句|先求值表达式得到一对象,从而枚举其属性键字符串的迭代器,每次迭代中把当前元素(解构)赋值给for绑定,再运行语句 循环|for ( for声明 in 表达式 ) 语句|先求值表达式得到一对象,从而枚举其属性键字符串的迭代器,每次迭代中把当前元素(解构)赋值给for声明中的for绑定,再运行语句 循环|for ( [lookahead ≠ let] 左值表达式 of 赋值表达式 ) 语句|先求值赋值表达式得到一迭代器,每次迭代中把当前元素(解构)赋值给左值表达式的值,再运行语句 循环|for ( var for绑定 of 赋值表达式 ) 语句|先求值赋值表达式得到一迭代器,每次迭代中把当前元素(解构)赋值给for绑定,再运行语句 循环|for ( for声明 of 赋值表达式 ) 语句|先求值赋值表达式得到一迭代器,每次迭代中把当前元素(解构)赋值给for声明中的for绑定,再运行语句 选择|switch ( 表达式 ) {零个或多个case子句和至多一个default子句 } ,其中case子句如case 表达式 : 零个或多个语句或声明、default子句如default : 零个或多个语句或声明|先求值表达式,然后按块中初始化,找首个case表达式与它===的case子句(没有则default子句),从该处开始运行并返回最后的非空值(如有) 标号|标识符 : 语句或函数声明|与内部的语句或函数声明类似,只是其中的break和continue可用这标识符 抛出|throw 表达式 ;|抛出表达式的值 尝试|try 块 catch ( 捕获参数 ) 块|若首个块正常返回则以其返回值为值,否则在新环境中用抛出的值初始化捕获参数后运行次块,以其返回状态为本语句的返回状态 尝试|try 块 finally 块|依次运行两块,若次块正常结束,值为首块的值 尝试|try 块 catch ( 捕获参数 ) 块 finally 块|若首个块正常返回则以其返回值为A;否则在新环境中用抛出的值初始化捕获参数后运行次块,以其返回状态为A。然后运行末块,若正常结束,返回状态如A 调试|debugger`|进行与实现有关的调试工作并返回结果

其中for声明形如let for绑定const for绑定,而for绑定为标识符或绑定模式;捕获参数为标识符或绑定模式

变量声明为以下之一:

  • 标识符
  • 标识符 = 赋值表达式
  • 绑定模式 = 赋值表达式 其中绑定模式为以下之一:
  • 对象模式由{}包围,中间是由,分隔的零个或多个标识符标识符 = 赋值表达式
  • 数组模式由[开始、由]结束,中间为由,分隔的零个或多个标识符标识符 = 赋值表达式绑定模式绑定模式 = 赋值表达式或空,最后也可以是...后接标识符或绑定模式

声明

类声明

class开始,然后是可选的标识符(类名),然后是可选的extends 左值表达式,最后是由{}包围的零个或多个类元素:

  • 方法声明
  • static 方法声明
  • ;

其中方法声明如以下之一:

  • 属性名 ( 形参列表 ) { 函数体 }
  • * 属性名 ( 形参列表 ) { 函数体 }
  • get 属性名 ( ) { 函数体 }
  • set 属性名 ( 绑定元素 ) { 函数体 }
词法作用域变量声明

letconst开始,然后是由,分隔的一个或多个以下形式的绑定:

  • 标识符
  • 标识符 = 赋值表达式
  • 绑定模式 = 赋值表达式
函数声明

形如function 标识符 ( 形参列表 ) { 函数体 }function ( 形参列表 ) { 函数体 },其中

  • 形参列表为由零个或多个由,分隔形参组成:
    • 绑定元素
    • 最后一个也可以是...后接标识符或绑定模式
  • 函数体为可选的语句列表

值得一提的是,在严格模式下函数体可进行尾调用优化。

生成器声明

形如function * 标识符 ( 形参列表 ) { 函数体 }function * ( 形参列表 ) { 函数体 }

脚本和模块

脚本就是零个或多个语句或声明的列表。

模块则是零个或多个导入声明、导出声明、语句或声明的列表。

导入声明形如以下之一:

  • `import 标识符 from 字符串字面值 ;
  • `import * as 标识符 from 字符串字面值 ;
  • `import { 标识符 , …} from 字符串字面值 ;
  • `import 标识符 , * as 标识符 from 字符串字面值 ;
  • `import 标识符 , { 标识符 , …} from 字符串字面值 ;
  • import 字符串字面值 ;

导出声明形如以下之一:

  • export * from 字符串字面值 ;
  • export {标识符 , ...} from 字符串字面值 ;
  • export {标识符 , ...} ;
  • export 变量语句
  • export 声明
  • export default 函数声明或生成器声明
  • export default 类声明
  • export default [lookahead ∉ { function , class }] 赋值表达式 ;

内置对象

如无特殊说明,约定:

  • 如果调用时参数不足,没给定的视为undefined;如果参数过多,多余的会被忽略或用于实现有关的用途。
  • 内置函数和构造器的原型为Function.prototype,其它内置对象的原型为Object.prototype
  • 内置函数的length属性值为接受的最多命名参数个数,不可写、不可枚举、可设置。
  • 非匿名内置函数的name属性值为函数名,不可写、不可枚举、可设置。
  • 其它数据属性可写、不可枚举、可设置。
  • 其它访问器属性不可枚举、可设置。

全局对象

惟一的全局对象在进入任何执行正文前创建,原型与实现有关,不能作为函数或构造器。

值属性 说明
Infinity $+\infty$,不可写、不可设置
NaN NaN,不可写、不可设置
undefined undefined,不可写、不可设置
函数属性 说明
eval(x) 在当前上下文执行代码并返回结果
isFinite(number) 返回number是否可转换为非NaN或正负无穷的数值
isNaN(number) 返回number是否可转换为NaN的数值
parseFloat(string) 返回string解析得的十进制数值
parseInt(string,radix) 返回string解析得的radix进制数值,radix默认为10(除非string由0x0X开始)
decodeURI(encodedURI) 解码URI
decodeURIComponent(encodedURIComponent) 解码URI的一部分
encodeURI(URI) 编码URI
encodeURIComponent(URIComponent) 编码URI的一部分

构造器属性|说明 :—|:— Array ( . . . ) ArrayBuffer ( . . . ) Boolean ( . . . ) DataView ( . . . ) Date ( . . . )18.3.6 Error ( . . . ) EvalError ( . . . ) Float32Array ( . . . ) Float64Array ( . . . ) Function ( . . . ) Int8Array ( . . . ) Int16Array ( . . . ) Int32Array ( . . . ) Map ( . . . ) Number ( . . . ) Object ( . . . ) Proxy ( . . . ) Promise ( . . . ) RangeError ( . . . ) ReferenceError ( . . . ) Set ( . . . ) String ( . . . ) Symbol ( . . . ) SyntaxError ( . . . ) TypeError ( . . . ) Uint8Array ( . . . ) Uint8ClampedArray ( . . . ) Uint16Array ( . . . ) Uint32Array ( . . . ) URIError ( . . . ) WeakMap ( . . . ) WeakSet ( . . . )

其它属性 说明
JSON 处理JSON用的工具对象
Math 数学用的工具对象
Reflect 反射用的工具对象

基本的对象

Object

构造器 说明
Object ( [ value ] ) 创建或转换对象

Object原型为函数原型。

属性|说明 :—|:— Object.assign ( target, …sources )|把各source的各自身可枚举属性都复制到target Object.create ( O, Properties )|创建以O为原型的对象并加入指定属性 Object.defineProperties ( O, Properties )|给O加入指定属性 Object.defineProperty ( O, P, Attributes )|给O加入指定属性 Object.freeze ( O )|冻结对象 Object.getOwnPropertyDescriptor ( O, P )|返回自身属性描述 Object.getOwnPropertyNames ( O )|返回自身属性名数组 Object.getOwnPropertySymbols ( O )|返回自身属性名符号数组 Object.getPrototypeOf ( O )|返回原型 Object.is ( value1, value2 )|返回两者是否等值 Object.isExtensible ( O )返回是否可扩展 Object.isFrozen ( O )|返回O是否被冻结 Object.isSealed ( O )|返回O是否没有被冻结 Object.keys ( O )|返回键数组 Object.preventExtensions ( O )|禁止扩展 Object.prototype|原型,不可写、不可配置 Object.seal ( O )|解冻O Object.setPrototypeOf ( O, proto )|设置原型

Object.prototype原型为null。

属性 说明
Object.prototype.constructor 即Object
Object.prototype.hasOwnProperty ( V ) 返回是否有自身属性
Object.prototype.isPrototypeOf ( V ) 返回是否为V的原型
Object.prototype.propertyIsEnumerable ( V ) 返回指定自身属性是否可枚举
Object.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] ) 返回本地化的字符串
Object.prototype.toString ( ) 返回类型的字符串表示
Object.prototype.valueOf ( ) 返回对象

Function

构造器 说明
Function ( p1, p2, … , pn, body ) 创建函数
属性 说明
Function.length 值为1、不可写
Function.prototype 不可写、不可配置
属性 说明
Function.prototype.apply ( thisArg, argArray ) 应用函数
Function.prototype.bind ( thisArg, …args) Curry化
Function.prototype.call (thisArg, …args) 调用函数
Function.prototype.constructor 初始为Function
Function.prototype.toString ( ) 返回函数代码的字符串表示
属性 说明
length 典型参数个数,不可写
name 字符串描述,不可写
prototype 作为构造器时用的原型,不可配置

Boolean

构造器 说明
Boolean ( value ) 按值创建布尔
属性 说明
Boolean.prototype 不可写、不可配置
属性 说明
thisBooleanValue ( value ) 返回值
Boolean.prototype.constructor 初始为Boolean
Boolean.prototype.toString ( ) 返回值的字符串表示

Symbol

构造器 说明
Symbol ( [ description ] ) 创建符号
属性 说明
Symbol.for ( key ) 返回指定键对应的符号
Symbol.hasInstance 一个常用符号,不可写、不可设置
Symbol.isConcatSpreadable 一个常用符号,不可写、不可设置
Symbol.iterator 一个常用符号,不可写、不可设置
Symbol.keyFor ( sym ) 返回对应于指定符号的键
Symbol.match 一个常用符号,不可写、不可设置
Symbol.prototype 一个常用符号,不可写、不可设置
Symbol.replace 一个常用符号,不可写、不可设置
Symbol.search 一个常用符号,不可写、不可设置
Symbol.species 一个常用符号,不可写、不可设置
Symbol.split 一个常用符号,不可写、不可设置
Symbol.toPrimitive 一个常用符号,不可写、不可设置
Symbol.toStringTag 一个常用符号,不可写、不可设置
Symbol.unscopables 一个常用符号,不可写、不可设置
属性 说明
Symbol.prototype.constructor 初始为Symbol
Symbol.prototype.toString ( ) 返回符号值或描述
Symbol.prototype.valueOf ( ) 返回符号或其值

Error

构造器 说明
Error ( message ) 构造错误
属性 说明
Error.prototype 原型
属性 说明
Error.prototype.constructor 初始为Error
Error.prototype.message 初始为””
Error.prototype.name 初始为”Error”.
Error.prototype.toString ( ) 返回字符串表示

原生的运行期错误EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError有类似结构,但不是Error,以下用NativeError指代它们:

构造器 说明
NativeError ( message ) 创建有指定信息的NativeError
属性 说明
NativeError.prototype 一个原生对象,不可写、不可设置
属性 说明
NativeError.prototype.constructor 初始为对应的NativeError子类
NativeError.prototype.message 初始为””
NativeError.prototype.name 对应的NativeError字符串

数值和日期

Number

构造器 说明
Number ( value ) 创建以为value对应数值为值的Number对象

Number属性|说明 Number.EPSILON|1与比1大的最小数值的距离,约为$2.2204460492503130808472633361816x10^{‐16}$,不可写、不可配置 This property has the attributes { [[Writable]]: false, [[Enumerable]]: false, [[Con伀氂igurable]]: false }. Number.isFinite ( number )|返回number是否有限的数值 Number.isInteger ( number )|返回number是否视为整数数值 Number.isNaN ( number )|返回number是否NaN数值 Number.isSafeInteger ( number )|返回number是否绝对值不超过$2^{53}-1$的整数数值 Number.MAX_SAFE_INTEGERNOTE|最大的整数使它和它的后继可精确表示为数值,即$2^{53}‐1$,不可写、不可配置 Number.MAX_VALUE|最大的数值,约$1.7976931348623157 × 10^{308}$,不可写、不可配置 Number.MIN_SAFE_INTEGER|最小的整数使它和它的前驱可精确表示为数值,即$-2^{53}+1$,不可写、不可配置 Number.MIN_VALUE|最小的正数值,约$5×10^{‐324}$,不可写、不可配置 Number.NaN|NaN数值,不可写、不可配置 Number.NEGATIVE_INFINITY|负无穷数值,不可写、不可配置 Number.parseFloat ( string )|同parseFloat Number.parseInt ( string, radix )|同parseInt Number.POSITIVE_INFINITY|正无穷数值,不可写、不可配置

Number.prototype属性 说明  
Number.prototype.constructor 同Number  
Number.prototype.toExponential ( fractionDigits ) 返回本数值的指数式字符串表示,其中fractionDigits为小数位个数  
Number.prototype.toFixed ( fractionDigits ) 返回本数值的定点式字符串表示,其中fractionDigits为小数位个数  
Number.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ])   返回本数值的本地字符串表示
Number.prototype.toPrecision ( precision ) 返回本数值的字符串表示,其中precision为精度  
Number.prototype.toString ( [ radix ] ) 返回本数值的字符串表示,其中radix为进制(默认10)  
Number.prototype.valueOf ( ) 返回本数值  

Math

值属性 说明
Math.E 自然对数的底,约2.7182818284590452354,不可写、不可配置
Math.LN10 10的自然对数,约2.302585092994046,不可写、不可配置
Math.LN2 2的自然对数,约0.6931471805599453,不可写、不可配置
Math.LOG10E e的常用对数,约0.4342944819032518,不可写、不可配置
Math.LOG2E e以2为底的对数,约1.4426950408889634,不可写、不可配置
Math.PI 圆周率,约3.1415926535897932,不可写、不可配置
Math.SQRT1_2 0.5的平方根,约0.7071067811865476,不可写、不可配置
Math.SQRT2 2的底平方根,约1.4142135623730951,不可写、不可配置

以下函数会把参数先转换为数值:

函数属性 说明
Math.abs ( x ) 返回x的绝对值
Math.acos ( x ) 返回x的反余弦近似值
Math.acosh ( x ) 返回x的反双曲余弦近似值
Math.asin ( x ) 返回x的正余弦近似值
Math.asinh ( x ) 返回x的反双曲正弦近似值
Math.atan ( x ) 返回x的反正切近似值
Math.atanh ( x ) 返回x的反双曲正切近似值
Math.atan2 ( y, x ) 返回y/x的反正切近似值,符号标示方向
Math.cbrt ( x ) 返回x的立方近似值
Math.ceil ( x ) 返回x的上取整
Math.clz32 ( x ) 返回32位整数x前导零个数
Math.cos ( x ) 返回x的余弦近似值
Math.cosh ( x ) 返回x的双曲余弦近似值
Math.exp ( x ) 返回$e^{x}$近似值
Math.expm1 ( x ) 返回$e^{x}-1$近似值
Math.floor ( x ) 返回x的下取整
Math.fround ( x ) 返回x舍入为32位的数值
Math.hypot ( value1, value2, …values ) 返回各参数平方和的平方根的近似值
Math.imul ( x, y ) 返回32位整数的模$2^32$积
Math.log ( x ) 返回x的自然对数近似值
Math.log1p ( x ) 返回$\ln (1+x)$近似值
Math.log10 ( x ) 返回x的常用对数近似值
Math.log2 ( x ) 返回x的以2为底的对数的近似值
Math.max ( value1, value2, …values ) 返回各参数中最大者
Math.min ( value1, value2, …values ) 返回各参数中最小者
Math.pow ( base, exponent ) 返回base的exponen幂
Math.random ( ) 返回0与1间的均匀分布伪随机数
Math.round ( x ) 返回与x最近(等距则取大)的整数
Math.sign (x) 返回x的符号
Math.sin ( x ) 返回x的正弦近似值
Math.sinh ( x ) 返回x的双曲正弦近似值
Math.sqrt ( x ) 返回x的平方根近似值
Math.tan ( x ) 返回x的正切近似值
Math.tanh ( x ) 返回x的双曲正切近似值
Math.trunc ( x ) 返回x的整数部分

Date

Date对象有时间值,即从1970年起的毫秒数。

构造器 说明
Date ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ) 创建Date对象
Date ( value ) 按时间值创建Date对象
Date ( ) 按当前时间值创建Date对象
Date属性 说明
Date.now ( ) 返回当前的UTC时间值
Date.parse ( string ) 解析时间的字符串表示
Date.UTC ( year, month [ , date [ , hours [ , minutes [ , seconds [ , ms ] ] ] ] ] ) 计算时间值.
Date.prototype属性 说明
Date.prototype.constructor 同Date
Date.prototype.getDate ( ) 返回日期
Date.prototype.getDay ( ) 返回周中的天
Date.prototype.getFullYear ( ) 返回年份
Date.prototype.getHours ( ) 返回小时
Date.prototype.getMilliseconds ( ) 返回毫秒
Date.prototype.getMinutes ( ) 返回分钟
Date.prototype.getMonth ( ) 返回月
Date.prototype.getSeconds ( ) 返回秒
Date.prototype.getTime ( ) 返回时间值
Date.prototype.getTimezoneOffset ( ) 返回时区差(分钟)
Date.prototype.getUTCDate ( ) 返回UTC日期
Date.prototype.getUTCDay ( ) 返回UTC日
Date.prototype.getUTCFullYear ( ) 返回UTC年
Date.prototype.getUTCHours ( ) 返回UTC小时
Date.prototype.getUTCMilliseconds ( ) 返回UTC毫秒
Date.prototype.getUTCMinutes ( ) 返回UTC分钟
Date.prototype.getUTCMonth ( ) 返回UTC月
Date.prototype.getUTCSeconds ( ) 返回UTC秒
Date.prototype.setDate ( date ) 设置日子
Date.prototype.setFullYear ( year [ , month [ , date ] ] ) 设置日子
Date.prototype.setHours ( hour [ , min [ , sec [ , ms ] ] ] ) 设置时间
Date.prototype.setMilliseconds ( ms ) 设置毫秒
Date.prototype.setMinutes ( min [ , sec [ , ms ] ] ) 设置分钟
Date.prototype.setMonth ( month [ , date ] ) 设置月份
Date.prototype.setSeconds ( sec [ , ms ] ) 设置秒
Date.prototype.setTime ( time ) 设置时间值
Date.prototype.setUTCDate ( date ) 设置UTC日子
Date.prototype.setUTCFullYear ( year [ , month [ , date ] ] ) 设置UTC年
Date.prototype.setUTCHours ( hour [ , min [ , sec [ , ms ] ] ] ) 设置UTC小时
Date.prototype.setUTCMilliseconds ( ms ) 设置UTC毫秒
Date.prototype.setUTCMinutes ( min [ , sec [ , ms ] ] ) 设置UTC分钟
Date.prototype.setUTCMonth ( month [ , date ] ) 设置UTC月份
Date.prototype.setUTCSeconds ( sec [ , ms ] ) 设置UTC秒
Date.prototype.toDateString ( ) 返回人类友好的日期的字符串表示
Date.prototype.toISOString ( ) 返回包括各域的字符串表示
Date.prototype.toJSON ( key ) 返回时间值的字符串表示
Date.prototype.toLocaleDateString ( [ reserved1 [ , reserved2 ] ] ) 返回本地的日子的字符串表示
Date.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] ) 返回本地的字符串表示
Date.prototype.toLocaleTimeString ( [ reserved1 [ , reserved2 ] ] ) 返回本地的时间的字符串表示
Date.prototype.toString ( ) 返回日子的字符串表示
Date.prototype.toTimeString ( ) 返回时间的字符串表示
Date.prototype.toUTCString ( ) 返回人类友好的UTC字符串表示
Date.prototype.valueOf ( ) 返回时间值

另外,转换Date对象为基本类型对象时,”default”视为”string”

文本

String

构造器 说明
String ( value ) 构造String对象
属性 说明
String.fromCharCode ( …codeUnits ) 从代码单元生成字符串
String.fromCodePoint ( …codePoints ) 从代码点生成字符串
String.prototype 不可写,不可配置
String.raw ( template, …substitutions ) 根据模板代入各substitutions生成字符串
属性 说明
String.prototype.charAt ( pos ) 返回指定位置的代码单元
String.prototype.charCodeAt ( pos ) 返回指定位置的代码单元数值
String.prototype.codePointAt ( pos ) 返回第pos个代码点
String.prototype.concat ( …args ) 串接
String.prototype.constructor 初始为String
String.prototype.endsWith ( searchString [ , endPosition ] ) 返回是否结束于searchString
String.prototype.includes ( searchString [ , position ] ) 返回是否包含searchString
String.prototype.indexOf ( searchString [ , position ] ) 返回searchString首次出现位置
String.prototype.lastIndexOf ( searchString [ , position ] ) 返回searchString最后出现位置
String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] ) 返回本地的字符串比较结果
String.prototype.match ( regexp ) 返回是否匹配regexp
String.prototype.normalize ( [ form ] ) 返回正规化其中form为”NFC”、”NFD”、”NFKC”、”NFKD”之一
String.prototype.repeat ( count ) 返回重复count次得的字符串
String.prototype.replace (searchValue, replaceValue ) 返回替换结果
String.prototype.search ( regexp ) 返回regexp首次匹配位置
String.prototype.slice ( start, end ) 返回子字符串并转换为String
String.prototype.split ( separator, limit ) 拆解被separator分隔的子字符串数组,最多limit个
String.prototype.startsWith ( searchString [ , position ] ) 返回是否从位置position起以searchString开始
String.prototype.substring ( start, end ) 返回子字符串值
String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] ) 返回本地的小写化
String.prototype.toLocaleUpperCase ([ reserved1 [ , reserved2 ] ] ) 返回本地的大写化
String.prototype.toLowerCase ( ) 返回小写化
String.prototype.toString ( ) 返回字符串值
String.prototype.toUpperCase ( ) 返回大写化
String.prototype.trim ( ) 返回去掉两端空白的字符串
String.prototype.valueOf ( ) 返回本字符串的值

另外String有不可写、不可配置的length属性表示代码单元数,还可以对代码点迭代。

RegExp

RegExp对象封闭正则表达式和一些标志。

属性 说明
RegExp.prototype 不可写、不可配置
属性 说明
RegExp.prototype.constructor 初始为RegExp
RegExp.prototype.exec ( string ) 开始匹配并返回捕获组数组
RegExp.prototype.flags 返回标志字符串
RegExp.prototype.global 返回全局标志
RegExp.prototype.ignoreCase 返回大小写不敏感标志
RegExp.prototype.multiline 返回多行模式标志
RegExp.prototype.sticky 返回粘性标志
RegExp.prototype.test ( S ) 返回S是否满足这正则表达式
RegExp.prototype.toString ( ) 返回字符串表示
RegExp.prototype.unicode 返回unicode标志

RegExp对象还有不可配置的lastIndex属性表示下次运行的开始位置

数组

数组

构造器 说明
Array ( ) 创建长度为0的数组
Array (len) 创建指定长度的数组
Array (…items ) 创建由指定元素组成的数组
属性 说明
Array.from ( items [ , mapfn [ , thisArg ] ] ) 由类数组对象和转换构造数组
Array.isArray ( arg ) 返回arg是否数组
Array.of ( …items ) 返回由指定元素组成的数组
Array.prototype 不可写、不可配置
属性 说明
Array.prototype.concat ( …arguments ) 返回串接各数组得的数组
Array.prototype.constructor 初始为%Array%.
Array.prototype.copyWithin (target, start [ , end ] ) 复制指标从start到end的元素复制到指标target开始的位置
Array.prototype.entries ( ) 返回键值对迭代器
Array.prototype.every ( callbackfn [ , thisArg ] ) 返回thisArg.callbackfn是否对所有元素返回true(另用指标和数组对象作参数)
Array.prototype.fill (value [ , start [ , end ] ] ) 用value填充
Array.prototype.filter ( callbackfn [ , thisArg ] ) 返回对thisArg.callbackfn返回true的元素组成的子数组(另用指标和数组对象作参数)
Array.prototype.find ( predicate [ , thisArg ] ) 返回对thisArg.callbackfn返回true的首个元素(另用指标和数组对象作参数)
Array.prototype.findIndex ( predicate [ , thisArg ] ) 返回对thisArg.callbackfn返回true的首个元素(另用指标和数组对象作参数)对应指标(没有则-1)
Array.prototype.forEach ( callbackfn [ , thisArg ] ) 对每个元素、指标和当前对象调用thisArg.callbackfn
Array.prototype.includes ( searchElement [ , fromIndex ] ) 返回用值比较的searchElement是否出现
Array.prototype.indexOf ( searchElement [ , fromIndex ] ) 返回用===比较的searchElement首次出现位置(不存在则-1)
Array.prototype.join (separator) 返回用指定分隔符(默认逗号)的字符串表示
Array.prototype.keys ( ) 返回键迭代器
Array.prototype.lastIndexOf ( searchElement [ , fromIndex ] ) 返回用===比较的searchElement最后出现位置(不存在则-1)
Array.prototype.map ( callbackfn [ , thisArg ] ) 返回由各元素的像组成的数组,其中thisarg.callbackfn用元素、指标和数组对象作参数
Array.prototype.pop ( ) 返回弹出元素
Array.prototype.push ( …items ) 依次推入各参数
Array.prototype.reduce ( callbackfn [ , initialValue ] ) 左折叠,对每个元素先前值、当前元素、指标和数组对象作参数调用callbackfn
Array.prototype.reduceRight ( callbackfn [ , initialValue ] ) 右折叠
Array.prototype.reverse ( ) 反转元素顺序
Array.prototype.shift ( ) 移除并返回首个元素
Array.prototype.slice (start, end) 返回切片
Array.prototype.some ( callbackfn [ , thisArg ] ) 返回thisArg.callbackfn是否对某个元素返回true(另用指标和数组对象作参数)
Array.prototype.sort (comparefn) 排序
Array.prototype.splice (start, deleteCount, …items ) 把从指标start起deleteCount个元素换成items,返回被换的元素数组
Array.prototype.toLocaleString ( [ reserved1 [ , reserved2 ] ] ) 返回本地的字符串表示
Array.prototype.toString ( ) 返回本地的字符串表示
Array.prototype.unshift ( …items ) 把各items加入到前面
Array.prototype.values ( ) 返回值迭代器

数组对象还有属性length,并且可迭代。

类型化数组

构造器 元素类型 元素大小 描述 对应的C类型
Int8Array Int8 1 8位的2的补码 signed char
Uint8Array Uint8 1 8位无符号整数(转换为取模) unsigned char
Uint8ClampedArray Uint8C 1 8位无符号整数(转换为截断) unsigned char
Int16Array Int16 2 16位的2的补码 short
Uint16Array Uint16 2 8位无符号整数 unsigned short
Int32Array Int32 4 32位的2的补码 int
Uint32Array Uint32 4 32位无符号整数 unsigned int
Float32Array Float32 4 IEEE单精度浮点数 float
Float64Array Float64 8 IEEE双精度浮点数 double

以下用TypedArray指代上述的构造器。

%TypedArray%是各TypedArray构造器都继承的内部对象,它的构造器总抛出异常。

属性 说明
%TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) 用源和转换构造类型化数组
%TypedArray%.of ( …items ) 构造类型化数组
%TypedArray%.prototype 不可写、不可配置

属性|说明 :—|:— get %TypedArray%.prototype.buffer|返回已读缓冲 get %TypedArray%.prototype.byteLength|返回字节长度 get %TypedArray%.prototype.byteOffset|返回字节偏移 %TypedArray%.prototype.constructor|初始为%TypedArray% %TypedArray%.prototype.copyWithin (target, start [ , end ] )|类似Array.prototype.copyWithin %TypedArray%.prototype.entries ( )|返回键值对迭代器 %TypedArray%.prototype.every ( callbackfn [ , thisArg ] )类似Array.prototype.every %TypedArray%.prototype.fill (value [ , start [ , end ] ] )|类似Array.prototype.fill %TypedArray%.prototype.filter ( callbackfn [ , thisArg ] )|类似Array.prototype.filter %TypedArray%.prototype.find (predicate [ , thisArg ] )|类似Array.prototype.find %TypedArray%.prototype.findIndex ( predicate [ , thisArg ] )|类似Array.prototype.findIndex %TypedArray%.prototype.forEach ( callbackfn [ , thisArg ] )|类似Array.prototype.forEach %TypedArray%.prototype.indexOf (searchElement [ , fromIndex ] )|类似Array.prototype.indexOf %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )|类似Array.prototype.includes %TypedArray%.prototype.join ( separator )|串接为字符串 %TypedArray%.prototype.keys ( )|返回数组键迭代器 %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )|返回指定元素的最后出现位置 get %TypedArray%.prototype.length|长度 %TypedArray%.prototype.map ( callbackfn [ , thisArg ] )|映射 %TypedArray%.prototype.reduce ( callbackfn [ , initialValue ] )|左折叠 %TypedArray%.prototype.reduceRight ( callbackfn [ , initialValue ] )|右折叠 %TypedArray%.prototype.reverse ( )|反转 %TypedArray%.prototype.set ( overloaded [ , offset ])|设置 %TypedArray%.prototype.slice ( start, end )|取子数组的复制品 %TypedArray%.prototype.some ( callbackfn [ , thisArg ] )|类似于Array.prototype.some %TypedArray%.prototype.sort ( comparefn )|排序 %TypedArray%.prototype.subarray( begin, end )|取子数组 %TypedArray%.prototype.toLocaleString ([ reserved1 [ , reserved2 ] ])|类似Array.prototype.toLocaleString %TypedArray%.prototype.toString ( )|同%TypedArray%.prototype.toString %TypedArray%.prototype.values ( )|返回数组值迭代器

另外,TypedArray可迭代

构造器 说明
TypedArray ( ) 构造长度0的类型化数组
TypedArray ( length ) 构造指定长度的类型化数组
TypedArray ( typedArray ) 由现有类型化数组构造类型化数组
TypedArray ( object ) 由迭代器构造类型化数组
TypedArray ( buffer [ , byteOffset [ , length ] ] ) 由数组似的对象的一部分构造类型化数组
属性 说明
TypedArray.BYTES_PER_ELEMENT 每个元素占的字节数,不可写、不可配置
TypedArray.prototype 不可写、不可配置
属性 说明
TypedArray.prototype.BYTES_PER_ELEMENT 每个元素占的字节数,不可写、不可配置
TypedArray.prototype.constructor 对应内部对象 %TypedArray%

映射表

键用SameValueZero区分

Map

构造器 说明
Map ( [ iterable ] ) 构造Map
属性 说明
Map.prototype 不可写、不可配置
属性 说明
Map.prototype.clear ( ) 清除所有条目
Map.prototype.constructor  
Map.prototype.delete ( key ) 删除key对应条目
Map.prototype.entries ( ) 返回条目迭代器
Map.prototype.forEach ( callbackfn [ , thisArg ] ) 对每个条目,用值、键、此对象调用thisArg.callbackfn
Map.prototype.get ( key ) 返回key对应的值
Map.prototype.has ( key ) 返回是否有条目以key为键
Map.prototype.keys ( ) 返回键迭代器
Map.prototype.set ( key, value ) 设置键值对
Map.prototype.size 返回条目数
Map.prototype.values ( ) 返回键值对迭代器

Map对象可以迭代。

Set

构造器 说明
Set ( [ iterable ] ) 构造Set
属性 说明
Set.prototype 不可写、不可配置
属性 说明
Set.prototype.add ( value ) 加入元素
Set.prototype.clear ( ) 清除所有元素
Set.prototype.constructor  
Set.prototype.delete ( value ) 删除元素
Set.prototype.entries ( ) 返回条目迭代器
Set.prototype.forEach ( callbackfn [ , thisArg ] ) 对每个条目,用元素、元素、此对象调用thisArg.callbackfn
Set.prototype.has ( key ) 返回是否有条目以key为键
Set.prototype.keys ( ) 返回键迭代器
Set.prototype.size 返回条目数
Set.prototype.values ( ) 返回键值对迭代器

Set对象可以迭代。

WeakMap

构造器 说明
WeakMap ( [ iterable ] ) 构造Map
属性 说明
WeakMap.prototype 不可写、不可配置
属性 说明
WeakMap.prototype.constructor  
WeakMap.prototype.delete ( key ) 删除key对应条目
WeakMap.prototype.get ( key ) 返回key对应的值
WeakMap.prototype.has ( key ) 返回是否有条目以key为键
WeakMap.prototype.set ( key, value ) 设置键值对

WeakSet

构造器 说明
WeakSet ( [ iterable ] ) 构造Set
属性 说明
WeakSet.prototype 不可写、不可配置
属性 说明
Set.prototype.add ( value ) 加入元素
Set.prototype.constructor  
Set.prototype.delete ( value ) 删除元素
Set.prototype.has ( key ) 返回是否有条目以key为键

结构化数据

ArrayBuffer

构造器 说明
ArrayBuffer ( length ) 返回有length字节的ArrayBuffer
属性 说明
ArrayBuffer.isView ( arg ) 返回有否被查看
ArrayBuffer.prototype 不可写、不可配置
属性 说明
ArrayBuffer.prototype.byteLength 返回字节数
ArrayBuffer.prototype.constructor  
ArrayBuffer.prototype.slice ( start, end ) 返回由指定范围中字节组成的新ArrayBuffer

DataView

构造器 说明
DataView (buffer, byteOffset, byteLength ) 构造基于buffer中从byteOffset开始byteLength个字节的DataView
属性 说明
DataView.prototype.buffer 返回底层的ArrayBuffer
DataView.prototype.byteLength 返回字节数
DataView.prototype.byteOffset 返回依稀量
DataView.prototype.constructor  
DataView.prototype.getFloat32 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Float32值
DataView.prototype.getFloat64 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Float32值
DataView.prototype.getInt8 ( byteOffset ) 返回指定位置处的Int8值
DataView.prototype.getInt16 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Int16值
DataView.prototype.getInt32 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Int32值
DataView.prototype.getUint8 ( byteOffset ) 返回指定位置处的Uint8值
DataView.prototype.getUint16 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Uint16值
DataView.prototype.getUint32 ( byteOffset [ , littleEndian ] ) 返回指定位置处的Uint32值
DataView.prototype.setFloat32 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Float32值
DataView.prototype.setFloat64 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Float64值
DataView.prototype.setInt8 ( byteOffset, value ) 在指定位置开始处放置指定Int8值
DataView.prototype.setInt16 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Int16值
DataView.prototype.setInt32 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Int32值
DataView.prototype.setUint8 ( byteOffset, value ) 在指定位置开始处放置指定Uint8值
DataView.prototype.setUint16 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Uint16值
DataView.prototype.setUint32 ( byteOffset, value [ , littleEndian ] ) 在指定位置开始处放置指定Uint32值

JSON

属性 说明
JSON.parse ( text [ , reviver ] ) 解析JSON文本text,reviver为接受键和值两个参数的函数返回修改后的值(undefined表示删除条目)
JSON.stringify ( value [ , replacer [ , space ] ] ) 返回value的JSON表示

控制抽象

迭代

约定迭代器:

  • 属性next值为一个返回迭代结果的函数,并且一旦返回过done属性为true的迭代结果,以后也要返回done属性为true的迭代结果
  • 可选属性return值为一个返回迭代结果的函数,在不会再调用next时被调用,通常返回done属性为true的迭代结果,其值则为参数
  • 可选属性throw值为一个返回迭代结果的函数,用于通知错误条件被发现,通常抛出参数或通常返回done属性为true的迭代结果

约定迭代结果:

  • done属性表示是否没有可用值(未定义这属性表示false)
  • value属性表示当前迭代元素值(若非done)或返回值(没有则undefined)

GeneratorFunction

构造器 说明
GeneratorFunction (p1, p2, … , pn, body) 返回以各p为形参、body为体的生成器函数
属性 说明
GeneratorFunction.length 1,不可写
GeneratorFunction.prototype 不可写、不可配置
属性 说明
GeneratorFunction.prototype.constructor 不可写
GeneratorFunction.prototype.prototype 不可写

另外,GeneratorFunction的实例有属性length、name、prototype

Generator

属性 说明
25.3.1.1 Generator.prototype.constructor 不可写
25.3.1.2 Generator.prototype.next ( value ) 返回下一个值

Promise

构造器 说明
Promise ( executor ) 构造以executor为延迟操作的Promise,executor被调用时分别以两个单参函数为实参,分别用于报告顺利完成和失败
属性 说明
Promise.all ( iterable ) 返回一个Promise要么由各参数的满足值组成的数组满足,要么拒绝
Promise.prototype 不可写、不可配置
Promise.race ( iterable ) 返回一个Promise,求值所有Promise但结果与首个Promise同
Promise.reject ( r ) 返回一个会以r拒绝的Promise
Promise.resolve ( x ) 返回一个会以x接受的Promise
属性 说明
Promise.prototype.catch ( onRejected ) 进行延迟操作并在失败时执行对应函数
Promise.prototype.constructor  
Promise.prototype.then ( onFulfilled, onRejected ) 进行延迟操作并在成功或失败时执行对应函数

反射

Reflect

属性 说明
Reflect.apply ( target, thisArgument, argumentsList ) 调用target
Reflect.construct ( target, argumentsList [ , newTarget ] ) 构造对象
Reflect.defineProperty ( target, propertyKey, attributes ) 定义属性
Reflect.deleteProperty ( target, propertyKey ) 删除属性
Reflect.get ( target, propertyKey [ , receiver ]) 返回属性
Reflect.getOwnPropertyDescriptor ( target, propertyKey ) 返回属性描述
Reflect.getPrototypeOf ( target ) 返回原型
Reflect.has ( target, propertyKey ) 返回是否有具指定键的属性
Reflect.isExtensible (target) 返回target是否可扩展
Reflect.ownKeys ( target ) 返回自身属性的键数组
Reflect.preventExtensions ( target ) 防止扩展
Reflect.set ( target, propertyKey, V [ , receiver ] ) 设置属性
Reflect.setPrototypeOf ( target, proto ) 设置原型

构造器|说明 :—|:— Proxy ( target, handler )

Proxy

属性 说明
Proxy.revocable ( target, handler ) 创建可调用的代理对象

其它对象

HTML DOM

由于JavaScript最常用于网页中的客户端脚本,经常要通过DOM与HTML文档打交道,所以经常用到有关的API。具体情况请参考W3和浏览器厂商的文档:

JavaScript框架

此外,JavaScript还有很多有用的第三方库,例如:

  • JQuery提供了访问DOM、事件处理和AJAX等的一些便捷的方式