兼容性
njs 的创建符合 ECMAScript 5.1(严格模式),并包含一些 ECMAScript 6 及更高版本的扩展。兼容性仍在不断发展。
njs 特定属性和方法的定义(不符合 ECMAScript)可以在 参考 中找到。符合 ECMAScript 的 njs 属性和方法的定义可以在 ECMAScript 规范 中找到。
当前支持的功能
- 布尔值、数字、字符串、对象、数组、函数、函数构造函数(0.3.6)和正则表达式
- ES5.1 运算符、ES7 幂运算符
- ES5.1 语句:
break
、catch
、continue
、do while
、else
、finally
、for
、for in
、if
、return
、switch
、throw
、try
、var
、while
、带标签的语句(0.2.8) - ES6 语句:
let
(0.6.0)、const
(0.6.0)、async
(0.7.0)、await
(0.7.0) -
Math
属性- ES6:
E
、LN10
、LN2
、LOG10E
、LOG2E
、PI
、SQRT1_2
、SQRT2
- ES6:
-
Math
方法- ES6:
abs
、acos
、acosh
、asin
、asinh
、atan
、atan2
、atanh
、cbrt
、ceil
、clz32
、cos
、cosh
、exp
、expm1
、floor
、fround
、hypot
、imul
、log
、log10
、log1p
、log2
、max
、min
、pow
、random
、round
、sign
、sin
、sinh
、sqrt
、tan
、tanh
、trunc
- ES6:
-
Number
属性- ES6:
EPSILON
、MAX_SAFE_INTEGER
、MAX_VALUE
、MIN_SAFE_INTEGER
、MIN_VALUE
、NEGATIVE_INFINITY
、NaN
、POSITIVE_INFINITY
- ES6:
-
Number
方法- ES6:
isFinite
、isInteger
、isNaN
、isSafeInteger
、parseFloat
、parseInt
- ES6:
-
Number
原型方法 -
String
方法- ES5.1:
fromCharCode
- ES6:
fromCodePoint
- ES5.1:
-
String
原型方法 -
Object
方法- ES5.1:
create
(支持不带属性列表)、defineProperties
(从 0.3.3 开始支持访问器描述符)、defineProperty
(从 0.3.3 开始支持访问器描述符)、freeze
、getOwnPropertyDescriptor
、getOwnPropertyDescriptors
(0.3.1)、getOwnPropertyNames
(0.3.1)、getPrototypeOf
、isExtensible
、isFrozen
、isSealed
、keys
、preventExtensions
、seal
- ES6:
assign
(0.3.7) - ES8:
entries
(0.2.7)、values
(0.2.7)
- ES5.1:
-
Object
原型方法 -
Array
方法- ES5.1:
isArray
- ES6:
of
- ES13:
from
(0.8.0)
- ES5.1:
-
Array
原型方法 -
ArrayBuffer
方法(0.3.8)- ES6:
isView
- ES6:
-
ArrayBuffer
原型方法(0.3.8)- ES6:
slice
- ES6:
-
类型化数组
构造函数(0.3.8)- ES6:
Int8Array
、Uint8Array
、Uint8ClampedArray
、Int16Array
、Uint16Array
、Int32Array
、Uint32Array
、Float32Array
、Float64Array
- ES6:
-
类型化数组
原型方法(0.3.8) -
Buffer
方法(0.4.4) -
Buffer
原型方法:(0.4.4)-
compare
、copy
、equals
、fill
、includes
、indexOf
、lastIndexOf
、readIntBE
、readInt8
、readInt16BE
、readInt32BE
、readIntLE
、readInt8
、readInt16LE
、readInt32LE
、readUIntBE
、readUInt8
、readUInt16BE
、readUInt32BE
、readUIntLE
、readUInt8
、readUInt16LE
、readUInt32LE
、readDoubleBE
、readDoubleLE
、readFloatBE
、readFloatLE
、subarray
、slice
、swap16
、swap32
、swap64
、toJSON
、toString
、write
、writeIntBE
、writeInt8
、writeInt16BE
、writeInt32BE
、writeIntLE
、writeInt8
、writeInt16LE
、writeInt32LE
、writeUIntBE
、writeUInt8
、writeUInt16BE
、writeUInt32BE
、writeUIntLE
、writeUInt8
、writeUInt16LE
、writeUInt32LE
、writeDoubleBE
、writeDoubleLE
、writeFloatBE
、writeFloatLE
-
-
Promise
方法(0.3.8) -
Promise
原型方法(0.3.8)- ES6:
catch
、finally
、then
- ES6:
-
Function
原型方法- ES5.1:
apply
、bind
、call
- ES5.1:
-
RegExp
原型访问器属性 -
RegExp
原型方法 -
RegExp
实例属性-
lastIndex
-
-
RegExp
ES9 命名捕获组(0.3.2) -
DataView
原型方法(0.4.4)- ES6:
getFloat32
、getFloat64
、getInt16
、getInt32
、getInt8
、getUint16
、getUint32
、getUint8
、setFloat32
、setFloat64
、setInt16
、setInt32
、setInt8
、setUint16
、setUint32
、setUint8
- ES6:
-
Date
方法- ES5.1:
now
、parse
、UTC
- ES5.1:
-
Date
原型方法- ES5.1:
getDate
,getDay
,getFullYear
,getHours
,getMilliseconds
,getMinutes
,getMonth
,getSeconds
,getTime
,getTimezoneOffset
,getUTCDate
,getUTCDay
,getUTCFullYear
,getUTCHours
,getUTCMilliseconds
,getUTCMinutes
,getUTCMonth
,getUTCSeconds
,toDateString
,toISOString
,toLocaleDateString
,toLocaleString
,toLocaleTimeString
,toTimeString
,toUTCString
,setDate
,setFullYear
,setHours
,setMinutes
,setMilliseconds
,setMonth
,setSeconds
,setTime
,setUTCDate
,setUTCFullYear
,setUTCHours
,setUTCMilliseconds
,setUTCMinutes
,setUTCMonth
,setUTCSeconds
- ES5.1:
-
JSON
方法- ES5.1:
parse
,stringify
- ES5.1:
-
Symbol
方法 (0.7.6)-
for
,keyfor
-
- ES5.1
arguments
对象 (0.2.5) - ES6 其余参数语法(无解构支持)(0.2.7)
- ES5.1 全局函数:
decodeURI
,decodeURIComponent
,encodeURI
,encodeURIComponent
,isFinite
,isNaN
,parseFloat
,parseInt
- 全局函数 (0.7.6):
atob
,btoa
-
Error
对象:Error
,EvalError
,InternalError
,RangeError
,ReferenceError
,SyntaxError
,TypeError
,URIError
-
clearTimeout
和setTimeout
函数 (0.2.0) -
文件系统
方法:fs.accessSync
(0.3.9),fs.appendFileSync
,fs.closeSync
,fs.existsSync
(0.8.2),fs.FileHandle
(0.7.7),fs.fstatSync
(0.7.7),fs.lstatSync
(0.7.1),fs.mkdirSync
(0.4.2),fs.openSync
(0.7.7),fs.promises.open
(0.7.7),fs.readdirSync
(0.4.2),fs.readFileSync
,fs.readSync
(0.7.7),fs.realpathSync
(0.3.9),fs.renameSync
(0.3.4),fs.rmdirSync
(0.4.2),fs.symlinkSync
(0.3.9),fs.unlinkSync
(0.3.9),fs.writeFileSync
fs.writeSync
(0.7.7) -
fs.promises
API (0.3.9), 文件系统方法的异步版本。 -
Crypto
方法 (0.2.0):crypto.createHash
,crypto.createHmac
-
查询字符串
方法 (0.4.3):querystring.decode
,querystring.encode
,querystring.escape
,querystring.parse
,querystring.stringify
,querystring.unescape
-
TextDecoder
方法 (0.4.3):encoding
,fatal
,ignoreBOM
,decode
-
TextEncoder
方法 (0.4.3):encode
,encodeInto
-
XML
方法 (0.7.10):parse
,xml.c14n
,xml.exclusiveC14n
-
zlib
方法 (0.7.12):deflateRawSync
,deflateSync
,inflateRawSync
inflateSync
- ES6 模块支持:默认
export
和默认import
语句 (0.3.0) - ES6 箭头函数 (0.3.1)
- 模板字面量:多行字符串,表达式插值,嵌套模板 (0.3.2)
- 全局对象 (0.3.3)
-
console
(0.8.2):error
,info
,log
,time
,timeEnd
,warn
-
crypto
(0.7.0):getRandomValues
,subtle.encrypt
,subtle.decrypt
,subtle.deriveBits
,subtle.deriveKey
,subtle.digest
subtle.exportKey
(0.7.10),subtle.generateKey
(0.7.10),subtle.importKey
,subtle.sign
,subtle.verify
-
globalThis
别名 (0.3.8), -
njs
:version
,version_number
(0.7.4),dump
,memoryStats
(0.7.8),on
(0.5.2) -
process
:argv
,env
,pid
,ppid
-
- nginx 对象方法
-
HTTP 请求
:r.done
(0.5.2),r.error
,r.finish
,r.internalRedirect
,r.log
,r.return
(0.5.0),r.send
(0.5.0),r.sendBuffer
(0.5.2),r.sendHeader
,r.setReturnValue
(0.7.0),r.subrequest
,r.warn
-
流会话
:s.allow
(0.2.4),s.decline
(0.2.4),s.deny
(0.2.4),s.done
(0.2.4),s.error
,s.log
,s.off
(0.2.4),s.on
(0.2.4),s.send
(0.2.4),s.sendDownstream
(0.7.8),s.sendUpstream
(0.7.8),s.setReturnValue
(0.7.0),s.warn
-
Headers
(0.5.1):append
,delete
,get
,getAll
,forEach
,has
,set
-
Request
(0.7.10):arrayBuffer
,headers
,json
,text
-
Response
(0.5.1):arrayBuffer
,headers
,json
,text
-
ngx
(0.5.0):fetch
(0.5.1),log
-
ngx.shared
(0.8.0):add
,clear
,delete
,freeSpace
,get
,has
,incr
,items
,keys
,pop
,replace
,set
,size
-
- nginx 对象属性
-
HTTP 请求
:r.args
,r.headersIn
,r.headersOut
,r.httpVersion
,r.internal
,r.method
,r.parent
,r.rawHeadersIn
(0.4.1),r.rawHeadersOut
(0.4.1),r.rawVariables
(0.5.0),r.remoteAddress
,r.requestBuffer
(0.5.0),r.requestText
,r.responseBuffer
(0.5.0),r.responseText
(0.5.0),r.status
,r.uri
,r.variables
(0.2.8) -
流会话
:s.remoteAddress
,s.rawVariables
(0.5.0),s.status
(0.5.2),s.variables
(0.2.8) -
周期性会话
(0.8.1):PeriodicSession.rawVariables
,PeriodicSession.variables
-
Request
(0.7.10):bodyUsed
,cache
,credentials
,method
,mode
,url
-
Response
(0.5.1):bodyUsed
,ok
,redirected
,status
,statusText
,type
,url
-
ngx
(0.5.0):build
(0.8.0),conf_file_path
(0.8.0),conf_prefix
(0.7.8),error_log_path
(0.8.0),prefix
(0.8.0),version
(0.8.0),version_number
(0.8.0),worker_id
(0.8.0) -
ngx.shared
(0.8.0):capacity
,name
,type
-