Object.fromEntries 仅在 iOS 上可用?(反应原生 - 不是网页)

iul*_*net 4 javascript object ecmascript-6 react-native expo

标题是不言自明的,但是,请考虑以下示例代码:

import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import { Constants } from 'expo';


export default class App extends React.Component {
  render() {
    return ( 
      <Text>
         {Object.fromEntries("test")}
      </Text>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Expo Snacks上查看

通过在Android设备上打开它,我收到该fromEntries函数不存在的错误Object

在此处输入图片说明

但在 iOS 上,它确实存在:

在此处输入图片说明

(提供给它的参数错误,但它仍然存在)

那么这里发生了什么?两个平台之间的 JS 引擎不应该是相同的吗?还存在哪些其他已知差异?

Jac*_*ord 5

很可能你有一个旧的或不完全支持的引擎(检查文档)。你可以像这样制作一个 ES6 polyfill:

Object.fromEntries = Object.fromEntries || arr => arr.reduce((acc, [k, v]) => (acc[k] = v, acc), {});
Run Code Online (Sandbox Code Playgroud)

或者像这样的 ES5 polyfill:

Object.fromEntries = Object.fromEntries || function(arr) {
    return arr.reduce(function(acc, curr) {
        acc[curr[0]] = curr[1];
        return acc;
    }, {});
};
Run Code Online (Sandbox Code Playgroud)