说明:本文档适用于小部件3.0。
小部件 JavaScript 引擎基于淘宝自研引擎,目前对其的标准 ES 2019。Android 和 iOS 同用一个 JavaScript 引擎,所以不存在不同系统的能力差异问题。
开发者需要避免使用 JavaScript 引擎不支持的内置对象。 如果必须使用,可自己提供内置对象的 polyfill(Polyfill :用于实现浏览器或其它 JavaScript 引擎不支持的原生 API 的代码 )。
注意:小部件引擎中禁止访问 globalThis、global ,因此无法直接使用 babel-polyfill。
Object |
iOS |
Android |
Object.is |
支持 |
支持 |
Object.assign |
支持 |
支持 |
Object.keys |
支持 |
支持 |
Object.getOwnPropertyDescriptor |
支持 |
支持 |
Object.getOwnPropertyNames |
支持 |
支持 |
Object.getOwnPropertySymbols |
支持 |
支持 |
String |
iOS |
Android |
String.prototype.codePointAt |
支持 |
支持 |
String.prototype.normalize |
支持 |
支持 |
String.prototype.includes |
支持 |
支持 |
String.prototype.startsWith |
支持 |
支持 |
String.prototype.endsWith |
支持 |
支持 |
String.prototype.repeat |
支持 |
支持 |
String.fromCodePoint |
支持 |
支持 |
Array |
iOS |
Android |
Array.prototype.copyWithin |
支持 |
支持 |
Array.prototype.find |
支持 |
支持 |
Array.prototype.findIndex |
支持 |
支持 |
Array.prototype.fill |
支持 |
支持 |
Array.prototype.entries |
支持 |
支持 |
Array.prototype.keys |
支持 |
支持 |
Array.prototype.values |
支持 |
支持 |
Array.prototype.includes |
支持 |
支持 |
Array.from |
支持 |
支持 |
Array.of |
支持 |
支持 |
Number |
iOS |
Android |
Number.isFinite |
支持 |
支持 |
Number.isNaN |
支持 |
支持 |
Number.parseInt |
支持 |
支持 |
Number.parseFloat |
支持 |
支持 |
Number.isInteger |
支持 |
支持 |
Number.EPSILON |
支持 |
支持 |
Number.isSafeInteger |
支持 |
支持 |
Math |
iOS |
Android |
Math.trunc |
支持 |
支持 |
Math.sign |
支持 |
支持 |
Math.cbrt |
支持 |
支持 |
Math.clz32 |
支持 |
支持 |
Math.imul |
支持 |
支持 |
Math.fround |
支持 |
支持 |
Math.hypot |
支持 |
支持 |
Math.expm1 |
支持 |
支持 |
Math.log1p |
支持 |
支持 |
Math.log10 |
支持 |
支持 |
Math.log2 |
支持 |
支持 |
Math.sinh |
支持 |
支持 |
Math.cosh |
支持 |
支持 |
Math.tanh |
支持 |
支持 |
Math.asinh |
支持 |
支持 |
Math.acosh |
支持 |
支持 |
Math.atanh |
支持 |
支持 |
内置对象 |
iOS |
Android |
Set |
支持 |
支持 |
Map |
支持 |
支持 |
WeakMap |
支持 |
支持 |
WeakSet |
支持 |
支持 |
Symbol |
支持 |
支持 |
Proxy |
支持 |
支持 |
Reflect |
支持 |
支持 |
Promise |
支持 |
支持 |
出于安全考虑,小部件限制了部分 ES 的语法和 API :
1)不支持 eval 使用。
2)setTimeout 和 setInterval 函数仅支持函数做回调参数,不可动态执行代码。
3)不支持使用 new Function 创建函数。