陈颂光
全栈工程师,能够独立开发从解释器到网站和桌面/移动端应用的各类软件。
关注我的 GitHub

Javascript概览

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

类型系统

分类

基本类型

未定义类型

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

空类型

只有一个值null。

布尔类型

只有两个值true和false分别表示真、假。

符号类型

符号用作对象的属性的键,符号都是惟一和不可变的,并与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方法,调用它并返回结果
    • 若提示为字符串,依次尝试调用对象的toString或valueOf方法,得到非对象就返回它
    • 依次尝试调用对象的valueOf或toString方法,得到非对象就返回它
  2. 抛出TypeError异常

到布尔类型

undefined、null、false、+0、-0、NaN、""被转换为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
  • true和false
  • 关键字break、do、in、typeof、case、else、instanceof、var、catch、export、new、void、class、extends、return、while、const、finally、super、with、continue、for、switch、yield、debugger、function、this、default、if、throw、delete、import、try
  • enum和await 两个标识符视为相等当且仅当它们对应相同的代码点序列

空常量

null

布尔常量

true和false

字符串常量

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

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

上述的"可以同时改为'。

正则表达式常量

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

模板常量

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

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

数值常量

  • 二进制的0b或0B后接由0和1`组成的非空序列
  • 八进制的0o或0O后接由0到7组成的非空序列
  • 十进制的依次由以下部分组成:
    • 可选的整数部分为由0到9组成的序列
    • 可选的小数部分为.和由0到9组成的序列(与上一条加起来至少要有一个数字)
    • 可选的指数部分由e或E、可选的+或-、由0到9组成的非空序列组成
  • 十六进制的0x或0X后接由0到9、a到f、A到F组成的非空序列

表达式

初等表达式 效果
标识符 值为对应绑定的值
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开始,然后是由,分隔的一个或多个变量声明,最后以;结束|引入变量 空|;| 表达式|表达式 ;,但开始时向前看符号非{ 、function、class、let [|值为表达式的值 分支|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 属性名 ( 绑定元素 ) { 函数体 }
词法作用域变量声明

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

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

形如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由0x或0X开始)
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等的一些便捷的方式