兼容性
njs 的创建遵循 ECMAScript 5.1(严格模式),并带有一些 ECMAScript 6 及更高版本的扩展。兼容性仍在不断发展。
与 ECMAScript 不兼容的 njs 特有属性和方法的定义可以在 参考文档 中找到。与 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:
-
Typed-array
构造函数 (0.3.8)- ES6:
Int8Array
,Uint8Array
,Uint8ClampedArray
,Int16Array
,Uint16Array
,Int32Array
,Uint32Array
,Float32Array
,Float64Array
- ES6:
-
Typed-array
原型方法 (0.3.8)- ES6:
copyWithin
,every
(0.4.4),fill
,filter
(0.4.4),find
(0.4.4),findIndex
(0.4.4),forEach
(0.4.4),includes
(0.4.4),indexOf
(0.4.4),join
,lastIndexOf
(0.4.4),map
(0.4.4),reduce
(0.4.4),reduceRight
(0.4.4),reverse
(0.4.4),set
,slice
,some
(0.4.4),sort
(0.4.2),subarray
,toString
- ES13:
toReversed
(0.8.0)toSorted
(0.8.0)
- ES6:
-
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
-
Query String
方法 (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 Request
: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
-
Stream Session
: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
,ok
,redirected
,status
,statusText
,type
,url
-
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 Request
: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) -
Stream Session
:s.remoteAddress
,s.rawVariables
(0.5.0),s.status
(0.5.2),s.variables
(0.2.8) -
Periodic Session
(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
-