我正在查看一些用于 react native fetch blob https://github.com/joltup/react-native-fetch-blob 的代码,我在他们的示例中看到调用 window.Blob
等。
Window 是否是一个全局变量,就像您在浏览器 Web 环境中看到的那样?或者它是否以某种方式代表当前的可视屏幕?下面的代码示例只是替换/覆盖全局对象吗?
const Blob = RNFetchBlob.polyfill.Blob;
const fs = RNFetchBlob.fs;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;
最佳答案
React Native 定义了一些全局变量(都在 global
下),它们是 polyfill 的,因此可以使用最初为浏览器开发的某些库而不会失败。大多数熟悉的浏览器 API 的 polyfill 都是空的。您可以在 InitializeCore.js
中看到它们。window
虽然不是空的。它设置为 global
:
if (global.window === undefined) {
global.window = global;
}
那么下一个问题是,
Blob
中的 global
是什么?Blob
是使用 global
函数的属性 added to polyfillGlobal
。如果您对它的工作原理感到好奇,可以查看 PolyfillFunctions.js
文件。 Blob
本身在 Blob.js
中定义。polyfillGlobal('Blob', () => require('Blob'));
所以现在我们看到了 React Native 正在做什么,我们可以回到你的问题:
global
的属性,设置为等于 global
。 window.XMLHttpRequest
和 window.Blob
。 关于react-native - 变量 "window"在 React Native 中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49911424/