From 750f4a2efb30e6905ed5889de47fbff1cb55a7f3 Mon Sep 17 00:00:00 2001 From: xcatliu Date: Mon, 31 Oct 2022 11:20:52 +0800 Subject: [PATCH 1/3] fix: an error in Chinese version of Structured_clone_algorithm Fix an error in Chinese version of Structured_clone_algorithm --- .../structured_clone_algorithm/index.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md index 442e057dd12db..2595718a5a796 100644 --- a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md +++ b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md @@ -7,7 +7,7 @@ slug: Web/API/Web_Workers_API/Structured_clone_algorithm ## 结构化克隆所不能做到的 -- [`Error`](/zh-CN/JavaScript/Reference/Global_Objects/Error) 以及 [`Function`](/zh-CN/JavaScript/Reference/Global_Objects/Function) 对象是不能被结构化克隆算法复制的;如果你尝试这样子去做,这会导致抛出 `DATA_CLONE_ERR` 的异常。 +- [`Function`](/zh-CN/JavaScript/Reference/Global_Objects/Function) 对象是不能被结构化克隆算法复制的;如果你尝试这样子去做,这会导致抛出 `DATA_CLONE_ERR` 的异常。 - 企图去克隆 DOM 节点同样会抛出 `DATA_CLONE_ERR` 异常。 - 对象的某些特定参数也不会被保留 @@ -23,6 +23,7 @@ slug: Web/API/Web_Workers_API/Structured_clone_algorithm | [Boolean](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean) 对象 | | | String 对象 | | | [Date](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date) | | +| [Error](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error) 类型 | (仅限部分 [Error 类型](#Error 类型))。 | | [RegExp](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp) | `lastIndex` 字段不会被保留。 | | {{ domxref("Blob") }} | | | {{ domxref("File") }} | | @@ -35,6 +36,14 @@ slug: Web/API/Web_Workers_API/Structured_clone_algorithm | [Map](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map) | | | [Set](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set) | | +## Error 类型 + +仅支持以下 Error 类型 [Error](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error)、[EvalError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError)、[RangeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError)、[ReferenceError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)、[SyntaxError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)、[TypeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError)、[URIError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/URIError)。 + +其中 `name` 和 `message` 字段肯定会被结构化,其他有意义的字段可能会结构化,如 `stack`、`cause` 等(取决于不同浏览器的实现)。 + +[AggregateError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) 将会在 [whatwg/html#5749](https://github.com/whatwg/html/pull/5749) 标准中被支持(部分浏览器已支持了)。 + ## 相关链接 - [HTML5 Specification: Safe passing of structured data](http://www.w3.org/TR/html5/infrastructure.html#safe-passing-of-structured-data) From 08b68fafc590ff7ba7d5294ece51b74e72268a9d Mon Sep 17 00:00:00 2001 From: allo Date: Mon, 31 Oct 2022 12:12:11 +0800 Subject: [PATCH 2/3] minor fixes --- .../structured_clone_algorithm/index.md | 68 +++++++++---------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md index 2595718a5a796..11f7706b4320d 100644 --- a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md +++ b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md @@ -3,7 +3,7 @@ title: 结构化克隆算法 slug: Web/API/Web_Workers_API/Structured_clone_algorithm --- -结构化克隆算法是[由 HTML5 规范定义](http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#safe-passing-of-structured-data)的用于复制复杂 JavaScript 对象的算法。通过来自 [Workers](/zh-CN/docs/Web/API/Worker)的 `postMessage()` 或使用 [IndexedDB](/zh-CN/docs/Glossary/IndexedDB) 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。 +**结构化克隆算法**用于复制复杂 JavaScript 对象的算法。通过来自 [Workers](/zh-CN/docs/Web/API/Worker)的 `postMessage()` 或使用 [IndexedDB](/zh-CN/docs/Glossary/IndexedDB) 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。 ## 结构化克隆所不能做到的 @@ -17,38 +17,36 @@ slug: Web/API/Web_Workers_API/Structured_clone_algorithm ## 支持的类型 -| 对象类型 | 注意 | -| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| [所有的原始类型](/zh-CN/docs/Web/JavaScript/Data_structures#原始值) | symbols 除外 | -| [Boolean](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean) 对象 | | -| String 对象 | | -| [Date](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date) | | -| [Error](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error) 类型 | (仅限部分 [Error 类型](#Error 类型))。 | -| [RegExp](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp) | `lastIndex` 字段不会被保留。 | -| {{ domxref("Blob") }} | | -| {{ domxref("File") }} | | -| {{ domxref("FileList") }} | | -| [ArrayBuffer](/zh-CN/docs/Web/API/ArrayBuffer) | | -| [ArrayBufferView](/zh-CN/docs/Web/API/ArrayBufferView) | 这基本上意味着所有的 [类型化数组](/zh-CN/docs/Web/JavaScript/Typed_arrays) ,如 Int32Array 等。 | -| {{ domxref("ImageData") }} | | -| [Array](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array) | | -| [Object](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object) | 仅包括普通对象(如对象字面量) | -| [Map](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map) | | -| [Set](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set) | | - -## Error 类型 - -仅支持以下 Error 类型 [Error](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error)、[EvalError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError)、[RangeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError)、[ReferenceError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)、[SyntaxError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)、[TypeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError)、[URIError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/URIError)。 - -其中 `name` 和 `message` 字段肯定会被结构化,其他有意义的字段可能会结构化,如 `stack`、`cause` 等(取决于不同浏览器的实现)。 - -[AggregateError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) 将会在 [whatwg/html#5749](https://github.com/whatwg/html/pull/5749) 标准中被支持(部分浏览器已支持了)。 - -## 相关链接 - -- [HTML5 Specification: Safe passing of structured data](http://www.w3.org/TR/html5/infrastructure.html#safe-passing-of-structured-data) -- {{ domxref("window.history") }} -- {{ domxref("window.postMessage()") }} -- [Web Workers](/zh-CN/docs/Web/API/Web_Workers_API) +### JavaScript 类型 + +- {{jsxref("Array")}} +- {{jsxref("ArrayBuffer")}} +- {{jsxref("Boolean")}} +- {{jsxref("DataView")}} +- {{jsxref("Date")}} +- {{jsxref("Error")}} 类型(仅限部分 [Error 类型](#error_类型))。 +- {{jsxref("Map")}} +- {{jsxref("Object")}} objects: but only plain objects (e.g. from object literals). +- 除 `symbol` 以外的[基本类型](/zh-CN/docs/Web/JavaScript/Data_structures#primitive_values)。 +- {{jsxref("RegExp")}}:`lastIndex` 字段不会被保留。 +- {{jsxref("Set")}} +- {{jsxref("String")}} +- {{jsxref("TypedArray")}} + +#### Error 类型 + +仅支持以下 `Error` 类型:[Error](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Error)、[EvalError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError)、[RangeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError)、[ReferenceError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError)、[SyntaxError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError)、[TypeError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError)、[URIError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/URIError)(或其它会被设置为 `Error` 的)。 + +浏览器必须序列化 `name` 和 `message` 字段,其它有意义的字段则可能会序列化,如 `stack`、`cause` 等。 + +[AggregateError](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AggregateError) 预计会在 [whatwg/html#5749](https://github.com/whatwg/html/pull/5749) 被添加到标准中(并且已被部分浏览器所支持)。 + +## 参见 + +- [HTML 规范:安全地传递结构化数据](https://html.spec.whatwg.org/multipage/infrastructure.html#safe-passing-of-structured-data) +- {{Glossary("Transferable objects", "可转移对象")}} +- {{domxref("structuredClone()")}} +- {{domxref("window.history")}} +- {{domxref("window.postMessage()")}} +- [Web Worker](/zh-CN/docs/Web/API/Web_Workers_API) - [IndexedDB](/zh-CN/docs/Web/API/IndexedDB_API) -- [Components.utils.cloneInto](/zh-CN/docs/Components.utils.cloneInto) From f45a03b24e8bd9d3921e8e0ca3b5174375a67f6a Mon Sep 17 00:00:00 2001 From: allo Date: Mon, 31 Oct 2022 12:14:31 +0800 Subject: [PATCH 3/3] add sidebar --- .../api/web_workers_api/structured_clone_algorithm/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md index 11f7706b4320d..756315111919a 100644 --- a/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md +++ b/files/zh-cn/web/api/web_workers_api/structured_clone_algorithm/index.md @@ -3,11 +3,13 @@ title: 结构化克隆算法 slug: Web/API/Web_Workers_API/Structured_clone_algorithm --- -**结构化克隆算法**用于复制复杂 JavaScript 对象的算法。通过来自 [Workers](/zh-CN/docs/Web/API/Worker)的 `postMessage()` 或使用 [IndexedDB](/zh-CN/docs/Glossary/IndexedDB) 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。 +{{DefaultAPISidebar("Web Workers API")}} + +**结构化克隆算法**用于复制复杂 JavaScript 对象的算法。通过来自 [Worker](/zh-CN/docs/Web/API/Worker) 的 `postMessage()` 或使用 [IndexedDB](/zh-CN/docs/Glossary/IndexedDB) 存储对象时在内部使用。它通过递归输入对象来构建克隆,同时保持先前访问过的引用的映射,以避免无限遍历循环。 ## 结构化克隆所不能做到的 -- [`Function`](/zh-CN/JavaScript/Reference/Global_Objects/Function) 对象是不能被结构化克隆算法复制的;如果你尝试这样子去做,这会导致抛出 `DATA_CLONE_ERR` 的异常。 +- [`Function`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function) 对象是不能被结构化克隆算法复制的;如果你尝试这样子去做,这会导致抛出 `DATA_CLONE_ERR` 的异常。 - 企图去克隆 DOM 节点同样会抛出 `DATA_CLONE_ERR` 异常。 - 对象的某些特定参数也不会被保留