W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
小程序的 JavaScript 代碼分為邏輯層腳本和 sjs 腳本,它們運行在相同的 JavaScript 引擎的不同線程中。
在不同操作系統(tǒng)上,小程序的 JavaScript 引擎是不同的。在 iOS 平臺上,腳本運行在操作系統(tǒng)提供的 JavaScriptCore 引擎上;而在 Android 平臺上,腳本則運行在支付寶提供的 V8 引擎上。
支付寶小程序通過對開發(fā)者上傳的代碼進行 babel 轉(zhuǎn)換,使 JavaScript 引擎支持絕大多數(shù) ES6 的新特性。但是對于 ES6 擴展的內(nèi)置對象,小程序并未在 JavaScript 引擎上提供 polyfill,因此會導(dǎo)致在不同平臺的 JavaScript 引擎中,對不同的 ES6 擴展的內(nèi)置對象支持存在差異。
開發(fā)者需要避免使用 JavaScript 引擎不支持的內(nèi)置對象。 如果必須使用,可自己提供內(nèi)置對象的 polyfill(Polyfill :用于實現(xiàn)瀏覽器或其他 JavaScript 引擎不支持的原生 API 的代碼 )。
注意:小程序引擎中禁止訪問 globalThis、global ,因此無法直接使用 babel-polyfill。
下表是各個操作系統(tǒng)對 ES6 擴展的內(nèi)置對象的支持情況:
Object | iOS 8 | iOS 9 | iOS 10 及以上 | Android |
---|---|---|---|---|
Object.is | 不支持 | 支持 | 支持 | 支持 |
Object.assign | 不支持 | 支持 | 支持 | 支持 |
Object.keys | 支持 | 支持 | 支持 | 支持 |
Object.getOwnPropertyDescriptor | 支持 | 支持 | 支持 | 支持 |
Object.getOwnPropertyNames | 支持 | 支持 | 支持 | 支持 |
Object.getOwnPropertySymbols | 不支持 | 支持 | 支持 | 支持 |
String | iOS 8 | iOS 9 | iOS 10 及以上 | Android |
---|---|---|---|---|
String.prototype.codePointAt | 不支持 | 支持 | 支持 | 支持 |
String.prototype.normalize | 不支持 | 不支持 | 支持 | 支持 |
String.prototype.includes | 不支持 | 支持 | 支持 | 支持 |
String.prototype.startsWith | 不支持 | 支持 | 支持 | 支持 |
String.prototype.endsWith | 不支持 | 支持 | 支持 | 支持 |
String.prototype.repeat | 不支持 | 支持 | 支持 | 支持 |
String.fromCodePoint | 不支持 | 支持 | 支持 | 支持 |
Array | iOS 8 | iOS 9 | iOS 10 及以上 | 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 8 | iOS 9 | iOS 10 及以上 | Android |
---|---|---|---|---|
Number.isFinite | 不支持 | 支持 | 支持 | 支持 |
Number.isNaN | 不支持 | 支持 | 支持 | 支持 |
Number.parseInt | 不支持 | 支持 | 支持 | 支持 |
Number.parseFloat | 不支持 | 支持 | 支持 | 支持 |
Number.isInteger | 不支持 | 支持 | 支持 | 支持 |
Number.EPSILON | 不支持 | 支持 | 支持 | 支持 |
Number.isSafeInteger | 不支持 | 支持 | 支持 | 支持 |
Math | iOS 8 | iOS 9 | iOS 10 及以上 | 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 | 支持 | 支持 | 支持 | 支持 |
內(nèi)置對象 | iOS 8 | iOS 9 | iOS 10及以上 | Android |
---|---|---|---|---|
Set | 支持 | 支持 | 支持 | 支持 |
Map | 支持 | 支持 | 支持 | 支持 |
Proxy | 不支持 | 不支持 | 支持 | 支持 |
Reflect | 不支持 | 不支持 | 支持 | 支持 |
Promise | 支持 | 支持 | 支持 | 支持 |
出于安全考慮,小程序限制了部分 ES 的語法和 API :
小程序的邏輯層支持 ES2015 模塊化語法,但是將瀏覽器部分內(nèi)置對象名(如 window、document)作保留字使用,以應(yīng)對未來的不時之需,這些保留字不可用做模塊名。保留字有:globalThis、global、AlipayJSBridge、fetch、self、window、document、location、XMLHttpRequest。更多詳情請參見 框架概述 中對模塊名保留字的介紹。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: