diff --git a/files/zh-cn/mozilla/firefox/releases/41/index.md b/files/zh-cn/mozilla/firefox/releases/41/index.md index f058faa7aa609d..2fedb394307852 100644 --- a/files/zh-cn/mozilla/firefox/releases/41/index.md +++ b/files/zh-cn/mozilla/firefox/releases/41/index.md @@ -3,7 +3,9 @@ title: Firefox 41 for developers slug: Mozilla/Firefox/Releases/41 --- -{{FirefoxSidebar}}[To test the latest developer features of Firefox, install Firefox Developer Edition](https://nightly.mozilla.org/) Firefox 41 was released on September 22, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers. +{{FirefoxSidebar}} + +[To test the latest developer features of Firefox, install Firefox Developer Edition](https://nightly.mozilla.org/) Firefox 41 was released on September 22, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers. ## Changes for Web developers diff --git a/files/zh-cn/web/api/filesystemdirectoryhandle/index.md b/files/zh-cn/web/api/filesystemdirectoryhandle/index.md index ae48ddc7ae9650..e29b303201ccc3 100644 --- a/files/zh-cn/web/api/filesystemdirectoryhandle/index.md +++ b/files/zh-cn/web/api/filesystemdirectoryhandle/index.md @@ -40,7 +40,7 @@ _从父接口 {{DOMxRef("FileSystemHandle")}} 继承方法。_ - : 返回一个新的迭代 `FileSystemDirectoryHandle` 对象内每个条目的键的异步迭代器。 - {{domxref('FileSystemDirectoryHandle.values()')}} - : 返回一个新的迭代 `FileSystemDirectoryHandle` 对象内每个条目的句柄的异步迭代器。 -- `FileSystemDirectoryHandle[@@asyncIterator]()` +- `FileSystemDirectoryHandle[Symbol.asyncIterator]()` - : 返回给定对象自己的可枚举属性的 `[key, value]` 对的新*异步迭代器*。 ## 示例 diff --git a/files/zh-cn/web/api/readablestream/from_static/index.md b/files/zh-cn/web/api/readablestream/from_static/index.md index 95519f1b7a8f4f..8877b6113fde30 100644 --- a/files/zh-cn/web/api/readablestream/from_static/index.md +++ b/files/zh-cn/web/api/readablestream/from_static/index.md @@ -27,7 +27,7 @@ ReadableStream.from(anyIterable) ### 异常 - {{jsxref("TypeError")}} - - : 如果传入的参数不是可迭代对象或者异步可迭代对象(未定义 `@@iterator` 或 `@@asyncIterator` 方法),则抛出。如果在迭代期间,下一步的结果不是对象或者 promise 不能兑现对象,则也会抛出。 + - : 如果传入的参数不是可迭代对象或者异步可迭代对象(未定义 `[Symbol.iterator]()` 或 `[Symbol.asyncIterator]()` 方法),则抛出。如果在迭代期间,下一步的结果不是对象或者 promise 不能兑现对象,则也会抛出。 ## 示例 diff --git a/files/zh-cn/web/api/urlsearchparams/index.md b/files/zh-cn/web/api/urlsearchparams/index.md index d5cbc0c6123dc5..8d489f67aae991 100644 --- a/files/zh-cn/web/api/urlsearchparams/index.md +++ b/files/zh-cn/web/api/urlsearchparams/index.md @@ -2,7 +2,7 @@ title: URLSearchParams slug: Web/API/URLSearchParams l10n: - sourceCommit: 4de6f76bbfd76229db78ffb7d52cf6b4cb9f31f8 + sourceCommit: e92950d09467164afc9dfd8b35be9c909b63a8ab --- {{ApiRef("URL API")}} {{AvailableInWorkers}} @@ -30,7 +30,7 @@ for (const [key, value] of mySearchParams.entries()) { ## 实例方法 -- `URLSearchParams.[@@iterator]()` +- `URLSearchParams[Symbol.iterator]()` - : 返回一个 {{jsxref("Iteration_protocols","iterator")}},允许以键/值对在查询字符串中出现的顺序迭代包含在该对象的键/值对。 - {{domxref("URLSearchParams.append()")}} - : 插入一个指定的键/值对作为新的查询参数。 diff --git a/files/zh-cn/web/javascript/data_structures/index.md b/files/zh-cn/web/javascript/data_structures/index.md index e2147fadcc9f8b..81271feeb1ffc8 100644 --- a/files/zh-cn/web/javascript/data_structures/index.md +++ b/files/zh-cn/web/javascript/data_structures/index.md @@ -236,17 +236,17 @@ JavaScript 有一个内置对象的标准库。请阅读[参考页面](/zh-CN/do - [`+`](/zh-CN/docs/Web/JavaScript/Reference/Operators/Addition) 运算符——如果运算对象是字符串,执行字符串串联;否则,执行数值相加。 - [`==`](/zh-CN/docs/Web/JavaScript/Reference/Operators/Equality) 运算符——如果一个运算对象是原始值,而另一个运算对象是对象(object),则该对象将转换为没有首选类型的原始值。 -如果值已经是原始值,则此操作不会进行任何转换。对象将依次调用它的 [`[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(将 `default` 作为 hint 值)、`valueOf()` 和 `toString()` 方法,将其转换为原始值。注意,原始值转换会在 `toString()` 方法之前调用 `valueOf()` 方法,这与[数字类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#number_强制转换)的行为相似,但与[字符串类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)不同。 +如果值已经是原始值,则此操作不会进行任何转换。对象将依次调用它的 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(将 `default` 作为 hint 值)、`valueOf()` 和 `toString()` 方法,将其转换为原始值。注意,原始值转换会在 `toString()` 方法之前调用 `valueOf()` 方法,这与[数字类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#number_强制转换)的行为相似,但与[字符串类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)不同。 -`[@@toPrimitive]()` 方法,如果存在,则必须返回原始值——返回对象,会导致 {{jsxref("TypeError")}}。对于 `valueOf()` 和 `toString()`,如果其中一个返回对象,则忽略其返回值,从而使用另一个的返回值;如果两者都不存在,或者两者都没有返回一个原始值,则抛出 {{jsxref("TypeError")}}。例如,以下代码: +`[Symbol.toPrimitive]()` 方法,如果存在,则必须返回原始值——返回对象,会导致 {{jsxref("TypeError")}}。对于 `valueOf()` 和 `toString()`,如果其中一个返回对象,则忽略其返回值,从而使用另一个的返回值;如果两者都不存在,或者两者都没有返回一个原始值,则抛出 {{jsxref("TypeError")}}。例如,以下代码: ```js console.log({} + []); // "[object Object]" ``` -`{}` 和 `[]` 都没有 `[@@toPrimitive]()` 方法。`{}` 和 `[]` 都从 {{jsxref("Object.prototype.valueOf")}} 继承 `valueOf()`,其返回对象自身。因为返回值是一个对象,因此它被忽略。因此,调用 `toString()` 方法。[`{}.toString()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) 返回 `"[object Object]"`,而 [`[].toString()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) 返回 `""`,因此这个结果是它们的串联:`"[object Object]"`。 +`{}` 和 `[]` 都没有 `[Symbol.toPrimitive]()` 方法。`{}` 和 `[]` 都从 {{jsxref("Object.prototype.valueOf")}} 继承 `valueOf()`,其返回对象自身。因为返回值是一个对象,因此它被忽略。因此,调用 `toString()` 方法。[`{}.toString()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) 返回 `"[object Object]"`,而 [`[].toString()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) 返回 `""`,因此这个结果是它们的串联:`"[object Object]"`。 -在强制转换为任意的原始类型时,`[@@toPrimitive]()` 方法总是优先调用。原始值的强制转换的行为通常与 number 类型的强制转换类似,因为优先调用了 `valueOf()`;然而,有着自定义 `[@@toPrimitive]()` 方法的对象可以选择返回任意的原始值。{{jsxref("Date")}} 和 {{jsxref("Symbol")}} 对象是唯一重写 `[@@toPrimitive]()` 方法的对象。[`Date.prototype[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive) 将 `"string"` 视为 `"default"` hint,而 [`Symbol.prototype[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive) 忽略 hint 并始终返回一个 symbol。 +在强制转换为任意的原始类型时,`[Symbol.toPrimitive]()` 方法总是优先调用。原始值的强制转换的行为通常与 number 类型的强制转换类似,因为优先调用了 `valueOf()`;然而,有着自定义 `[Symbol.toPrimitive]()` 方法的对象可以选择返回任意的原始值。{{jsxref("Date")}} 和 {{jsxref("Symbol")}} 对象是唯一重写 `[Symbol.toPrimitive]()` 方法的对象。[`Date.prototype[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/Symbol.toPrimitive) 将 `"string"` 视为 `"default"` hint,而 [`Symbol.prototype[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol.toPrimitive) 忽略 hint 并始终返回一个 symbol。 ### 数字类型强制转换 @@ -260,11 +260,11 @@ console.log({} + []); // "[object Object]" 你可能已经注意到,有三种不同的路径可以将对象转换为原始值: -- [原始值强制转换](#原始值强制转换):`[@@toPrimitive]("default")` → `valueOf()` → `toString()` -- [数字类型强制转换](#数字类型强制转换)、[number 类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#number_强制转换)、[BigInt 类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt#转化):`[@@toPrimitive]("number")` → `valueOf()` → `toString()` -- [字符串类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换):`[@@toPrimitive]("string")` → `toString()` → `valueOf()` +- [原始值强制转换](#原始值强制转换):`[Symbol.toPrimitive]("default")` → `valueOf()` → `toString()` +- [数字类型强制转换](#数字类型强制转换)、[number 类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#number_强制转换)、[BigInt 类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt#转化):`[Symbol.toPrimitive]("number")` → `valueOf()` → `toString()` +- [字符串类型强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换):`[Symbol.toPrimitive]("string")` → `toString()` → `valueOf()` -在所有情况下,`[@@toPrimitive]()` 如果存在,必须可调用并返回原始值,而如果它们不可调用或返回对象,`valueOf` 或 `toString` 将被忽略。在过程结束时,如果成功,结果保证是原始值。然后,由此产生的原始值会进一步强制类型转换,具体取决于上下文。 +在所有情况下,`[Symbol.toPrimitive]()` 如果存在,必须可调用并返回原始值,而如果它们不可调用或返回对象,`valueOf` 或 `toString` 将被忽略。在过程结束时,如果成功,结果保证是原始值。然后,由此产生的原始值会进一步强制类型转换,具体取决于上下文。 ## 参见 diff --git a/files/zh-cn/web/javascript/guide/iterators_and_generators/index.md b/files/zh-cn/web/javascript/guide/iterators_and_generators/index.md index b941fc66c3a8ce..42d1727f02e77f 100644 --- a/files/zh-cn/web/javascript/guide/iterators_and_generators/index.md +++ b/files/zh-cn/web/javascript/guide/iterators_and_generators/index.md @@ -95,11 +95,11 @@ function* makeRangeIterator(start = 0, end = Infinity, step = 1) { 若一个对象拥有迭代行为,比如在 {{jsxref("Statements/for...of", "for...of")}} 中会循环一些值,那么那个对象便是一个可迭代对象。一些内置类型,如 {{jsxref("Array")}} 或 {{jsxref("Map")}} 拥有默认的迭代行为,而其他类型(比如 {{jsxref("Object")}})则没有。 -为了实现**可迭代**,一个对象必须实现 **@@iterator** 方法,这意味着这个对象(或其[原型链](/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)中的任意一个对象)必须具有一个键值为 {{jsxref("Symbol.iterator")}} 的属性。 +为了实现**可迭代**,对象必须实现 `[Symbol.iterator]()` 方法,这意味着这个对象(或其[原型链](/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)中的任意一个对象)必须具有一个键值为 {{jsxref("Symbol.iterator")}} 的属性。 程序员应知道一个可迭代对象可以多次迭代,还是只能迭代一次。 -只能迭代一次的可迭代对象(例如 Generator)通常从它们的 **@@iterator** 方法中返回 `this`,而那些可以多次迭代的方法必须在每次调用 **@@iterator** 时返回一个新的迭代器。 +只能迭代一次的可迭代对象(例如生成器)通常从它们的 `[Symbol.iterator]()` 方法中返回 `this`,而那些可以多次迭代的方法必须在每次调用 `[Symbol.iterator]()` 时返回一个新的迭代器。 ```js function* makeIterator() { @@ -116,10 +116,10 @@ for (const itItem of it) { console.log(it[Symbol.iterator]() === it); // true // 这个例子向我们展示了生成器(迭代器)是可迭代对象, -// 它有一个 @@iterator 方法返回 it(它自己), +// 它有一个 [Symbol.iterator]() 方法返回 it(它自己), // 因此,it 对象只能迭代*一次*。 -// 如果我们将它的 @@iterator 方法改为一个返回新的迭代器/生成器对象的函数/生成器, +// 如果我们将它的 [Symbol.iterator]() 方法改为一个返回新的迭代器/生成器对象的函数/生成器, // 它(it)就可以迭代多次了。 it[Symbol.iterator] = function* () { diff --git a/files/zh-cn/web/javascript/reference/classes/constructor/index.md b/files/zh-cn/web/javascript/reference/classes/constructor/index.md index d06eb6bc4d241d..0714f321466a16 100644 --- a/files/zh-cn/web/javascript/reference/classes/constructor/index.md +++ b/files/zh-cn/web/javascript/reference/classes/constructor/index.md @@ -61,7 +61,7 @@ constructor(...args) { } ``` -> **备注:** 像上面这样的显式构造函数与默认构造函数的区别在于,后者实际上并不通过[参数展开](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax)来调用[数组迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator)。 +> **备注:** 像上面这样的显式构造函数与默认构造函数的区别在于,后者实际上并不通过[参数展开](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax)来调用[数组迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator)。 这样代码才能正常工作: diff --git a/files/zh-cn/web/javascript/reference/classes/extends/index.md b/files/zh-cn/web/javascript/reference/classes/extends/index.md index cb408b4228515d..16840d058fcf34 100644 --- a/files/zh-cn/web/javascript/reference/classes/extends/index.md +++ b/files/zh-cn/web/javascript/reference/classes/extends/index.md @@ -131,7 +131,7 @@ console.log(new ChildClass()); // TypeError: Derived constructors may only retur 然而,要正确地实现上述期望,需要付出不小的努力。 - 第一个要求静态方法读取 [`this`](/zh-CN/docs/Web/JavaScript/Reference/Operators/this) 的值,以获取构造函数来构造返回的实例。这意味着 `[p1,p2,p3].map(Promise.resolve)` 会抛出错误,因为 `Promise.resolve` 中的 `this` 是 `undefined`。解决这个问题的方法是,如果 `this` 不是构造函数,就回退到基类,就像 {{jsxref("Array.from()")}} 所做的那样,但这仍然意味着基类是特例。 -- 第二个要求实例方法读取 [`this.constructor`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) 以获取构造函数。但是,`new this.constructor()` 可能会破坏老旧的代码,因为 `constructor` 属性是可写和可配置的,而且不受任何保护。因此,许多复制的内置方法都使用构造函数的 [`@@species`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species) 属性(默认情况下只返回 `this`,即构造函数本身)。然而,`@@species` 允许运行任意代码和创建任意类型的实例,这就带来了安全问题,并使子类化语义变得非常复杂。 +- 第二个要求实例方法读取 [`this.constructor`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor) 以获取构造函数。但是,`new this.constructor()` 可能会破坏老旧的代码,因为 `constructor` 属性是可写和可配置的,而且不受任何保护。因此,许多复制的内置方法都使用构造函数的 [`[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species) 属性(默认情况下只返回 `this`,即构造函数本身)。然而,`[Symbol.species]` 允许运行任意代码和创建任意类型的实例,这就带来了安全问题,并使子类化语义变得非常复杂。 - 第三个会导致自定义代码的可见调用,从而使很多优化更难实现。例如,如果使用包含 _x_ 个元素的可迭代元素调用 `Map()` 构造函数,那么它必须明显地调用 `set()` 方法 _x_ 次,而不仅仅是将元素复制到内部存储。 这些问题并非内置类所独有。对于你自己的类,你也可能需要做出同样的决定。不过,对于内置类来说,可优化性和安全性是更大的问题。新的内置方法总是构造基类,并尽可能少地调用自定义方法。如果你想在实现上述期望的同时对内置类进行子类化,你需要重写所有已具有默认行为的方法。在基类上添加任何新方法都可能会破坏子类的语义,因为这些方法是默认继承的。因此,扩展内置类的更好方法是使用[_组合_](#避免继承)。 diff --git a/files/zh-cn/web/javascript/reference/functions/arguments/index.md b/files/zh-cn/web/javascript/reference/functions/arguments/index.md index f0d6606ebf2a54..2e08d5410acc0a 100644 --- a/files/zh-cn/web/javascript/reference/functions/arguments/index.md +++ b/files/zh-cn/web/javascript/reference/functions/arguments/index.md @@ -92,8 +92,8 @@ var args = [...arguments]; - : 指向参数所属的当前执行的函数。 - [`arguments.length`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/length) - : 传递给函数的参数数量。 -- [`arguments[@@iterator]`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/@@iterator) - - : 返回一个新的 {{jsxref("Array/@@iterator", "Array 迭代器", "", 0)}}对象,该对象包含参数中每个索引的值。 +- [`arguments[Symbol.iterator]`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/Symbol.iterator) + - : 返回一个新的[数组迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator)对象,该对象包含参数中每个索引的值。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/functions/arguments/symbol.iterator/index.md b/files/zh-cn/web/javascript/reference/functions/arguments/symbol.iterator/index.md index 8403ba5719b59d..4e0255084e9027 100644 --- a/files/zh-cn/web/javascript/reference/functions/arguments/symbol.iterator/index.md +++ b/files/zh-cn/web/javascript/reference/functions/arguments/symbol.iterator/index.md @@ -1,5 +1,5 @@ --- -title: arguments[@@iterator]() +title: arguments[Symbol.iterator]() slug: Web/JavaScript/Reference/Functions/arguments/Symbol.iterator --- diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/concat/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/concat/index.md index 46a912d6b8b6bd..b8ef3d0dff0a3a 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/concat/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/concat/index.md @@ -35,7 +35,7 @@ concat(value0, value1, /* … ,*/ valueN) 如果任何源数组是[稀疏数组](/zh-CN/docs/Web/JavaScript/Guide/Indexed_collections#稀疏数组),`concat()` 方法会保留空槽。 -`concat()` 方法是[通用的](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array#通用数组方法)。`this` 值的处理方式与其他参数相同(除了它会先转换为对象),这意味着普通对象将直接添加到结果数组中,而 `@@isConcatSpreadable` 属性为真值的类数组对象将展开并添加到数组中。 +`concat()` 方法是[通用的](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array#通用数组方法)。`this` 值的处理方式与其他参数相同(除了它会先转换为对象),这意味着普通对象将直接添加到结果数组中,而 `[Symbol.isConcatSpreadable]` 属性为真值的类数组对象将展开并添加到数组中。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/entries/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/entries/index.md index 225f23b8d684c6..51baf5535bb41f 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/entries/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/entries/index.md @@ -102,6 +102,6 @@ for (const entry of Array.prototype.entries.call(arrayLike)) { - {{jsxref("Array")}} - {{jsxref("Array.prototype.keys()")}} - {{jsxref("Array.prototype.values()")}} -- [`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator) +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) - {{jsxref("TypedArray.prototype.entries()")}} - [迭代协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols) diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/index.md index 10bc1837f93f54..4855785cf7eda3 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/index.md @@ -131,7 +131,7 @@ const newColors = colors.toReversed(); // ['紫', undefined, undefined, '蓝', ' 其他方法会改变调用该方法的数组,在这种情况下,它们的返回值根据方法的不同而不同:有时是对相同数组的引用,有时是新数组的长度。 -以下方法通过访问 [`this.constructor[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@species) 来创建新数组,以确定要使用的构造函数:{{jsxref("Array/concat", "concat()")}}、{{jsxref("Array/filter", "filter()")}}、{{jsxref("Array/flat", "flat()")}}、{{jsxref("Array/flatMap", "flatMap()")}}、{{jsxref("Array/map", "map()")}}、{{jsxref("Array/slice", "slice()")}} 和 {{jsxref("Array/splice", "splice()")}}(返回构造的已删除元素数组) +以下方法通过访问 [`this.constructor[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.species) 来创建新数组,以确定要使用的构造函数:{{jsxref("Array/concat", "concat()")}}、{{jsxref("Array/filter", "filter()")}}、{{jsxref("Array/flat", "flat()")}}、{{jsxref("Array/flatMap", "flatMap()")}}、{{jsxref("Array/map", "map()")}}、{{jsxref("Array/slice", "slice()")}} 和 {{jsxref("Array/splice", "splice()")}}(返回构造的已删除元素数组) 以下方法总是使用 `Array` 基础构造函数创建新数组:{{jsxref("Array/toReversed", "toReversed()")}}、{{jsxref("Array/toSorted", "toSorted()")}}、{{jsxref("Array/toSpliced", "toSpliced()")}} 和 {{jsxref("Array/with", "with()")}}。 @@ -264,7 +264,7 @@ f("a", "b"); // 'a+b' ## 静态属性 -- {{jsxref("Array/@@species", "get Array[@@species]")}} +- [`Array[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.species) - : 返回 `Array` 构造函数。 ## 静态方法 @@ -284,7 +284,7 @@ f("a", "b"); // 'a+b' - {{jsxref("Object/constructor", "Array.prototype.constructor")}} - : 创建实例对象的构造函数。对于 `Array` 实例,初始值是 {{jsxref("Array/Array", "Array")}} 构造函数。 -- {{jsxref("Array/@@unscopables", "Array.prototype[@@unscopables]")}} +- [`Array.prototype[Symbol.unscopables]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.unscopables) - : 包含 ES2015 版本之前 ECMAScript 标准中没有包含的属性名,在使用 [`with`](/zh-CN/docs/Web/JavaScript/Reference/Statements/with) 绑定语句时会被忽略。 以下属性是每个 `Array` 实例自有的属性。 @@ -370,7 +370,7 @@ f("a", "b"); // 'a+b' - : 返回一个新的[_数组迭代器_](/zh-CN/docs/Web/JavaScript/Guide/Iterators_and_generators)对象,该对象包含数组中每个索引的值。 - {{jsxref("Array.prototype.with()")}} - : 返回一个新数组,其中给定索引处的元素替换为给定值,而不改变原始数组。 -- [`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator) +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) - : 默认情况下,该方法为 [`values()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/values) 方法的别名。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/keys/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/keys/index.md index 158206013529af..494c99097e1180 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/keys/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/keys/index.md @@ -70,6 +70,6 @@ for (const entry of Array.prototype.keys.call(arrayLike)) { - {{jsxref("Array")}} - {{jsxref("Array.prototype.entries()")}} - {{jsxref("Array.prototype.values()")}} -- [`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator) +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) - {{jsxref("TypedArray.prototype.keys()")}} - [迭代协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols) diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.md index 13e910194f1b87..a850257cf29f06 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/splice/index.md @@ -57,7 +57,7 @@ splice(start, deleteCount, item1, item2, /* …, */ itemN) ## 描述 -`splice()` 方法是一个[修改方法](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array#复制方法和修改方法)。它可能会更改 `this` 的内容。如果指定的要插入的元素数量与要删除的元素数量不同,数组的 `length` 也将会更改。同时,它会使用 [`@@species`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@species) 来创建一个新数组实例并返回。 +`splice()` 方法是一个[修改方法](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array#复制方法和修改方法)。它可能会更改 `this` 的内容。如果指定的要插入的元素数量与要删除的元素数量不同,数组的 `length` 也将会更改。同时,它会使用 [`[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.species) 来创建一个新数组实例并返回。 如果删除的部分是[稀疏的](/zh-CN/docs/Web/JavaScript/Guide/Indexed_collections#稀疏数组),则 `splice()` 返回的数组也是稀疏的,对应的索引为空槽。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/symbol.iterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/symbol.iterator/index.md index 164eef04322988..798eebe00c47e1 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/symbol.iterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/symbol.iterator/index.md @@ -1,5 +1,5 @@ --- -title: Array.prototype[@@iterator]() +title: Array.prototype[Symbol.iterator]() slug: Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator --- diff --git a/files/zh-cn/web/javascript/reference/global_objects/array/values/index.md b/files/zh-cn/web/javascript/reference/global_objects/array/values/index.md index 2786d7354033ad..e8ae266b7dc5cc 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/array/values/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/array/values/index.md @@ -21,7 +21,7 @@ values() ## 描述 -`Array.prototype.values()` 是 [`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator) 的默认实现。 +`Array.prototype.values()` 是 [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) 的默认实现。 ```js Array.prototype.values === Array.prototype[Symbol.iterator]; // true @@ -159,6 +159,6 @@ for (const entry of Array.prototype.values.call(arrayLike)) { - {{jsxref("Array")}} - {{jsxref("Array.prototype.entries()")}} - {{jsxref("Array.prototype.keys()")}} -- [`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator) +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) - {{jsxref("TypedArray.prototype.values()")}} - [迭代协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols) diff --git a/files/zh-cn/web/javascript/reference/global_objects/arraybuffer/index.md b/files/zh-cn/web/javascript/reference/global_objects/arraybuffer/index.md index 4948c9828e3221..7c8285c0e9d45e 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/arraybuffer/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/arraybuffer/index.md @@ -41,7 +41,7 @@ l10n: ## 静态属性 -- {{jsxref("ArrayBuffer/@@species", "ArrayBuffer[@@species]")}} +- [`ArrayBuffer[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/Symbol.species) - : 用于创建派生对象的构造函数。 ## 静态方法 @@ -63,8 +63,8 @@ l10n: - : 只读,`ArrayBuffer` 可以调整到的最大字节长度。它在构造时确定,并且无法更改。 - {{jsxref("ArrayBuffer.prototype.resizable")}} - : 只读。如果 `ArrayBuffer` 可调整大小,则返回 `true`,否则返回 `false`。 -- `ArrayBuffer.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"ArrayBuffer"`。它用于 {{jsxref("Object.prototype.toString()")}}。 +- `ArrayBuffer.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"ArrayBuffer"`。它用于 {{jsxref("Object.prototype.toString()")}}。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/asyncfunction/index.md b/files/zh-cn/web/javascript/reference/global_objects/asyncfunction/index.md index dc856a19e7376d..5eda5803e5cd50 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/asyncfunction/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/asyncfunction/index.md @@ -30,8 +30,8 @@ _同时也从它的父类 {{jsxref("Function")}} 继承实例属性_。 - {{jsxref("Object/constructor", "AsyncFunction.prototype.constructor")}} - : 用于创建实例对象的构造函数。对于 `AsyncFunction` 实例,初始值是 {{jsxref("AsyncFunction/AsyncFunction", "AsyncFunction")}} 构造函数。 -- `AsyncFunction.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncFunction"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `AsyncFunction.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncFunction"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 > **备注:** `AsyncFunction` 实例并没有 [`prototype`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype) 属性。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/asyncgenerator/index.md b/files/zh-cn/web/javascript/reference/global_objects/asyncgenerator/index.md index c038e422008505..c1c17d7dd65caa 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/asyncgenerator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/asyncgenerator/index.md @@ -43,8 +43,8 @@ asyncGen.next().then((res) => console.log(res.value)); // 3 > **备注:** `AsyncGenerator` 对象并不会存储创建它们的异步生成器函数的引用。 -- `AsyncGenerator.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncGenerator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `AsyncGenerator.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncGenerator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/asyncgeneratorfunction/index.md b/files/zh-cn/web/javascript/reference/global_objects/asyncgeneratorfunction/index.md index 872f4c459df002..071260969e8237 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/asyncgeneratorfunction/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/asyncgeneratorfunction/index.md @@ -34,8 +34,8 @@ _同时也从它的父类 {{jsxref("Function")}} 继承实例属性_。 - : 用于创建实例对象的构造函数。对于 `AsyncGeneratorFunction` 实例,初始值是 {{jsxref("AsyncGeneratorFunction/AsyncGeneratorFunction", "AsyncGeneratorFunction")}} 构造函数。 - `AsyncGeneratorFunction.prototype.prototype` - : 所有异步生成器函数共享相同的 [`prototype`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype) 属性,即 [`AsyncGenerator.prototype`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator)。每个异步生成器函数实例也都有它自己的 `prototype` 属性。当调用异步生成器函数时,返回的异步生成器对象继承自异步生成器函数的 `prototype` 属性,而 property 属性也继承自 `AsyncGeneratorFunction.prototype.prototype`。 -- `AsyncGeneratorFunction.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncGeneratorFunction"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `AsyncGeneratorFunction.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"AsyncGeneratorFunction"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/asynciterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/asynciterator/index.md index 59b84d950c26f5..30fc58f8393840 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/asynciterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/asynciterator/index.md @@ -7,7 +7,7 @@ l10n: {{JSRef}} -**`AsyncIterator`** 对象是符合[异步迭代器协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)的对象,其提供了 `next()` 方法用以返回一个兑现为迭代器结果对象的 promise。`AsyncIterator.prototype` 对象是一个隐藏的全局对象,所有内置的异步迭代器都继承自它。其提供了 [`@@asyncIterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator/@@asyncIterator) 方法,该方法返回异步迭代器对象本身,使异步迭代器也[异步可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)。 +**`AsyncIterator`** 对象是符合[异步迭代器协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)的对象,其提供了 `next()` 方法用以返回一个兑现为迭代器结果对象的 promise。`AsyncIterator.prototype` 对象是一个隐藏的全局对象,所有内置的异步迭代器都继承自它。其提供了 [`[Symbol.asyncIterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator/Symbol.asyncIterator) 方法,该方法返回异步迭代器对象本身,使异步迭代器也[异步可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)。 注意,`AsyncIterator` *不是*全局对象,尽管将来会出现[异步迭代器辅助方法提案](https://github.com/tc39/proposal-async-iterator-helpers)。所有内置异步迭代器共享的 `AsyncIterator.prototype` 对象可以通过以下代码获得: @@ -21,13 +21,13 @@ const AsyncIteratorPrototype = Object.getPrototypeOf( 目前,唯一内置的 JavaScript 异步迭代器是由[异步生成器函数](/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function*)返回的 {{jsxref("AsyncGenerator")}} 对象。还有一些其他的内置异步迭代器存在于 web API 中,例如 {{domxref("ReadableStream")}} 的异步迭代器。 -每个异步迭代器都有一个不同的原型对象,它定义了特定异步迭代器使用的 `next()` 方法。所有这些原型对象都继承自 `AsyncIterator.prototype`,它提供了一个 [`@@asyncIterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) 方法,该方法返回异步迭代器对象本身,使异步迭代器也[可异步迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)。 +每个异步迭代器都有一个不同的原型对象,它定义了特定异步迭代器使用的 `next()` 方法。所有这些原型对象都继承自 `AsyncIterator.prototype`,它提供了一个 [`[Symbol.asyncIterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) 方法,该方法返回异步迭代器对象本身,使异步迭代器也[可异步迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#异步迭代器和异步可迭代协议)。 -> **备注:** `AsyncIterator.prototype` 并未实现 [`@@iterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator),因此默认情况下,异步迭代器不是[同步可迭代对象](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol)。 +> **备注:** `AsyncIterator.prototype` 并未实现 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator),因此默认情况下,异步迭代器不是[同步可迭代对象](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#可迭代协议)。 ## 实例方法 -- [`AsyncIterator.prototype[@@asyncIterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator/@@asyncIterator) +- [`AsyncIterator.prototype[Symbol.asyncIterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator/Symbol.asyncIterator) - : 返回异步迭代器对象本身。这使异步迭代器对象也可以异步迭代。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/atomics/index.md b/files/zh-cn/web/javascript/reference/global_objects/atomics/index.md index 243dd9d9245940..257e27b6546b01 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/atomics/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/atomics/index.md @@ -23,8 +23,8 @@ l10n: ## 静态属性 -- `Atomics[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Atomics"`。这个属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `Atomics[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Atomics"`。这个属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 ## 静态方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/bigint64array/index.md b/files/zh-cn/web/javascript/reference/global_objects/bigint64array/index.md index a6df4a168a5252..4fc4651abf6493 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/bigint64array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/bigint64array/index.md @@ -37,58 +37,7 @@ slug: Web/JavaScript/Reference/Global_Objects/BigInt64Array ## 实例方法 -- {{jsxref("TypedArray.copyWithin", "BigInt64Array.prototype.copyWithin()")}} - - : 复制数组中的数组元素序列。另请参见 {{jsxref("Array.prototype.copyWithin()")}}。 -- {{jsxref("TypedArray.entries", "BigInt64Array.prototype.entries()")}} - - : 返回一个新的迭代器(_array iterator_)对象,该对象包含数组中每个索引的键/值对。另请参见 {{jsxref("Array.prototype.entries()")}}。 -- {{jsxref("TypedArray.every", "BigInt64Array.prototype.every()")}} - - : 测试数组中的所有元素是否通过函数提供的测试。另请参见 {{jsxref("Array.prototype.every()")}}。 -- {{jsxref("TypedArray.fill", "BigInt64Array.prototype.fill()")}} - - : 用静态值填充从起始索引到结束索引的数组的所有元素。另请参见 {{jsxref("Array.prototype.fill()")}}。 -- {{jsxref("TypedArray.filter", "BigInt64Array.prototype.filter()")}} - - : 使用提供的筛选函数为其返回 `true` 的数组的所有元素创建一个新数组。另请参见 {{jsxref("Array.prototype.filter()")}}。 -- {{jsxref("TypedArray.find", "BigInt64Array.prototype.find()")}} - - : 如果数组中的元素满足提供的测试函数,则返回数组中找到的值;如果未找到,则返回 `undefined`。另请参见 {{jsxref("Array.prototype.find()")}}。 -- {{jsxref("TypedArray.findIndex", "BigInt64Array.prototype.findIndex()")}} - - : 如果数组中的元素满足提供的测试函数,则返回数组中找到的索引;如果未找到,则返回 `-1`。另请参见 {{jsxref("Array.prototype.findIndex()")}}。 -- {{jsxref("TypedArray.forEach", "BigInt64Array.prototype.forEach()")}} - - : 为数组中的每个元素调用函数。另请参见 {{jsxref("Array.prototype.forEach()")}}。 -- {{jsxref("TypedArray.includes", "BigInt64Array.prototype.includes()")}} - - : 确定类型化数组是否包含某个元素,并根据需要返回 `true` 或 `false` 。另请参见 {{jsxref("Array.prototype.includes()")}}。 -- {{jsxref("TypedArray.indexOf", "BigInt64Array.prototype.indexOf()")}} - - : 返回数组中元素的第一个(最小)索引,等于指定值;如果找不到,则返回 `-1`。另请参见 {{jsxref("Array.prototype.indexOf()")}}。 -- {{jsxref("TypedArray.join", "BigInt64Array.prototype.join()")}} - - : 将数组的所有元素联接为字符串。另请参见 {{jsxref("Array.prototype.join()")}}。 -- {{jsxref("TypedArray.keys", "BigInt64Array.prototype.keys()")}} - - : 返回一个新的 _array iterator_,它包含数组中每个索引的键。另请参见 {{jsxref("Array.prototype.keys()")}}。 -- {{jsxref("TypedArray.lastIndexOf", "BigInt64Array.prototype.lastIndexOf()")}} - - : 返回数组中元素的最后一个(最大)索引,等于指定值;如果找不到,则返回 `-1`。另请参见 {{jsxref("Array.prototype.lastIndexOf()")}}。 -- {{jsxref("TypedArray.map", "BigInt64Array.prototype.map()")}} - - : 创建一个新数组,其中包含对此数组中的每个元素调用所提供函数的结果。另请参见 {{jsxref("Array.prototype.map()")}}。 -- {{jsxref("TypedArray.reduce", "BigInt64Array.prototype.reduce()")}} - - : 对累加器和数组的每个值(从左到右)应用一个函数,以便将其减少为单个值。另请参见 {{jsxref("Array.prototype.reduce()")}}。 -- {{jsxref("TypedArray.reduceRight", "BigInt64Array.prototype.reduceRight()")}} - - : 对累加器和数组的每个值(从右到左)应用一个函数,以便将其减少为单个值。另请参见 {{jsxref("Array.prototype.reduceRight()")}}。 -- {{jsxref("TypedArray.reverse", "BigInt64Array.prototype.reverse()")}} - - : 反转数组元素的顺序——第一个变为最后一个,最后一个变为第一个。另请参见 {{jsxref("Array.prototype.reverse()")}}。 -- {{jsxref("TypedArray.set", "BigInt64Array.prototype.set()")}} - - : 在 `TypedArray` 中存储多个值,从指定数组读取输入值。 -- {{jsxref("TypedArray.slice", "BigInt64Array.prototype.slice()")}} - - : 提取数组的一部分并返回一个新数组。另请参见 {{jsxref("Array.prototype.slice()")}}。 -- {{jsxref("TypedArray.some", "BigInt64Array.prototype.some()")}} - - : 如果此数组中至少有一个元素满足提供的测试函数,则返回 `true`。另请参见 {{jsxref("Array.prototype.some()")}}。 -- {{jsxref("TypedArray.sort", "BigInt64Array.prototype.sort()")}} - - : 对数组的元素进行就地排序并返回数组。另请参见 {{jsxref("Array.prototype.sort()")}}。 -- {{jsxref("TypedArray.subarray", "BigInt64Array.prototype.subarray()")}} - - : 从给定的起始和结束元素索引返回一个新的 `BigUint64Array`。 -- {{jsxref("TypedArray.values", "BigInt64Array.prototype.values()")}} - - : 返回一个新的 _array iterator_ 对象,该对象包含数组中每个索引的值。另请参见 {{jsxref("Array.prototype.values()")}}。 -- {{jsxref("TypedArray.toLocaleString", "BigInt64Array.prototype.toLocaleString()")}} - - : 返回表示数组及其元素的本地化字符串。另请参见 {{jsxref("Array.prototype.toLocaleString()")}}。 -- {{jsxref("TypedArray.toString", "BigInt64Array.prototype.toString()")}} - - : 返回表示数组及其元素的字符串。另请参见 {{jsxref("Array.prototype.toString()")}}。 -- {{jsxref("TypedArray.@@iterator", "BigInt64Array.prototype[@@iterator]()")}} - - : 返回一个新的 _array iterator_ 对象,该对象包含数组中每个索引的值。 +_从其父接口 {{jsxref("TypedArray")}} 继承实例方法。_ ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/dataview/index.md b/files/zh-cn/web/javascript/reference/global_objects/dataview/index.md index e9d0bccddcba10..10b318e1d79b45 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/dataview/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/dataview/index.md @@ -72,8 +72,8 @@ function getUint64BigInt(dataview, byteOffset, littleEndian) { ## 实例属性 -- `DataView.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"DataView"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 +- `DataView.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"DataView"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 - {{jsxref("DataView.prototype.buffer")}} - : {{jsxref("ArrayBuffer")}} 是引用该缓冲区的视图。在构造时会被固定,因此该属性**只读**。 - {{jsxref("DataView.prototype.byteLength")}} diff --git a/files/zh-cn/web/javascript/reference/global_objects/float32array/index.md b/files/zh-cn/web/javascript/reference/global_objects/float32array/index.md index 4ecdada367d02d..a508fbfbe82d6e 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/float32array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/float32array/index.md @@ -18,7 +18,7 @@ new Float32Array(buffer [, byteOffset [, length]]); 更多的语法信息和参数,参见 _[TypedArray](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax)。_ -## 属性 +## 静态属性 - {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}} - : 返回元素字节数。在 `Float32Array` 的情况下返回 4。 @@ -27,18 +27,16 @@ new Float32Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype", "Float32Array.prototype")}} - : _TypedArray_ 对象的原型。 -## 方法 +## 静态方法 - {{jsxref("TypedArray.from", "Float32Array.from()")}} - : 从一个类数组对象或可遍历对象创建一个新的 Float32Array。参见 {{jsxref("Array.from()")}}。 - {{jsxref("TypedArray.of", "Float32Array.of()")}} - : 用可变数量的参数创建一个新的 Float32Array。参见 {{jsxref("Array.of()")}}。 -## `Float32Array` 属性 +## 实例属性 -所有的`Float32Array 对象都`继承自 {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}。 - -### 特性 +_还从其父接口 {{jsxref("TypedArray")}} 继承实例属性。_ - `Float32Array.prototype.constructor` - : 返回创建这个实例原型的函数。这是 `Float32Array` 默认的构造函数。 @@ -51,62 +49,9 @@ new Float32Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}} - : 返回 `Float32Array` 中的元素个数。构造时已固定,所以是**只读**的。 -### 方法 - -- {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}} - - : 从数组复制元素。参见{{jsxref("Array.prototype.copyWithin()")}}。 -- {{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}} - - : `返回一个包含数组中每个元素键值对的数组遍历器对象`。参见{{jsxref("Array.prototype.entries()")}}。 -- {{jsxref("TypedArray.every", "Float32Array.prototype.every()")}} - - : 检测是否所有元素都能通过给定函数的测试。参见{{jsxref("Array.prototype.every()")}}。 -- {{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}} - - : 用一个静态值填充给定的起始位置。参见{{jsxref("Array.prototype.fill()")}}。 -- {{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}} - - : 创建一个新数组,数据为原数组中所有能让给入函数返回 true 的元素。参见{{jsxref("Array.prototype.filter()")}}。 -- {{jsxref("TypedArray.find", "Float32Array.prototype.find()")}} - - : 返回满足测试函数的值,如果没有找到,返回 undefined。参见{{jsxref("Array.prototype.find()")}}。 -- {{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}} - - : 返回满足测试函数的值的位置,如果没有找到,返回 -1。参见{{jsxref("Array.prototype.findIndex()")}}。 -- {{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}} - - : 以每个元素为参数各调用一次函数。参见{{jsxref("Array.prototype.forEach()")}}。 -- {{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}} {{experimental_inline}} - - : 判断是否包含某个元素,返回 `true` 或 `false`。参见{{jsxref("Array.prototype.includes()")}}。 -- {{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}} - - : 返回数组中等于给定值的元素的第一个(最小)位置,没有找到则返回 -1。参见{{jsxref("Array.prototype.indexOf()")}}。 -- {{jsxref("TypedArray.join", "Float32Array.prototype.join()")}} - - : 合并所有数组元素到一个字符串中。参见{{jsxref("Array.prototype.join()")}}。 -- {{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}} - - : 返回一个包含数组中所有索引的数组遍历器。参见{{jsxref("Array.prototype.keys()")}}。 -- {{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}} - - : 返回数组中等于给定值的元素的最后(最大)位置,没有找到则返回 -1。参见{{jsxref("Array.prototype.lastIndexOf()")}}。 -- {{jsxref("TypedArray.map", "Float32Array.prototype.map()")}} - - : 创建一个新的数组,数据由原数组每个元素依次传入给定函数后返回的值组成。参见{{jsxref("Array.prototype.map()")}}。 -- {{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} - - : {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}} 以前的一个非标准版本。 -- {{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}} - - : 传入一个函数作为累加器,从左到右遍历,最终得到一个值。参见{{jsxref("Array.prototype.reduce()")}}。 -- {{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}} - - : 传入一个函数作为累加器,从右到左遍历,最终得到一个值。参见{{jsxref("Array.prototype.reduceRight()")}}。 -- {{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}} - - : 反转数组元素的顺序 — 第一个变为最后一个,最后一个变为第一个。参见{{jsxref("Array.prototype.reverse()")}}。 -- {{jsxref("TypedArray.set", "Float32Array.prototype.set()")}} - - : 从给定的数组存入多个数值。 -- {{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}} - - : 提取数组的一部分并且返回一个新数组。参见{{jsxref("Array.prototype.slice()")}}。 -- {{jsxref("TypedArray.some", "Float32Array.prototype.some()")}} - - : 如果数组中至少有一个元素满足测试函数的要求则返回 true。参见{{jsxref("Array.prototype.some()")}}。 -- {{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}} - - : 对数组元素进行排序并返回数组。参见{{jsxref("Array.prototype.sort()")}}。 -- {{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}} - - : 从给定的起始位置返回一个新的`Float32Array` 。 -- {{jsxref("TypedArray.values", "Float32Array.prototype.values()")}} - - : 返回一个包含所有数组元素的数组遍历器对象。参见{{jsxref("Array.prototype.values()")}}。 -- {{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}} - - : 返回一个代表数组和其元素的本地化格式字符串。参见{{jsxref("Array.prototype.toLocaleString()")}}。 -- {{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}} - - : 返回一个代表数组和它的元素的字符串。参见{{jsxref("Array.prototype.toString()")}}。 -- {{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}} - - : 返回一个新的包含数组元素的数组迭代器对象。 +## 实例方法 + +_从其父接口 {{jsxref("TypedArray")}} 继承实例方法。_ ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/float64array/index.md b/files/zh-cn/web/javascript/reference/global_objects/float64array/index.md index 437de9782e756a..383f8c4afff741 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/float64array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/float64array/index.md @@ -7,7 +7,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Float64Array **`Float64Array`** 类型数组代表的是平台字节顺序为 64 位的浮点数型数组 (对应于 C 浮点数据类型) 。如果需要控制字节顺序,使用 {{jsxref("DataView")}} 替代。其内容初始化为`0`。一旦建立起来,你可以使用这个对象的方法对其元素进行操作,或者使用标准数组索引语法 (使用方括号)。 -## ?语法 +## 语法 ```plain new Float64Array(length); @@ -18,7 +18,7 @@ new Float64Array(buffer [, byteOffset [, length]]); 更多的语法信息和参数,参见 _[TypedArray](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax)_. -## 属性 +## 静态属性 - {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}} - : 返回元素字节数。在 `Float64Array` 的情况下返回 8。 @@ -27,18 +27,16 @@ new Float64Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype", "Float64Array.prototype")}} - : *TypedArray*对象的原型。 -## 方法 +## 静态方法 - {{jsxref("TypedArray.from", "Float64Array.from()")}} - : 从一个类数组对象或可遍历对象创建一个新的 Float64Array。参见 {{jsxref("Array.from()")}}。 - {{jsxref("TypedArray.of", "Float64Array.of()")}} - : 用可变数量的参数创建一个新的 Float64Array。参见 {{jsxref("Array.of()")}}。 -## `Float64Array` 属性 +## 实例属性 -所有的 `Float64Array` 对象都继承自 {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}。 - -### 特性 +_还从其父接口 {{jsxref("TypedArray")}} 继承实例属性。_ - `Float64Array.prototype.constructor` - : 返回创建这个实例原型的函数。这是 `Float64Array` 默认的构造函数。 @@ -51,62 +49,9 @@ new Float64Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}} - : 返回 `Float64Array` 中的元素个数。构造时已固定,所以是**只读**的。 -### 方法 - -- {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}} - - : 从数组复制元素。参见{{jsxref("Array.prototype.copyWithin()")}}。 -- {{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}} - - : `返回一个包含数组中每个元素键值对的数组遍历器对象`。参见{{jsxref("Array.prototype.entries()")}}。 -- {{jsxref("TypedArray.every", "Float64Array.prototype.every()")}} - - : 检测是否所有元素都能通过给定函数的测试。参见{{jsxref("Array.prototype.every()")}}。 -- {{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}} - - : 用一个静态值填充给定的起始位置。参见{{jsxref("Array.prototype.fill()")}}。 -- {{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}} - - : 创建一个新数组,数据为原数组中所有能让给入函数返回 true 的元素。参见{{jsxref("Array.prototype.filter()")}}。 -- {{jsxref("TypedArray.find", "Float64Array.prototype.find()")}} - - : 返回满足测试函数的值,如果没有找到,返回 undefined。参见{{jsxref("Array.prototype.find()")}}。 -- {{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}} - - : 返回满足测试函数的值的位置,如果没有找到,返回 -1。参见{{jsxref("Array.prototype.findIndex()")}}。 -- {{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}} - - : 以每个元素为参数各调用一次函数。参见{{jsxref("Array.prototype.forEach()")}}。 -- {{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}} {{experimental_inline}} - - : 判断是否包含某个元素,返回 `true` 或 `false`。参见{{jsxref("Array.prototype.includes()")}}。 -- {{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}} - - : 返回数组中等于给定值的元素的第一个(最小)位置,没有找到则返回 -1。参见{{jsxref("Array.prototype.indexOf()")}}。 -- {{jsxref("TypedArray.join", "Float64Array.prototype.join()")}} - - : 合并所有数组元素到一个字符串中。参见{{jsxref("Array.prototype.join()")}}。 -- {{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}} - - : 返回一个包含数组中所有索引的数组遍历器。参见{{jsxref("Array.prototype.keys()")}}。 -- {{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}} - - : 返回数组中等于给定值的元素的最后(最大)位置,没有找到则返回 -1。参见{{jsxref("Array.prototype.lastIndexOf()")}}。 -- {{jsxref("TypedArray.map", "Float64Array.prototype.map()")}} - - : 创建一个新的数组,数据由原数组每个元素依次传入给定函数后返回的值组成。参见{{jsxref("Array.prototype.map()")}}。 -- {{jsxref("TypedArray.move", "Float64Array.prototype.move()")}} {{non-standard_inline}} - - : {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}} 以前的一个非标准版本。 -- {{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}} - - : 传入一个函数作为累加器,从左到右遍历,最终得到一个值。参见{{jsxref("Array.prototype.reduce()")}}。 -- {{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}} - - : 传入一个函数作为累加器,从右到左遍历,最终得到一个值。参见{{jsxref("Array.prototype.reduceRight()")}}。 -- {{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}} - - : 反转数组元素的顺序 — 第一个变为最后一个,最后一个变为第一个。参见{{jsxref("Array.prototype.reverse()")}}。 -- {{jsxref("TypedArray.set", "Float64Array.prototype.set()")}} - - : 从给定的数组存入多个数值。 -- {{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}} - - : 提取数组的一部分并且返回一个新数组。参见{{jsxref("Array.prototype.slice()")}}。 -- {{jsxref("TypedArray.some", "Float64Array.prototype.some()")}} - - : 如果数组中至少有一个元素满足测试函数的要求则返回 true。参见{{jsxref("Array.prototype.some()")}}。 -- {{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}} - - : 对数组元素进行排序并返回数组。参见{{jsxref("Array.prototype.sort()")}}。 -- {{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}} - - : 从给定的起始位置返回一个新的`Float64Array` 。 -- {{jsxref("TypedArray.values", "Float64Array.prototype.values()")}} - - : 返回一个包含所有数组元素的数组遍历器对象。参见{{jsxref("Array.prototype.values()")}}。 -- {{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}} - - : 返回一个代表数组和其元素的本地化格式字符串。参见{{jsxref("Array.prototype.toLocaleString()")}}。 -- {{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}} - - : 返回一个代表数组和它的元素的字符串。参见{{jsxref("Array.prototype.toString()")}}。 -- {{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}} - - : 返回一个新的包含数组元素的数组迭代器对象。 +## 实例方法 + +_从其父接口 {{jsxref("TypedArray")}} 继承实例方法。_ ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/function/index.md b/files/zh-cn/web/javascript/reference/global_objects/function/index.md index a0a502d5a97444..5b9f839aac42ce 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/function/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/function/index.md @@ -44,7 +44,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Function - : 使用给定的 `this` 值和可选参数调用一个函数。 - {{jsxref("Function.prototype.toString()")}} - : 返回表示函数源代码的字符串。重写了 {{jsxref("Object.prototype.toString")}} 方法。 -- [`Function.prototype[@@hasInstance]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/@@hasInstance) +- [`Function.prototype[Symbol.hasInstance]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/Symbol.hasInstance) - : 指定确定构造函数是否将对象识别为其实例的默认过程。由 [`instanceof`](/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof) 运算符调用。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/generator/index.md b/files/zh-cn/web/javascript/reference/global_objects/generator/index.md index a6e4be982fda2a..6ec7fe16cd8521 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/generator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/generator/index.md @@ -43,8 +43,8 @@ console.log(gen.next().value); // 3 > **备注:** `Generator` 对象不会存储创建它们的生成器函数的引用。 -- `Generator.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Generator"`。该属性被 {{jsxref("Object.prototype.toString()")}} 使用。 +- `Generator.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Generator"`。该属性被 {{jsxref("Object.prototype.toString()")}} 使用。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/generatorfunction/index.md b/files/zh-cn/web/javascript/reference/global_objects/generatorfunction/index.md index 6ea1314bde51d6..24b7320c362353 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/generatorfunction/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/generatorfunction/index.md @@ -34,8 +34,8 @@ _也从其父类 {{jsxref("Function")}} 继承实例属性_。 - : 创建实例对象的构造函数。对于 `GeneratorFunction` 实例,其初始值是 {{jsxref("GeneratorFunction/GeneratorFunction", "GeneratorFunction")}} 构造函数。 - `GeneratorFunction.prototype.prototype` - : 所有生成器函数共享同一个 [`prototype`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype) 属性,即 [`Generator.prototype`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Generator)。每个生成器函数实例也有自己的 `prototype` 属性。当生成器函数被调用时,返回的生成器对象从生成器函数继承 `prototype` 属性,而该属性又继承自 `GeneratorFunction.prototype.prototype`。 -- `GeneratorFunction.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"GeneratorFunction"`。该属性被 {{jsxref("Object.prototype.toString()")}} 使用。 +- `GeneratorFunction.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"GeneratorFunction"`。该属性被 {{jsxref("Object.prototype.toString()")}} 使用。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/int32array/index.md b/files/zh-cn/web/javascript/reference/global_objects/int32array/index.md index 0c11ad28a6e869..12ffbf374a72b1 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/int32array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/int32array/index.md @@ -18,7 +18,7 @@ new Int32Array(buffer [, byteOffset [, length]]); 更多关于构造函数语法和参数的详细信息,请参阅*[TypedArray](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax)。* -## 属性 +## 静态属性 - {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}} - : Returns a number value of the element size. `4` in the case of an `Int32Array`. @@ -27,18 +27,16 @@ new Int32Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype", "Int32Array.prototype")}} - : Prototype for the _TypedArray_ objects. -## 方法 +## 静态方法 - {{jsxref("TypedArray.from", "Int32Array.from()")}} - : 从类似数组或者可迭代对象中创建一个新的 `Int32Array`。另见 {{jsxref("Array.from()")}}. - {{jsxref("TypedArray.of", "Int32Array.of()")}} - : 创建一个新的具有可变数量参数的 `Int32Array`。另见 {{jsxref("Array.of()")}}。 -## `Int32Array` 属性 +## 实例属性 -所有的`Int32Array`对象都继承自 {jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}。 - -### 属性 +_还从其父接口 {{jsxref("TypedArray")}} 继承实例属性。_ - `Int32Array.prototype.constructor` - : 返回创建实例原型的函数。默认情况下,它是 `Int32Array` 的构造函数。 @@ -51,62 +49,9 @@ new Int32Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}} {{readonlyInline}} - : 返回 `Int32ArrayInt32Array` 包含的元素个数。在构造时被固定,因此只读。 -### 方法 - -- {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}} - - : Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}. -- {{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}} - - : Returns a new `Array Iterator` object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}. -- {{jsxref("TypedArray.every", "Int32Array.prototype.every()")}} - - : Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}. -- {{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}} - - : Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}. -- {{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}} - - : Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}. -- {{jsxref("TypedArray.find", "Int32Array.prototype.find()")}} - - : Returns the found value in the array, if an element in the array satisfies the provided testing function or `undefined` if not found. See also {{jsxref("Array.prototype.find()")}}. -- {{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}} - - : Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}. -- {{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}} - - : Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}. -- {{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}} {{experimental_inline}} - - : Determines whether a typed array includes a certain element, returning `true` or `false` as appropriate. See also {{jsxref("Array.prototype.includes()")}}. -- {{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}} - - : Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}. -- {{jsxref("TypedArray.join", "Int32Array.prototype.join()")}} - - : Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}. -- {{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}} - - : Returns a new `Array Iterator` that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}. -- {{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}} - - : Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}. -- {{jsxref("TypedArray.map", "Int32Array.prototype.map()")}} - - : Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}. -- {{jsxref("TypedArray.move", "Int32Array.prototype.move()")}} {{non-standard_inline}} - - : Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}. -- {{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}} - - : Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}. -- {{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}} - - : Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}. -- {{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}} - - : Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}. -- {{jsxref("TypedArray.set", "Int32Array.prototype.set()")}} - - : 在类型化数组中存储多个值,从指定数组中读取输入值。 -- {{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}} - - : 提取数组中的一部分,并返回一个新的数组。更多请见{{jsxref("Array.prototype.slice()")}}。 -- {{jsxref("TypedArray.some", "Int32Array.prototype.some()")}} - - : 如果数组中至少有一个元素满足所提供的测试函数,则返回 true。更多请见{{jsxref("Array.prototype.some()")}}。 -- {{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}} - - : Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}. -- {{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}} - - : Returns a new `Int32Array` from the given start and end element index. -- {{jsxref("TypedArray.values", "Int32Array.prototype.values()")}} - - : Returns a new `Array Iterator` object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}. -- {{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}} - - : Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}. -- {{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}} - - : Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}. -- {{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}} - - : Returns a new `Array Iterator` object that contains the values for each index in the array. +## 实例方法 + +_从其父接口 {{jsxref("TypedArray")}} 继承实例方法。_ ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/int8array/index.md b/files/zh-cn/web/javascript/reference/global_objects/int8array/index.md index be22923a07fb4a..faa65d41dab609 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/int8array/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/int8array/index.md @@ -18,7 +18,7 @@ new Int8Array(buffer [, byteOffset [, length]]); 有关构造函数语法和参数的更多信息,请访问 _[TypedArray](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax)_. -## 属性 +## 静态属性 - {{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}} - : 返回数组中每个元素的大小。在 `Int8Array` 中这个值为 1。 @@ -27,18 +27,16 @@ new Int8Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype", "Int8Array.prototype")}} - : _TypedArray_ 对象的构造原型。 -## 方法 +## 静态方法 - {{jsxref("TypedArray.from", "Int8Array.from()")}} - : 从类数组对象或迭代器生成 int8Array 数组对象。参照 {{jsxref("Array.from()")}} - {{jsxref("TypedArray.of", "Int8Array.of()")}} - : 以多个参数构造 Int8Array 对象,参照 {{jsxref("Array.of()")}} -## `Int8Array` 原型方法 +## 实例属性 -所有 **Int8Array** 对象都继承自 {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}. - -### 属性 +_还从其父接口 {{jsxref("TypedArray")}} 继承实例属性。_ - `Int8Array.prototype.constructor` - : 这个方法会返回对象的构造原型。默认为`Int8Array` 构造函数。 @@ -51,62 +49,9 @@ new Int8Array(buffer [, byteOffset [, length]]); - {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}} {{readonlyInline}} - : Returns the number of elements hold in the `Int8Array`. Fixed at construction time and thus **read only.** -### 方法 - -- {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}} - - : Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}. -- {{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}} - - : Returns a new `Array Iterator` object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}. -- {{jsxref("TypedArray.every", "Int8Array.prototype.every()")}} - - : Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}. -- {{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}} - - : Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}. -- {{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}} - - : Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}. -- {{jsxref("TypedArray.find", "Int8Array.prototype.find()")}} - - : Returns the found value in the array, if an element in the array satisfies the provided testing function or `undefined` if not found. See also {{jsxref("Array.prototype.find()")}}. -- {{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}} - - : Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}. -- {{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}} - - : Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}. -- {{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}} {{experimental_inline}} - - : Determines whether a typed array includes a certain element, returning `true` or `false` as appropriate. See also {{jsxref("Array.prototype.includes()")}}. -- {{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}} - - : Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}. -- {{jsxref("TypedArray.join", "Int8Array.prototype.join()")}} - - : Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}. -- {{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}} - - : Returns a new `Array Iterator` that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}. -- {{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}} - - : Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}. -- {{jsxref("TypedArray.map", "Int8Array.prototype.map()")}} - - : 返回一个由回调函数的返回值组成的新数组。参见 {{jsxref("Array.prototype.map()")}}。 -- {{jsxref("TypedArray.move", "Int8Array.prototype.move()")}} {{non-standard_inline}} - - : {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}} 早期的不标准定义。 -- {{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}} - - : 从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。参照 {{jsxref("Array.prototype.reduce()")}} -- {{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}} - - : 从右到左为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,并返回最后一次回调函数的返回值。参照 {{jsxref("Array.prototype.reduceRight()")}} -- {{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}} - - : 颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个。参照 {{jsxref("Array.prototype.reverse()")}} -- {{jsxref("TypedArray.set", "Int8Array.prototype.set()")}} - - : Stores multiple values in the typed array, reading input values from a specified array. -- {{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}} - - : 抽取当前数组中的一段元素组合成一个新数组。参照 {{jsxref("Array.prototype.slice()")}}。 -- {{jsxref("TypedArray.some", "Int8Array.prototype.some()")}} - - : 如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。参照 {{jsxref("Array.prototype.some()")}} -- {{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}} - - : 对数组元素进行排序,并返回当前数组。参照{{jsxref("Array.prototype.sort()")}}. -- {{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}} - - : 返回一个以给定的初始结束位置裁剪的 Int8Array 数组。 -- {{jsxref("TypedArray.values", "Int8Array.prototype.values()")}} - - : 返回一个数组迭代器对象,该迭代器会包含所有数组元素的值。参照 {{jsxref("Array.prototype.values()")}} -- {{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}} - - : 返回一个由所有数组元素组合而成的本地化后的字符串。See also {{jsxref("Array.prototype.toLocaleString()")}}. -- {{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}} - - : 返回一个由所有数组元素组合而成的字符串。参照 {{jsxref("Array.prototype.toString()")}} -- {{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}} - - : 此方法返回一个带有数组内所有元素的迭代器对象,同 `Int8Array.prototype.values` +## 实例方法 + +_从其父接口 {{jsxref("TypedArray")}} 继承实例方法。_ ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/iterator/flatmap/index.md b/files/zh-cn/web/javascript/reference/global_objects/iterator/flatmap/index.md index db553f91436531..a51ee30968af59 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/iterator/flatmap/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/iterator/flatmap/index.md @@ -35,7 +35,7 @@ flatMap(callbackFn) ## 描述 -`flatMap` 接受 `callbackFn` 两种类型的返回值:迭代器或可迭代对象。它们与 {{jsxref("Iterator.from()")}} 处理方式相同:如果返回值是可迭代的,则调用 `@@iterator` 方法,并使用其返回值;否则,将返回值视为一个迭代器,并调用其 `next()` 方法。 +`flatMap` 接受 `callbackFn` 两种类型的返回值:迭代器或可迭代对象。它们与 {{jsxref("Iterator.from()")}} 处理方式相同:如果返回值是可迭代的,则调用 `[Symbol.iterator]()` 方法,并使用其返回值;否则,将返回值视为一个迭代器,并调用其 `next()` 方法。 ```js [1, 2, 3] @@ -63,14 +63,14 @@ flatMap(callbackFn) return { ...it, [Symbol.iterator]() { - console.log("@@iterator 被调用了"); + console.log("[Symbol.iterator]() 被调用了"); return it; }, }; } }) .toArray(); -// 输出“@@iterator 被调用了” +// 输出“[Symbol.iterator]() 被调用了” // 返回 [1, 2, 3] ``` diff --git a/files/zh-cn/web/javascript/reference/global_objects/iterator/from/index.md b/files/zh-cn/web/javascript/reference/global_objects/iterator/from/index.md index d26a21997d676c..c685561976c7e0 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/iterator/from/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/iterator/from/index.md @@ -22,7 +22,7 @@ from(object) ### 返回值 -如果 `object` 是一个可迭代对象,则会调用其 `@@iterator` 以获取迭代器。否则,`object` 将被视为一个迭代器。如果该迭代器的 `{{jsxref("Operators/instanceof", "instanceof")}} {{jsxref("Iterator")}}` 结果为真(这意味着它在原型链中有 `Iterator.prototype`),则直接返回它。否则,创建一个包装了原始迭代器的新 {{jsxref("Iterator")}} 对象。 +如果 `object` 是一个可迭代对象,则会调用其 `[Symbol.iterator]()` 以获取迭代器。否则,`object` 将被视为一个迭代器。如果该迭代器的 `{{jsxref("Operators/instanceof", "instanceof")}} {{jsxref("Iterator")}}` 结果为真(这意味着它在原型链中有 `Iterator.prototype`),则直接返回它。否则,创建一个包装了原始迭代器的新 {{jsxref("Iterator")}} 对象。 ## 描述 @@ -37,7 +37,7 @@ from(object) ### 将可迭代对象转换为恰当的迭代器 -因为 `obj` 已经是一个可迭代对象,并且其 `@@iterator` 方法返回了一个恰当的迭代器,所以 `Iterator.from(obj)` 返回的迭代器与 `obj` 相同。 +因为 `obj` 已经是一个可迭代对象,并且其 `[Symbol.iterator]()` 方法返回了一个恰当的迭代器,所以 `Iterator.from(obj)` 返回的迭代器与 `obj` 相同。 ```js const iterator = (function* () { @@ -56,7 +56,7 @@ const iterator2 = Iterator.from(obj); console.log(iterator2 === iterator); // true ``` -因为 `obj2` 是一个可迭代对象,其 `@@iterator` 方法返回了一个非恰当的迭代器,所以 `Iterator.from(obj2)` 返回一个包装了原始迭代器的新迭代器。 +因为 `obj2` 是一个可迭代对象,其 `[Symbol.iterator]()` 方法返回了一个非恰当的迭代器,所以 `Iterator.from(obj2)` 返回一个包装了原始迭代器的新迭代器。 ```js const iterator = { diff --git a/files/zh-cn/web/javascript/reference/global_objects/iterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/iterator/index.md index c111f17a438702..35a1225422d3a6 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/iterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/iterator/index.md @@ -7,28 +7,28 @@ l10n: {{JSRef}} -**`Iterator`** 对象是一个符合[迭代器协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#迭代器协议)的对象,其提供了 `next()` 方法用以返回迭代器结果对象。所有内置迭代器都继承自 `Iterator` 类。`Iterator` 类提供了 [`@@iterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Iterator/@@iterator) 方法,该方法返回迭代器对象本身,使迭代器也[可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#可迭代协议)。它还提供了一些使用迭代器的辅助方法。 +**`Iterator`** 对象是一个符合[迭代器协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#迭代器协议)的对象,其提供了 `next()` 方法用以返回迭代器结果对象。所有内置迭代器都继承自 `Iterator` 类。`Iterator` 类提供了 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Iterator/Symbol.iterator) 方法,该方法返回迭代器对象本身,使迭代器也[可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#可迭代协议)。它还提供了一些使用迭代器的辅助方法。 ## 描述 以下都是内置的 JavaScript 迭代器: -- _数组迭代器_,返回自 {{jsxref("Array.prototype.values()")}}、{{jsxref("Array.prototype.keys()")}}、{{jsxref("Array.prototype.entries()")}}、[`Array.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@iterator)、{{jsxref("TypedArray.prototype.values()")}}、{{jsxref("TypedArray.prototype.keys()")}}、{{jsxref("TypedArray.prototype.entries()")}}、[`TypedArray.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/@@iterator) 和 [`arguments[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/@@iterator)。 -- _字符串迭代器_,返回自 [`String.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator)。 -- _Map 迭代器_,返回自 {{jsxref("Map.prototype.values()")}}、{{jsxref("Map.prototype.keys()")}}、{{jsxref("Map.prototype.entries()")}} 和 [`Map.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator)。 -- _Set 迭代器_,返回自 {{jsxref("Set.prototype.values()")}}、{{jsxref("Set.prototype.keys()")}}、{{jsxref("Set.prototype.entries()")}} 和 [`Set.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator)。 -- _正则表达式字符串迭代器_,返回自 [`RegExp.prototype[@@matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll) 和 {{jsxref("String.prototype.matchAll()")}}。 +- _数组迭代器_,返回自 {{jsxref("Array.prototype.values()")}}、{{jsxref("Array.prototype.keys()")}}、{{jsxref("Array.prototype.entries()")}}、[`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator)、{{jsxref("TypedArray.prototype.values()")}}、{{jsxref("TypedArray.prototype.keys()")}}、{{jsxref("TypedArray.prototype.entries()")}}、[`TypedArray.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/Symbol.iterator) 和 [`arguments[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/Symbol.iterator)。 +- _字符串迭代器_,返回自 [`String.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator)。 +- _Map 迭代器_,返回自 {{jsxref("Map.prototype.values()")}}、{{jsxref("Map.prototype.keys()")}}、{{jsxref("Map.prototype.entries()")}} 和 [`Map.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator)。 +- _Set 迭代器_,返回自 {{jsxref("Set.prototype.values()")}}、{{jsxref("Set.prototype.keys()")}}、{{jsxref("Set.prototype.entries()")}} 和 [`Set.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.iterator)。 +- _正则表达式字符串迭代器_,返回自 [`RegExp.prototype[Symbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) 和 {{jsxref("String.prototype.matchAll()")}}。 - {{jsxref("Generator")}} 对象,返回自[生成器函数](/zh-CN/docs/Web/JavaScript/Reference/Statements/function*)。 -- _Segment 迭代器_,返回自 [`Intl.Segmenter.prototype.segment()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment) 返回的 [`Segments`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments) 对象的 [`[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments/@@iterator) 方法。 +- _Segment 迭代器_,返回自 [`Intl.Segmenter.prototype.segment()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment) 返回的 [`Segments`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments) 对象的 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments/Symbol.iterator) 方法。 - _迭代器辅助方法_,返回自迭代器辅助方法例如 {{jsxref("Iterator.prototype.filter()")}} 和 {{jsxref("Iterator.prototype.map()")}}。 -每个迭代器都有一个不同的原型对象,它定义了特定迭代器使用的 `next()` 方法。例如,所有字符串迭代器对象都继承自隐藏对象 `StringIteratorPrototype`,该对象具有按码位迭代当前字符串的 `next()` 方法。`StringIteratorPrototype` 还有一个 [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性,其初始值为字符串 `"String Iterator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。类似地,其他迭代器原型也有自己的 `@@toStringTag` 值,这些值与上面给出的名称相同。 +每个迭代器都有一个不同的原型对象,它定义了特定迭代器使用的 `next()` 方法。例如,所有字符串迭代器对象都继承自隐藏对象 `StringIteratorPrototype`,该对象具有按码位迭代当前字符串的 `next()` 方法。`StringIteratorPrototype` 还有一个 [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性,其初始值为字符串 `"String Iterator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。类似地,其他迭代器原型也有自己的 `[Symbol.toStringTag]` 值,这些值与上面给出的名称相同。 -所有这些原型对象都继承自 `Iterator.prototype`,它提供了一个返回迭代器对象本身的 [`@@iterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) 方法,这使迭代器也变得[可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#可迭代协议)。 +所有这些原型对象都继承自 `Iterator.prototype`,它提供了一个返回迭代器对象本身的 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) 方法,这使迭代器也变得[可迭代](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols#可迭代协议)。 ### 迭代器辅助方法 -> **备注:** 这些方法是*迭代器*辅助方法,而不是*可迭代对象*辅助方法,因为可迭代对象的唯一要求就是具有 `@@iterator` 方法,因此它们没有共享的原型来安装这些方法。 +> **备注:** 这些方法是*迭代器*辅助方法,而不是*可迭代对象*辅助方法,因为可迭代对象的唯一要求就是具有 `[Symbol.iterator]()` 方法,因此它们没有共享的原型来安装这些方法。 `Iterator` 类本身提供了一些使用迭代器的辅助方法。例如,你可能想做以下事情: @@ -132,11 +132,11 @@ const myIterator = Iterator.from({ - {{jsxref("Object/constructor", "Iterator.prototype.constructor")}} - : 创建实例对象的构造函数。对于 `Iterator` 实例,其初始值是 {{jsxref("Iterator/Iterator", "Iterator")}} 构造函数。 -- `Iterator.prototype[@@toStringTag]` +- `Iterator.prototype[Symbol.toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Iterator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Iterator"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 - > **备注:** 与大多数内置类的 `@@toStringTag` 不同,出于 web 兼容性原因,`Iterator.prototype[@@toStringTag]` 是可写的。 + > **备注:** 与大多数内置类的 `[Symbol.toStringTag]` 不同,出于 web 兼容性原因,`Iterator.prototype[Symbol.toStringTag]` 是可写的。 ## 实例方法 @@ -162,7 +162,7 @@ const myIterator = Iterator.from({ - : 返回一个新的迭代器帮助方法,它生成当前迭代器中给定数量的元素,然后结束。 - {{jsxref("Iterator.prototype.toArray()")}} {{experimental_inline}} - : 创建一个用迭代器产生的元素填充的新的 {{jsxref("Array")}} 实例。 -- [`Iterator.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Iterator/@@iterator) +- [`Iterator.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Iterator/Symbol.iterator) - : 返回迭代器对象本身。这使迭代器对象也是可迭代的。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/iterator/iterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/iterator/iterator/index.md index f4b620a05ee35d..34fab7e09ae204 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/iterator/iterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/iterator/iterator/index.md @@ -40,7 +40,7 @@ new Iterator() ### 继承 Iterator -以下示例定义了一个允许迭代的自定义数据结构——`Range`。使一个对象可迭代最简单的方法是提供一个生成器函数的形式的 [`[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) 方法: +以下示例定义了一个允许迭代的自定义数据结构——`Range`。使一个对象可迭代最简单的方法是提供一个生成器函数的形式的 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) 方法: ```js class Range { @@ -72,7 +72,7 @@ for (const num of range) { - 返回的迭代器继承自 {{jsxref("Generator")}},这意味着对 `Generator.prototype` 的修改将会影响返回的迭代器,这是一种抽象泄漏。 - 返回的迭代器没有继承自自定义原型,这使得为迭代器添加额外的方法变得更加困难。 -我们可以通过继承 `Iterator` 来模仿内置迭代器,例如 [map 迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator)的实现。这使得我们可以定义额外的属性,例如 [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag),同时使得迭代器辅助方法对返回的迭代器可用。 +我们可以通过继承 `Iterator` 来模仿内置迭代器,例如 [map 迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator)的实现。这使得我们可以定义额外的属性,例如 [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag),同时使得迭代器辅助方法对返回的迭代器可用。 ```js class Range { diff --git a/files/zh-cn/web/javascript/reference/global_objects/json/index.md b/files/zh-cn/web/javascript/reference/global_objects/json/index.md index 612ae720183433..46b77aa1916300 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/json/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/json/index.md @@ -89,8 +89,8 @@ DIGIT = %x30-39 ; 0-9 ## 静态属性 -- `JSON[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"JSON"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `JSON[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"JSON"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 ## 静态方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/map/index.md b/files/zh-cn/web/javascript/reference/global_objects/map/index.md index dacdb17bffec29..d248675008b01a 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/map/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/map/index.md @@ -194,7 +194,7 @@ interface RTCStatsReport { 类 `Map` 对象可以是只读的,也可以是可写的(参见上面 IDL 中的 `readonly` 关键字)。 -- 只读的类 `Map` 对象具有 [`size`](#map.prototype.size) 属性,以及这些方法:[`entries()`](#map.prototype.entries)、[`forEach()`](#map.prototype.foreach)、[`keys()`](#map.prototype.keys)、[`values()`](#map.prototype.values) 和 [`@@iterator`](#map.prototypeiterator) 。 +- 只读的类 `Map` 对象具有 [`size`](#map.prototype.size) 属性,以及这些方法:[`entries()`](#map.prototype.entries)、[`forEach()`](#map.prototype.foreach)、[`keys()`](#map.prototype.keys)、[`values()`](#map.prototype.values) 和 [`[Symbol.iterator]()`](#map.prototypesymbol.iterator) 。 - 可写的类 `Map` 对象还额外具有这些方法:[`clear()`](#map.prototype.clear)、[`delete()`](#map.prototype.delete) 和 [`set()`](#map.prototype.set)。 除了对键和值类型的限制外,其方法和属性的行为与 `Map` 中的对应实体相同。 @@ -215,7 +215,7 @@ interface RTCStatsReport { ## 静态属性 -- {{jsxref("Map/@@species", "Map[@@species]")}} +- [`Map[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.species) - : 用于创建派生对象的构造函数。 ## 静态方法 @@ -231,8 +231,8 @@ interface RTCStatsReport { - : 创建实例对象的构造函数。对于 `Map` 实例,初始值为 {{jsxref("Map/Map", "Map")}} 构造函数。 - {{jsxref("Map.prototype.size")}} - : 返回 `Map` 对象中的键值对数量。 -- `Map.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Map"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 +- `Map.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"Map"`。该属性在 {{jsxref("Object.prototype.toString()")}} 中使用。 ## 实例方法 @@ -254,7 +254,7 @@ interface RTCStatsReport { - : 在 `Map` 对象中设置与指定的键 `key` 关联的值,并返回 `Map` 对象。 - {{jsxref("Map.prototype.values()")}} - : 返回一个新的迭代对象,其中包含 `Map` 对象中所有的值,并以插入 `Map` 对象的顺序排列。 -- [`Map.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator) +- [`Map.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator) - : 返回一个新的迭代器对象,其包含 `Map` 对象中所有元素 `[key, value]` 二元数组,以插入顺序排列。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/number/index.md b/files/zh-cn/web/javascript/reference/global_objects/number/index.md index 2fc61ce4e1768e..bd3093f5d55f14 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/number/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/number/index.md @@ -71,7 +71,7 @@ JavaScript 的 `Number` 类型是一个[双精度 64 位二进制格式 IEEE 754 - 不允许使用[数字分隔符](/zh-CN/docs/Web/JavaScript/Reference/Lexical_grammar#数值分隔符)。 - [BigInt](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt) 抛出 {{jsxref("TypeError")}},以防止意外的强制隐式转换导致精度损失。 - [Symbol](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol) 抛出 {{jsxref("TypeError")}}。 -- 对象首先通过按顺序调用它们的 [`[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(使用 `"number"` 提示)、`valueOf()` 和 `toString()` 方法将其[转换为原始值](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)。然后将得到的原始值转换为数字。 +- 对象首先通过按顺序调用它们的 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(使用 `"number"` 提示)、`valueOf()` 和 `toString()` 方法将其[转换为原始值](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)。然后将得到的原始值转换为数字。 有两种方法可以在 JavaScript 中实现几乎相同的效果。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/number/tostring/index.md b/files/zh-cn/web/javascript/reference/global_objects/number/tostring/index.md index 2762c583e7ca8c..d4553b20b4c4ad 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/number/tostring/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/number/tostring/index.md @@ -49,7 +49,7 @@ console.log((10 ** 21.5).toString(8)); // "526665530627250154000000" `toString` 方法要求 `this` 值是 `Number` 原始值或包装对象。对于其他 `this` 值,不会尝试将它们转换为数字值,而是抛出 {{jsxref("TypeError")}}。 -因为 `Number` 没有 [`[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,当一个 `Number` *对象*在一个期望字符串的上下文中使用时(比如在[模板字符串](/zh-CN/docs/Web/JavaScript/Reference/Template_literals)中),JavaScript 会自动调用 `toString()` 方法。然而,`Number` *原始值*不会使用 `toString()` 方法来进行[字符串强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)——相反,它们会直接使用与 `toString()` 初始实现的相同算法进行转换。 +因为 `Number` 没有 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,当一个 `Number` *对象*在一个期望字符串的上下文中使用时(比如在[模板字符串](/zh-CN/docs/Web/JavaScript/Reference/Template_literals)中),JavaScript 会自动调用 `toString()` 方法。然而,`Number` *原始值*不会使用 `toString()` 方法来进行[字符串强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)——相反,它们会直接使用与 `toString()` 初始实现的相同算法进行转换。 ```js Number.prototype.toString = () => "重写了"; diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/constructor/index.md b/files/zh-cn/web/javascript/reference/global_objects/object/constructor/index.md index 2773f65f101622..1314ab434603e8 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/object/constructor/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/object/constructor/index.md @@ -132,7 +132,7 @@ Child.prototype = Object.create(Parent.prototype); 由于重新赋值了 `Child.prototype`,`Child` 实例的 `constructor` 将是 `Parent`。 -通常情况下,这不是什么大问题——JavaScript 几乎从不读取对象的 `constructor` 属性。唯一的例外是在使用 [`@@species`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species) 创建类的新实例时,但这种情况很少见,并且你应该使用 [`extends`](/zh-CN/docs/Web/JavaScript/Reference/Classes/extends) 语法来子类化内置对象。 +通常情况下,这不是什么大问题——JavaScript 几乎从不读取对象的 `constructor` 属性。唯一的例外是在使用 [`[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species) 创建类的新实例时,但这种情况很少见,并且你应该使用 [`extends`](/zh-CN/docs/Web/JavaScript/Reference/Classes/extends) 语法来子类化内置对象。 然而,在某些调用使用 `constructor` 从实例中访问原始类时,确保 `Child.prototype.constructor` 总是指向 `Child` 本身非常重要。考虑这种情况:对象具有 `create()` 方法来创建自身。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/fromentries/index.md b/files/zh-cn/web/javascript/reference/global_objects/object/fromentries/index.md index 4539647dadfc85..c3965ca430becc 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/object/fromentries/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/object/fromentries/index.md @@ -34,7 +34,7 @@ Object.fromEntries(iterable) ## 描述 -`Object.fromEntries()` 方法接收一个键值对列表,并返回一个新对象,该对象的属性由这些条目给定。`iterable` 参数应该是实现了 `@@iterator` 方法的可迭代对象。该方法返回一个可迭代对象,产生包含两个元素的类数组对象。第一个元素是将用作属性键的值,第二个元素是要与该属性键关联的值。 +`Object.fromEntries()` 方法接收一个键值对列表,并返回一个新对象,该对象的属性由这些条目给定。`iterable` 参数应该是实现了 `[Symbol.iterator]()` 方法的可迭代对象。该方法返回一个可迭代对象,产生包含两个元素的类数组对象。第一个元素是将用作属性键的值,第二个元素是要与该属性键关联的值。 `Object.fromEntries()` 是 {{jsxref("Object.entries()")}} 的逆操作,只是 `Object.entries()` 只返回字符串键属性,而 `Object.fromEntries()` 还可以创建符号键属性。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/index.md b/files/zh-cn/web/javascript/reference/global_objects/object/index.md index 7ae1e317da02fb..54eba59dee8513 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/object/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/object/index.md @@ -140,7 +140,7 @@ JavaScript 还具有内置的 API,用于生成 `null` 原型对象,特别是 - {{jsxref("Object.groupBy()")}} 方法的返回值 - {{jsxref("RegExp.prototype.exec()")}} 方法返回结果中的 `groups` 和 `indices.groups` 属性 -- [`Array.prototype[@@unscopables]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/@@unscopables) 属性(所有 `@@unscopables` 对象原型都应该为 `null`) +- [`Array.prototype[Symbol.unscopables]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.unscopables) 属性(所有 `[Symbol.unscopables]` 对象原型都应该为 `null`) - [`import.meta`](/zh-CN/docs/Web/JavaScript/Reference/Operators/import.meta) 对象 - 通过 [`import * as ns from "module"`](/zh-CN/docs/Web/JavaScript/Reference/Statements/import#导入命名空间) 或 [`import()`](/zh-CN/docs/Web/JavaScript/Reference/Operators/import) 获取的模块命名空间对象 diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/tostring/index.md b/files/zh-cn/web/javascript/reference/global_objects/object/tostring/index.md index ad7b59770909e6..a7478626222813 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/object/tostring/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/object/tostring/index.md @@ -29,7 +29,7 @@ JavaScript 调用 `toString` 方法[将对象转换为一个原始值](/zh-CN/do 该方法由[字符串转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)优先调用,但是[数字的强制转换](/zh-CN/docs/Web/JavaScript/Data_structures#强制数字类型转换)和[原始值的强制转换](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)会优先调用 `valueOf()`。然而,因为基本的 [`valueOf()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) 方法返回一个对象,`toString()` 方法通常在结束时调用,除非对象重写了 `valueOf()`。例如,`+[1]` 返回 `1`,因为它的 [`toString()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) 方法返回 `"1"`,然后将其转换为数字。 -所有继承自 `Object.prototype` 的对象(即,除了 [`null`-prototype 对象](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)之外的对象)都继承 `toString()` 方法。当你创建一个自定义对象时,你可以重写 `toString()` 以调用自定义方法,以便将自定义对象转换为一个字符串。或者,你可以增加一个 [`@@toPrimitive`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,该方法允许对转换过程有更多的控制,并且对于任意的类型转换,且总是优先于 `valueOf` 或 `toString`。 +所有继承自 `Object.prototype` 的对象(即,除了 [`null`-prototype 对象](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object#null-prototype_objects)之外的对象)都继承 `toString()` 方法。当你创建一个自定义对象时,你可以重写 `toString()` 以调用自定义方法,以便将自定义对象转换为一个字符串。或者,你可以增加一个 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,该方法允许对转换过程有更多的控制,并且对于任意的类型转换,且总是优先于 `valueOf` 或 `toString`。 要将基本的 `Object.prototype.toString()` 用于重写的对象(或者在 `null` 或 `undefined` 上调用它),你需要在它上面调用 {{jsxref("Function.prototype.call()")}} 或者 {{jsxref("Function.prototype.apply()")}},将要检查的对象作为第一个参数传递(称为 `thisArg`)。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/valueof/index.md b/files/zh-cn/web/javascript/reference/global_objects/object/valueof/index.md index f906803e08f072..f389ed20d5ad28 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/object/valueof/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/object/valueof/index.md @@ -31,7 +31,7 @@ JavaScript 调用 `valueOf` 方法来[将对象转换成基本类型值](/zh-CN/ [强制数字类型转换](/zh-CN/docs/Web/JavaScript/Data_structures#强制数字类型转换)和[强制基本类型转换](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)优先会调用该方法,而[强制字符串转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#强制字符串转换)会优先调用 `toString()`,并且 `toString()` 很可能返回字符串值(甚至对于 {{jsxref("Object.prototype.toString()")}} 基本实现也是如此),因此在这种情况下不会调用 `valueOf()`。 -从 `Object.prototype` 继承的所有对象(即,除了[`null` 原型对象](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object#null_原型对象)之外的所有对象)都继承了 `toString()` 方法。`Object.prototype.valueOf()` 的基本实现被有意设计为无用的:返回一个对象;其返回值将永远不会被任何[基本类型转换算法](/zh-CN/docs/Web/JavaScript/Data_structures#强制类型转换)使用。许多内置对象重写此方法以返回适当的基本类型值。创建自定义对象时,可以重写 `valueOf()` 来调用自定义方法,以便将自定义对象转换为基本类型值。通常,`valueOf()` 用于返回对对象具有意义的值——与 `toString()` 不同,它不需要字符串。或者,你可以添加一个 [`@@toPrimitive`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,该方法允许对转换过程进行更多控制,并且对于任何类型的转换,始终优先于 `valueOf` 或 `toString`。 +从 `Object.prototype` 继承的所有对象(即,除了[`null` 原型对象](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object#null_原型对象)之外的所有对象)都继承了 `toString()` 方法。`Object.prototype.valueOf()` 的基本实现被有意设计为无用的:返回一个对象;其返回值将永远不会被任何[基本类型转换算法](/zh-CN/docs/Web/JavaScript/Data_structures#强制类型转换)使用。许多内置对象重写此方法以返回适当的基本类型值。创建自定义对象时,可以重写 `valueOf()` 来调用自定义方法,以便将自定义对象转换为基本类型值。通常,`valueOf()` 用于返回对对象具有意义的值——与 `toString()` 不同,它不需要字符串。或者,你可以添加一个 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,该方法允许对转换过程进行更多控制,并且对于任何类型的转换,始终优先于 `valueOf` 或 `toString`。 ## 示例 @@ -81,7 +81,7 @@ box.valueOf(); ### 对对象使用一元加运算符 -[一元加(+)](/zh-CN/docs/Web/JavaScript/Reference/Operators/Unary_plus)对其操作数进行[强制数字转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#强制数字转换),对于大多数没有 [`@@toPrimitive`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 的对象,这意味着调用其 `valueOf()`。但是,如果对象没有自定义的 `valueOf()` 方法,则基本实现将导致忽略 `valueOf()`,而使用 `toString()` 的返回值。 +[一元加(+)](/zh-CN/docs/Web/JavaScript/Reference/Operators/Unary_plus)对其操作数进行[强制数字转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number#强制数字转换),对于大多数没有 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 的对象,这意味着调用其 `valueOf()`。但是,如果对象没有自定义的 `valueOf()` 方法,则基本实现将导致忽略 `valueOf()`,而使用 `toString()` 的返回值。 ```js +new Date(); // 当前时间戳;与 new Date().getTime() 相同 diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/finally/index.md b/files/zh-cn/web/javascript/reference/global_objects/promise/finally/index.md index 066b2ac1f738c2..725852a87f108c 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/promise/finally/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/promise/finally/index.md @@ -56,7 +56,7 @@ promise.then( ); ``` -因为 `finally()` 调用 `then()`,所以它支持子类化。此外,请注意上面的 {{jsxref("Promise.resolve()")}} 调用——实际上,`onFinally()` 的返回值是使用与 `Promise.resolve()` 相同的算法解决的,但用于构造解决的 promise 的实际构造函数将是子类。`finally()` 通过 [`promise.constructor[@@species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/@@species) 获取构造函数。 +因为 `finally()` 调用 `then()`,所以它支持子类化。此外,请注意上面的 {{jsxref("Promise.resolve()")}} 调用——实际上,`onFinally()` 的返回值是使用与 `Promise.resolve()` 相同的算法解决的,但用于构造解决的 promise 的实际构造函数将是子类。`finally()` 通过 [`promise.constructor[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/Symbol.species) 获取构造函数。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/index.md b/files/zh-cn/web/javascript/reference/global_objects/promise/index.md index 21f75a4d09ecae..43efd08977e129 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/promise/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/promise/index.md @@ -172,7 +172,7 @@ Promise.resolve(aThenable); // 一个兑现值为 42 的 Promise ## 静态属性 -- {{jsxref("Promise/@@species", "Promise[@@species]")}} +- [`Promise[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/Symbol.species) - : 返回用于构造从 Promise 方法返回值的构造函数。 ## 静态方法 @@ -199,8 +199,8 @@ Promise.resolve(aThenable); // 一个兑现值为 42 的 Promise - {{jsxref("Object/constructor", "Promise.prototype.constructor")}} - : 创建实例对象的构造函数。对于 `Promise` 实例,初始值为 {{jsxref("Promise/Promise", "Promise")}} 构造函数。 -- `Promise.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"Promise"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 +- `Promise.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"Promise"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/promise/then/index.md b/files/zh-cn/web/javascript/reference/global_objects/promise/then/index.md index 32c342392980db..6f244db3f070f4 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/promise/then/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/promise/then/index.md @@ -59,7 +59,7 @@ then(onFulfilled, onRejected) 沿着 `then()` 链产生的 [thenable](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise#thenable) 对象总是会被[解决](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise#resolver_函数)——`onFulfilled` 处理函数永远不会收到 thenable 对象,并且任何由处理函数返回的 thenable 对象在传递给下一个处理函数之前总是被解决。这是因为在构造新的 Promise 对象时,由 `executor` 传递的 `resolve` 和 `reject` 函数被保存下来,在当前 Promise 对象敲定时,相应的函数将被调用,并传递兑现值或拒绝原因。解决逻辑来自 {{jsxref("Promise/Promise", "Promise()")}} 构造函数传递的解决函数。 -`then()` 方法支持子类化,这意味着它可以在 `Promise` 子类的实例上调用,并且结果将是子类类型的 Promise 对象。你可以通过 [`@@species`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/@@species) 属性自定义返回值类型。 +`then()` 方法支持子类化,这意味着它可以在 `Promise` 子类的实例上调用,并且结果将是子类类型的 Promise 对象。你可以通过 [`[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/Symbol.species) 属性自定义返回值类型。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/regexp/exec/index.md b/files/zh-cn/web/javascript/reference/global_objects/regexp/exec/index.md index 9623490ee09661..fede668d540858 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/regexp/exec/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/regexp/exec/index.md @@ -41,7 +41,7 @@ exec(str) 在使用 `exec()` 时,`global` 标志位不会在 `sticky` 标志位被设置时生效,而 `match()` 始终会设置 `sticky` 标志位。 -`exec()` 是正则表达式的原始方法。许多其他的正则表达式方法会在内部调用 `exec()`——包括一些字符串方法也会调用 `exec()`,如 [`@@replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace)。虽然 `exec()` 本身非常强大而又有效,但它通常不能最清楚地表示调用的目的。 +`exec()` 是正则表达式的原始方法。许多其他的正则表达式方法会在内部调用 `exec()`——包括一些字符串方法也会调用 `exec()`,如 [`[Symbol.replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace)。虽然 `exec()` 本身非常强大而又有效,但它通常不能最清楚地表示调用的目的。 - 如果你只是为了判断是否匹配,请使用 {{jsxref("RegExp.prototype.test()")}} 方法代替。 - 如果你只是为了找出所有匹配正则表达式的字符串而又不关心捕获组,请使用 {{jsxref("String.prototype.match()")}} 方法代替。此外,{{jsxref("String.prototype.matchAll()")}} 允许你对匹配项进行迭代,这有助于简化匹配字符串的多个部分(带有匹配组)。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/regexp/index.md b/files/zh-cn/web/javascript/reference/global_objects/regexp/index.md index 8ea2a99f66d63d..e72d7af2ad1d08 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/regexp/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/regexp/index.md @@ -1,5 +1,5 @@ --- -title: RegExp(正则表达式) +title: RegExp slug: Web/JavaScript/Reference/Global_Objects/RegExp --- @@ -56,7 +56,7 @@ var re = /\w+/; ## 静态属性 -- {{jsxref("RegExp.@@species", "get RegExp[@@species]")}} +- [`RegExp[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.species) - : 该构造函数用于创建派生对象。 - {{jsxref("RegExp.lastIndex")}} - : 该索引表示从哪里开始下一个匹配 @@ -88,15 +88,15 @@ var re = /\w+/; - : 在该字符串中执行匹配项的搜索。 - {{JSxRef("RegExp.prototype.test()")}} - : 该正则在字符串里是否有匹配。 -- {{JSxRef("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}} +- [`RegExp.prototype[Symbol.match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) - : 对给定字符串执行匹配并返回匹配结果。 -- {{JSxRef("RegExp.prototype.@@matchAll()", "RegExp.prototype[@@matchAll]()")}} +- [`RegExp.prototype[Symbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) - : 对给定字符串执行匹配,返回所有匹配结果。 -- {{JSxRef("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}} +- [`RegExp.prototype[Symbol.replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) - : 给定新的子串,替换所有匹配结果。 -- {{JSxRef("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}} +- [`RegExp.prototype[Symbol.search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search) - : 在给定字符串中搜索匹配项,并返回在字符串中找到字符索引。 -- {{JSxRef("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}} +- [`RegExp.prototype[Symbol.split]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.split) - : 通过将给定字符串拆分为子字符串,并返回字符串形成的数组。 - {{JSxRef("RegExp.prototype.toString()")}} - : 返回表示指定对象的字符串。重写{{jsxref("Object.prototype.toString()")}}方法。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/set/index.md b/files/zh-cn/web/javascript/reference/global_objects/set/index.md index 0f143d17b5a99a..2e65b554424d88 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/set/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/set/index.md @@ -37,7 +37,7 @@ interface GPUSupportedFeatures { 类 `Set` 对象是只读或可读写的(参见上面的 IDL 中的 `readonly` 关键字)。 -- 只读的类 `Set` 对象具有 [`size`](#set.prototype.size) 属性及以下方法:[`entries()`](#set.prototype.entries)、[`forEach()`](#set.prototype.foreach)、[`has()`](#set.prototype.has)、[`keys()`](#set.prototype.keys)、[`values()`](#set.prototype.values) 和 [`@@iterator`](#set.prototypeiterator)。 +- 只读的类 `Set` 对象具有 [`size`](#set.prototype.size) 属性及以下方法:[`entries()`](#set.prototype.entries)、[`forEach()`](#set.prototype.foreach)、[`has()`](#set.prototype.has)、[`keys()`](#set.prototype.keys)、[`values()`](#set.prototype.values) 和 [`[Symbol.iterator]()`](#set.prototypesymbol.iterator)。 - 可写的类 `Set` 对象此外还具有以下方法:[`clear()`](#set.prototype.clear)、[`delete()`](#set.prototype.delete) 和 [`add()`](#set.prototype.add)。 除了对条目类型的限制外,方法和属性的行为与 `Set` 中的等效成员相同。 @@ -60,7 +60,7 @@ interface GPUSupportedFeatures { ## 静态属性 -- {{jsxref("Set/@@species", "Set[@@species]")}} +- [`Set[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.species) - : 用于创建派生对象的构造函数。 ## 实例属性 @@ -71,8 +71,8 @@ interface GPUSupportedFeatures { - : 创建示例对象的构造函数。对于 `Set` 实例,其初始值为 {{jsxref("Set/Set", "Set")}} 构造函数。 - {{jsxref("Set.prototype.size")}} - : 返回 `Set` 对象中值的数量。 -- `Set.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"Set"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 +- `Set.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值为字符串 `"Set"`。该属性用于 {{jsxref("Object.prototype.toString()")}}。 ## 实例方法 @@ -92,7 +92,7 @@ interface GPUSupportedFeatures { - : {{jsxref("Set.prototype.values()")}} 的别名。 - {{jsxref("Set.prototype.values()")}} - : 返回一个新的迭代器对象,该对象按插入顺序生成 `Set` 对象中每个元素的**值**。 -- [`Set.prototype[@@iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator) +- [`Set.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.iterator) - : 返回一个新的迭代器对象,该对象按插入顺序生成 `Set` 对象中每个元素的**值**。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/sharedarraybuffer/index.md b/files/zh-cn/web/javascript/reference/global_objects/sharedarraybuffer/index.md index b1be1b4be59bad..210ae74a740b66 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/sharedarraybuffer/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/sharedarraybuffer/index.md @@ -93,7 +93,7 @@ WebAssembly Thread 提案还定义了一套新的[原子](https://github.com/Web ## 静态属性 -- {{jsxref("SharedArrayBuffer/@@species", "SharedArrayBuffer[@@species]")}} +- [`SharedArrayBuffer[Symbol.species]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/Symbol.species) - : 返回用于构造 `SharedArrayBuffer` 方法返回值的构造函数。 ## 实例属性 @@ -108,8 +108,8 @@ WebAssembly Thread 提案还定义了一套新的[原子](https://github.com/Web - : 只读。如果当前 `SharedArrayBuffer` 可以增大,则返回 `true`,否则返回 `false`。 - {{jsxref("SharedArrayBuffer.prototype.maxByteLength")}} - : 当前 `SharedArrayBuffer` 可以增大的最大长度,只读,以字节为单位。在构造数组时确定且无法更改。 -- `SharedArrayBuffer.prototype[@@toStringTag]` - - : [`@@toStringTag`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"SharedArrayBuffer"`。它被用于 {{jsxref("Object.prototype.toString()")}}。 +- `SharedArrayBuffer.prototype[Symbol.toStringTag]` + - : [`[Symbol.toStringTag]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 属性的初始值是字符串 `"SharedArrayBuffer"`。它被用于 {{jsxref("Object.prototype.toString()")}}。 ## 实例方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/charat/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/charat/index.md index 47d7661fd4c82c..6a96459ba43e58 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/charat/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/charat/index.md @@ -77,7 +77,7 @@ console.log(str.charAt(0)); // "\ud842",这不是有效的 Unicode 字符 console.log(str.charAt(1)); // "\udfb7",这不是有效的 Unicode 字符 ``` -要获取给定索引处的完整 Unicode 码位,请使用按 Unicode 码位拆分的索引方法,例如 {{jsxref("String.prototype.codePointAt()")}} 和将字符串[展开为 Unicode 码位数组](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator)。 +要获取给定索引处的完整 Unicode 码位,请使用按 Unicode 码位拆分的索引方法,例如 {{jsxref("String.prototype.codePointAt()")}} 和将字符串[展开为 Unicode 码位数组](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator)。 ```js const str = "𠮷𠮾"; diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/codepointat/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/codepointat/index.md index d4fde3cfe8c7e1..69f62178496912 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/codepointat/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/codepointat/index.md @@ -66,7 +66,7 @@ for (let i = 0; i < str.length; i++) { // '1f40e'、'dc0e'、'1f471'、'dc71'、'2764' ``` -相反,可以使用 [`for...of`](/zh-CN/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_语句) 语句或[字符串展开语法](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax),这两种方法都会调用字符串的 [`@@iterator`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator),从而按照码位进行迭代。然后,可以使用 `codePointAt(0)` 获取每个元素的码位值。 +相反,可以使用 [`for...of`](/zh-CN/docs/Web/JavaScript/Guide/Loops_and_iteration#for...of_语句) 语句或[字符串展开语法](/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax),这两种方法都会调用字符串的 [`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator),从而按照码位进行迭代。然后,可以使用 `codePointAt(0)` 获取每个元素的码位值。 ```js for (const codePoint of str) { diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/index.md index cf899cb00b9dcb..5f0d02564e2fac 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/index.md @@ -142,7 +142,7 @@ console.log(eval(s2.valueOf())); // 返回数字 4 - 使用与 [`toString(10)`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) 相同的算法转换数字。 - 使用与 [`toString(10)`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt/toString) 相同的算法转换 [BigInt](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt)。 - [Symbol](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol) 抛出 {{jsxref("TypeError")}}。 -- 对于对象,首先,通过依次调用其 [`[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(hint 为 `"string"`)、`toString()` 和 `valueOf()` 方法将其[转换为原始值](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)。然后将生成的原始值转换为一个字符串。 +- 对于对象,首先,通过依次调用其 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive)(hint 为 `"string"`)、`toString()` 和 `valueOf()` 方法将其[转换为原始值](/zh-CN/docs/Web/JavaScript/Data_structures#强制原始值转换)。然后将生成的原始值转换为一个字符串。 有几种方法可以在 JavaScript 中实现几乎相同的效果。 @@ -167,7 +167,7 @@ console.log(eval(s2.valueOf())); // 返回数字 4 除了 Unicode 字符之外,还有某些 Unicode 字符序列应视为一个视觉单元,被称为*字素簇*(grapheme cluster)。最常见的情况是 emoji:许多具有多种变体的 emoji 实际上是由多个 emoji 组成的,通常由 \(`U+200D`)字符连接。 -你必须小心迭代字符级别。例如,[`split("")`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split) 将按照 UTF-16 码元分割并将代理对分开。字符串索引也是指的每个 UTF-16 码元的索引。另一方面,[`@@iterator()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator) 按 Unicode 码位迭代。遍历字素簇将需要一些自定义代码。 +你必须小心迭代字符级别。例如,[`split("")`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split) 将按照 UTF-16 码元分割并将代理对分开。字符串索引也是指的每个 UTF-16 码元的索引。另一方面,[`[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) 按 Unicode 码位迭代。遍历字素簇将需要一些自定义代码。 ```js "😄".split(""); // ['\ud83d', '\ude04']; splits into two lone surrogates @@ -292,7 +292,7 @@ console.log(eval(s2.valueOf())); // 返回数字 4 - : 修剪字符串开头的空格。 - {{jsxref("String.prototype.valueOf()")}} - : 返回指定对象的原始值。重写 {{jsxref("Object.prototype.valueOf()")}} 方法。 -- {{jsxref("String.prototype.@@iterator()", "String.prototype[@@iterator]()")}} +- [`String.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) - : 返回一个新的迭代器对象,该对象迭代 String 值的码位,将每个码位作为 String 值返回。 ## HTML 包装器方法 diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/length/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/length/index.md index 14178cdd9f9a58..4b7922b89b8812 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/length/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/length/index.md @@ -29,7 +29,7 @@ slug: Web/JavaScript/Reference/Global_Objects/String/length 静态属性 `String.length` 与字符串的长度无关。它是 `String` 函数的[参数数量](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/length)(简单地说,就是它有多少个形参),也就是 1。 -由于 `length` 统计的是码元而不是字符,如果你想得到字符的数量,你可以首先用它的[迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/@@iterator)分割字符串,它按字符进行迭代: +由于 `length` 统计的是码元而不是字符,如果你想得到字符的数量,你可以首先用它的[迭代器](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator)分割字符串,它按字符进行迭代: ```js function getCharacterLength(str) { diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/match/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/match/index.md index dc8045cdca4abc..1b460fa668bc46 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/match/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/match/index.md @@ -34,13 +34,13 @@ match(regexp) ## 描述 -`String.prototype.match` 方法本身的实现非常简单,它只是使用字符串作为第一个参数调用了参数的 `Symbol.match` 方法。实际的实现来自于 [`RegExp.prototype[@@match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@match)。 +`String.prototype.match` 方法本身的实现非常简单,它只是使用字符串作为第一个参数调用了参数的 `Symbol.match` 方法。实际的实现来自于 [`RegExp.prototype[Symbol.match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match)。 - 如果你需要知道一个字符串是否与一个正则表达式 {{jsxref("RegExp")}} 匹配,请使用 {{jsxref("RegExp.prototype.test()")}}。 - 如果你只想获取第一个匹配项,你可能需要使用 {{jsxref("RegExp.prototype.exec()")}}。 - 如果你想要获取捕获组,并且全局标志已设置,你需要使用 {{jsxref("RegExp.prototype.exec()")}} 或 {{jsxref("String.prototype.matchAll()")}}。 -有关传入正则表达式时 `match()` 方法的语义更多信息,请参阅 [`RegExp.prototype[@@match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@match)。 +有关传入正则表达式时 `match()` 方法的语义更多信息,请参阅 [`RegExp.prototype[Symbol.match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match)。 ## 示例 @@ -101,7 +101,7 @@ const str = "空即是空"; str.match(); // 返回 [""] ``` -### 使用实现了 @@match 的非 RegExp 对象调用 match() +### 使用实现了 `[Symbol.match]()` 的非 RegExp 对象调用 match() 如果一个对象有一个名为 `Symbol.match` 的方法,那么它可以被用作自定义匹配器。`Symbol.match` 的返回值将成为 `match()` 方法的返回值。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/matchall/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/matchall/index.md index d88aece9702ed5..58eaa56f9597da 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/matchall/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/matchall/index.md @@ -36,7 +36,7 @@ matchAll(regexp) ## 描述 -`String.prototype.matchAll` 方法本身的实现非常简单,它只是调用了参数的 `Symbol.matchAll` 方法,并将字符串作为第一个参数传递了进去(除了额外的输入验证,即正则表达式必须是全局的)。实际的实现来自 [`RegExp.prototype[@@matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll)。 +`String.prototype.matchAll` 方法本身的实现非常简单,它只是调用了参数的 `Symbol.matchAll` 方法,并将字符串作为第一个参数传递了进去(除了额外的输入验证,即正则表达式必须是全局的)。实际的实现来自 [`RegExp.prototypeSymbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll)。 ## 示例 @@ -126,7 +126,7 @@ array[1]; // ['test2', 'e', 'st2', '2', index: 5, input: 'test1test2', length: 4] ``` -### 使用实现了 @@matchAll 的非正则对象调用 matchAll() +### 使用实现了 `[Symbol.matchAll]()` 的非正则对象调用 matchAll() 如果一个对象有一个 `Symbol.matchAll` 方法,它可以被用作自定义匹配器。`Symbol.matchAll` 的返回值将成为 `matchAll()` 的返回值。 @@ -157,4 +157,4 @@ str.matchAll({ - {{jsxref("RegExp")}} - {{jsxref("RegExp.prototype.exec()")}} - {{jsxref("RegExp.prototype.test()")}} -- [`RegExp.prototype[@@matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@matchAll) +- [`RegExp.prototype[Symbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/replace/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/replace/index.md index bf79e74eac0a08..260fdb70c1f6d9 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/replace/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/replace/index.md @@ -34,7 +34,7 @@ replace(pattern, replacement) 字符串模式只会被替换一次。要执行全局搜索和替换,请使用带有 `g` 标志的正则表达式或使用 [`replaceAll()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll)。 -如果 `pattern` 是一个带有 [`Symbol.replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) 方法的对象(包括 `RegExp` 对象),则该方法将被调用,传入目标字符串和 `replacement` 作为参数。它的返回值成为 `replace()` 的返回值。在这种情况下,`replace()` 的行为完全由 `@@replace` 方法定义——例如,下面的说明中提到的任何"捕获组"都实际上是由 [`RegExp.prototype[@@replace]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace) 提供的功能。 +如果 `pattern` 是一个带有 [`Symbol.replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) 方法的对象(包括 `RegExp` 对象),则该方法将被调用,传入目标字符串和 `replacement` 作为参数。它的返回值成为 `replace()` 的返回值。在这种情况下,`replace()` 的行为完全由 `[Symbol.replace]()` 方法定义——例如,下面的说明中提到的任何"捕获组"都实际上是由 [`RegExp.prototype[Symbol.replace]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) 提供的功能。 如果 `pattern` 是一个空字符串,则替换项将被插入到字符串的开头。 @@ -42,7 +42,7 @@ replace(pattern, replacement) "xxx".replace("", "_"); // "_xxx" ``` -`replace()` 替换多次的唯一情况是传入带有 `g` 标志的正则表达式。有关正则表达式属性(特别是 [sticky](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) 标志)如何与 `replace()` 交互的更多信息,请参阅 [`RegExp.prototype[@@replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace)。 +`replace()` 替换多次的唯一情况是传入带有 `g` 标志的正则表达式。有关正则表达式属性(特别是 [sticky](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) 标志)如何与 `replace()` 交互的更多信息,请参阅 [`RegExp.prototype[Symbol.replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace)。 ### 指定字符串作为替换项 @@ -249,4 +249,4 @@ console.log("abcd".replace(/(?bc)/, addOffset)); // "abc (1) d" - {{jsxref("RegExp.prototype.exec", "RegExp.prototype.exec()")}} - {{jsxref("RegExp.prototype.test", "RegExp.prototype.test()")}} - [`Symbol.replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) -- [`RegExp.prototype[@@replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace) +- [`RegExp.prototype[Symbol.replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/replaceall/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/replaceall/index.md index 1a9ed06b6762ad..f80bc9ffa863c0 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/replaceall/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/replaceall/index.md @@ -56,7 +56,7 @@ console.log(unsafeRedactName(report, "ha.*er")); // "A [REDACTED]s in their name console.log(safeRedactName(report, "ha.*er")); // "A hacker called [REDACTED] used special characters in their name to breach the system." ``` -如果 `pattern` 是一个具有 [`Symbol.replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) 方法的对象(包括 `RegExp` 对象),则该方法将被调用,并以目标字符串和 `replacement` 作为参数。它的返回值成为 `replaceAll()` 的返回值。在这种情况下,`replaceAll()` 的行为完全取决于 `@@replace` 方法,因此除了额外的输入验证(即正则表达式必须是全局的)之外,它将具有与 `replace()` 相同的结果。 +如果 `pattern` 是一个具有 [`Symbol.replace`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) 方法的对象(包括 `RegExp` 对象),则该方法将被调用,并以目标字符串和 `replacement` 作为参数。它的返回值成为 `replaceAll()` 的返回值。在这种情况下,`replaceAll()` 的行为完全取决于 `[Symbol.replace]()` 方法,因此除了额外的输入验证(即正则表达式必须是全局的)之外,它将具有与 `replace()` 相同的结果。 如果 `pattern` 是一个空字符串,则替换内容将插入到每个 UTF-16 码元之间,类似于 [`split()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/split) 的行为。 @@ -64,7 +64,7 @@ console.log(safeRedactName(report, "ha.*er")); // "A hacker called [REDACTED] us "xxx".replaceAll("", "_"); // "_x_x_x_" ``` -有关正则表达式属性(尤其是 [sticky](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) 标志)如何与 `replaceAll()` 交互的更多信息,请参阅 [`RegExp.prototype[@@replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@replace)。 +有关正则表达式属性(尤其是 [sticky](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) 标志)如何与 `replaceAll()` 交互的更多信息,请参阅 [`RegExp.prototype[Symbol.replace]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace)。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 375db54ea5ff6a..36d8f97d8fc914 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -29,9 +29,9 @@ search(regexp) ## 描述 -`String.prototype.search()` 方法的实现非常简单——它只是将该字符串作为调用实参拥有的 `Symbol.search` 方法的第一个参数。实际的实现来自于 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 +`String.prototype.search()` 方法的实现非常简单——它只是将该字符串作为调用实参拥有的 `Symbol.search` 方法的第一个参数。实际的实现来自于 [`RegExp.prototype[Symbol.search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search)。 -`regexp` 的 `g` 标志对 `search()` 方法的结果没有影响,搜索总是以正则表达式的 `lastIndex` 为 0 进行。有关 `search()` 方法行为的更多信息,请参阅 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 +`regexp` 的 `g` 标志对 `search()` 方法的结果没有影响,搜索总是以正则表达式的 `lastIndex` 为 0 进行。有关 `search()` 方法行为的更多信息,请参阅 [`RegExp.prototype[Symbol.search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search)。 当你想知道字符串中是否存在某个模式,并且*还*想知道它在字符串中的索引时,可以使用 `search()` 方法。 @@ -66,4 +66,4 @@ console.log(str.search(reDot)); // 返回 -1,找不到点符号“.” - [在 JavaScript 中使用正则表达式](/zh-CN/docs/Web/JavaScript/Guide/Regular_expressions) - {{jsxref("String.prototype.match()")}} - {{jsxref("RegExp.prototype.exec()")}} -- [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search) +- [`RegExp.prototype[Symbol.search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.search) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/split/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/split/index.md index b4b3464e22b10c..2d6a4463fa43c3 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/split/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/split/index.md @@ -19,7 +19,7 @@ split(separator, limit) ### 参数 - `separator` - - : 描述每个分割应该发生在哪里的模式。可以是 `undefined`,一个字符串,或者一个具有 [`Symbol.split`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split) 方法的对象——典型的例子是{{jsxref("Global_Objects/RegExp", "正则表达式", "", 1)}}。省略 `separator` 或传递 `undefined` 会导致 `split()` 返回一个只包含所调用字符串数组。所有不是 `undefined` 的值或不具有 `@@split` 方法的对象都被[强制转换为字符串](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)。 + - : 描述每个分割应该发生在哪里的模式。可以是 `undefined`,一个字符串,或者一个具有 [`Symbol.split`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split) 方法的对象——典型的例子是{{jsxref("Global_Objects/RegExp", "正则表达式", "", 1)}}。省略 `separator` 或传递 `undefined` 会导致 `split()` 返回一个只包含所调用字符串数组。所有不是 `undefined` 的值或不具有 `[Symbol.split]()` 方法的对象都被[强制转换为字符串](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)。 - `limit` {{optional_inline}} - : 一个非负整数,指定数组中包含的子字符串的数量限制。当提供此参数时,split 方法会在指定 `separator` 每次出现时分割该字符串,但在已经有 `limit` 个元素时停止分割。任何剩余的文本都不会包含在数组中。 - 如果在达到极限之前就达到了字符串的末端,那么数组包含的条目可能少于 `limit`。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/tostring/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/tostring/index.md index e6920fb07dc277..04237bdd94e3ed 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/tostring/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/tostring/index.md @@ -25,7 +25,7 @@ toString() `toString()` 方法要求其 `this` 值为 `String` 原始值或封装对象。对于其他 `this` 值,它会抛出 {{jsxref("TypeError")}} 而不尝试将其转换为字符串值。 -由于 `String` 没有 [`[@@toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,当一个 `String` *对象*在期望字符串的上下文中使用时(比如在[模板字面量](/zh-CN/docs/Web/JavaScript/Reference/Template_literals)中),JavaScript 会自动调用 `toString()` 方法。然而,`String` *原始值*不会使用 `toString()` 方法来进行[字符串强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)——因为它们已经是字符串,所以不会进行转换。 +由于 `String` 没有 [`[Symbol.toPrimitive]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) 方法,当一个 `String` *对象*在期望字符串的上下文中使用时(比如在[模板字面量](/zh-CN/docs/Web/JavaScript/Reference/Template_literals)中),JavaScript 会自动调用 `toString()` 方法。然而,`String` *原始值*不会使用 `toString()` 方法来进行[字符串强制转换](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#字符串强制转换)——因为它们已经是字符串,所以不会进行转换。 ```js String.prototype.toString = () => "已经被重写了"; diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/asynciterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/asynciterator/index.md index 3e326ad69d544c..e247fd8570d0d6 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/asynciterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/asynciterator/index.md @@ -9,7 +9,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator ## 描述 -`Symbol.asyncIterator` 是一个用于访问对象的`@@asyncIterator`方法的内建符号。一个异步可迭代对象必须要有`Symbol.asyncIterator`属性。 +`Symbol.asyncIterator` 是一个用于访问对象的 `[Symbol.asyncIterator]()` 方法的内建符号。一个异步可迭代对象必须要有 `Symbol.asyncIterator` 属性。 {{js_property_attributes(0,0,0)}} diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/index.md index 59a9f121da9812..a3594415b29ff4 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/index.md @@ -5,7 +5,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol {{JSRef}} -**symbol** 是一种基本数据类型({{Glossary("Primitive", "primitive data type")}})。`Symbol()` 函数会返回 **symbol** 类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的 symbol 注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:"`new Symbol()`"。 +**symbol** 是一种{{Glossary("Primitive", "原始数据类型")}}。`Symbol()` 函数会返回 **symbol** 类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的 symbol 注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:"`new Symbol()`"。 每个从 `Symbol()` 返回的 symbol 值都是唯一的。一个 symbol 值能作为对象属性的标识符;这是该数据类型仅有的目的。更进一步的解析见——[glossary entry for Symbol](/zh-CN/docs/Glossary/Symbol)。 @@ -123,7 +123,7 @@ typeof symObj; // "object" - : 返回一个包含着该 Symbol 对象描述的字符串。该方法重写了 {{jsxref("Object.prototype.toString")}} 方法 - {{jsxref("Symbol.prototype.valueOf")}} - : 返回该 Symbol 对象。该方法重写了 {{jsxref("Object.prototype.valueOf")}} 方法 -- {{jsxref("Symbol.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}} +- [`Symbol.toPrimitive`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) - : 返回该 Symbol 对象。 ## 示例 diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md index 8a15bf2ade40b9..def9210dcfe948 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.md @@ -11,7 +11,7 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable ## 描述 -`@@isConcatSpreadable` 符号 (`Symbol.isConcatSpreadable`) 可以直接定义为对象属性或继承而来,它是布尔类型。它可以控制数组或类似数组(array-like)的对象的行为: +`Symbol.isConcatSpreadable` 符号可以直接定义为对象属性或继承而来,它是布尔类型。它可以控制数组或类似数组(array-like)的对象的行为: - 对于数组对象,默认情况下,用于 concat 时,会按数组元素展开然后进行连接(数组元素作为新数组的元素)。重置`Symbol.isConcatSpreadable`可以改变默认行为。 - 对于类似数组的对象,用于 concat 时,该对象整体作为新数组的元素,重置`Symbol.isConcatSpreadable`可改变默认行为。 diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/iterator/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/iterator/index.md index 6fac31d1cd5d54..c4cc1be7198b8b 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/iterator/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/iterator/index.md @@ -11,15 +11,15 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator ## 描述 -当需要对一个对象进行迭代时(比如开始用于一个 `for..of` 循环中),它的 `@@iterator` 方法都会在不传参情况下被调用,返回的**迭代器**用于获取要迭代的值。 +当需要对一个对象进行迭代时(比如开始用于一个 `for..of` 循环中),它的 `[Symbol.iterator]()` 方法都会在不传参情况下被调用,返回的**迭代器**用于获取要迭代的值。 -一些内置类型拥有默认的迭代器行为,其他类型(如 {{jsxref("Object")}})则没有。拥有默认的 `@@iterator` 方法的内置类型是: +一些内置类型拥有默认的迭代器行为,其他类型(如 {{jsxref("Object")}})则没有。拥有默认的 `[Symbol.iterator]()` 方法的内置类型是: -- {{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}} -- {{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}} -- {{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}} -- {{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}} -- {{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}} +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) +- [`TypedArray.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/Symbol.iterator) +- [`String.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) +- [`Map.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator) +- [`Set.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.iterator) 更多信息请参见[迭代协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols)。 @@ -65,7 +65,7 @@ console.log(...someObj); // 'a', 'b' ### 不符合标准的迭代器 -如果一个迭代器 `@@iterator` 没有返回一个迭代器对象,那么它就是一个不符合标准的迭代器。这样的迭代器将会在运行期抛出异常,甚至出现非常诡异的 Bug: +如果一个迭代器 `[Symbol.iterator]()` 没有返回一个迭代器对象,那么它就是一个不符合标准的迭代器。这样的迭代器将会在运行期抛出异常,甚至出现非常诡异的 Bug: ```js example-bad const nonWellFormedIterable = {}; @@ -85,8 +85,10 @@ nonWellFormedIterable[Symbol.iterator] = () => 1; - [`core-js` 中 `Symbol.iterator` 的 Polyfill](https://github.com/zloirock/core-js#ecmascript-symbol) - [迭代协议](/zh-CN/docs/Web/JavaScript/Reference/Iteration_protocols) -- {{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}} -- {{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}} -- {{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}} -- {{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}} -- {{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}} +- [`Array.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.iterator) +- [`TypedArray.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/Symbol.iterator) +- [`String.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Symbol.iterator) +- [`Map.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map/Symbol.iterator) +- [`Set.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.iterator) +- [`arguments[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments/Symbol.iterator) +- [`Segments.prototype[Symbol.iterator]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments/Symbol.iterator) diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/match/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/match/index.md index 46da3abb8cc323..3a38453ac032ba 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/match/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/match/index.md @@ -47,7 +47,10 @@ re[Symbol.match] = false; ## 参见 +- [`core-js` 中 `Symbol.match` 的 polyfill](https://github.com/zloirock/core-js#ecmascript-symbol) +- {{jsxref("Symbol.matchAll")}} - {{jsxref("Symbol.replace")}} - {{jsxref("Symbol.search")}} - {{jsxref("Symbol.split")}} -- {{jsxref("RegExp.@@match", "RegExp.prototype[@@match]()")}} +- {{jsxref("String.prototype.match()")}} +- [`RegExp.prototype[Symbol.match]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) diff --git a/files/zh-cn/web/javascript/reference/global_objects/symbol/matchall/index.md b/files/zh-cn/web/javascript/reference/global_objects/symbol/matchall/index.md index f9c265b96f8710..6d84b9dbe2cce6 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/symbol/matchall/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/symbol/matchall/index.md @@ -7,13 +7,13 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll **`Symbol.matchAll`** 内置通用(well-known)符号指定方法返回一个迭代器,该迭代器根据字符串生成正则表达式的匹配项。此函数可以被 {{jsxref("String.prototype.matchAll()")}} 方法调用。 -详细信息请参阅 {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} 和 {{jsxref("String.prototype.matchAll()")}}。 +详细信息请参阅 [`RegExp.prototype[Symbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) 和 {{jsxref("String.prototype.matchAll()")}}。 {{EmbedInteractiveExample("pages/js/symbol-matchall.html")}} ## 值 -内置通用符号 `@@matchAll`。 +内置通用符号 `Symbol.matchAll`。 {{js_property_attributes(0, 0, 0)}} @@ -43,5 +43,9 @@ console.log(Array.from(str.matchAll(numbers))); ## 参见 - [`core-js` 中 `Symbol.matchAll` 的 polyfill](https://github.com/zloirock/core-js#ecmascript-symbol) +- {{jsxref("Symbol.match")}} +- {{jsxref("Symbol.replace")}} +- {{jsxref("Symbol.search")}} +- {{jsxref("Symbol.split")}} - {{jsxref("String.prototype.matchAll()")}} -- {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} +- [`RegExp.prototype[Symbol.matchAll]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) diff --git a/files/zh-cn/web/javascript/reference/statements/with/index.md b/files/zh-cn/web/javascript/reference/statements/with/index.md index d42451b9dae424..12fb6047b0951e 100644 --- a/files/zh-cn/web/javascript/reference/statements/with/index.md +++ b/files/zh-cn/web/javascript/reference/statements/with/index.md @@ -85,6 +85,6 @@ with (Math) { ## 参见 - {{jsxref("Statements/block", "block")}} -- [Strict mode](/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode) +- [严格模式](/zh-CN/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode) - {{jsxref("Symbol.unscopables")}} -- {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} +- [`Array.prototype[Symbol.unscopables]`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Symbol.unscopables) diff --git a/files/zh-cn/webassembly/javascript_interface/global/index.md b/files/zh-cn/webassembly/javascript_interface/global/index.md index 9f240cbac9cb99..b643dc139d136a 100644 --- a/files/zh-cn/webassembly/javascript_interface/global/index.md +++ b/files/zh-cn/webassembly/javascript_interface/global/index.md @@ -5,26 +5,25 @@ slug: WebAssembly/JavaScript_interface/Global {{WebAssemblySidebar}} -**`WebAssembly.Global`** 对象表示一个全局变量实例,可以被 JavaScript 和 importable/exportable 访问 ,跨越一个或多个{{jsxref("WebAssembly.Module")}} 实例。他允许被多个 modules 动态连接。 +**`WebAssembly.Global`** 对象表示一个全局变量实例,可以被 JavaScript 和 importable/exportable 访问,跨越一个或多个 {{jsxref("WebAssembly.Module")}} 实例。他允许被多个模块动态连接。 -## 构造函数语法 +## 构造函数 -**[WebAssembly.Global()](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)** - -创建一个新的`全局`对象。 +- [`WebAssembly.Global()`](/zh-CN/docs/WebAssembly/JavaScript_interface/Global/Global) + - : 创建一个新的 `Global` 对象。 ## Global 实例 -所有的 `Global` 实例 继承自 `Global()` 构造函数 [prototype object](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype) — 修改会影响 所有 `Global` 实例。 +所有的 `Global` 实例继承自 `Global()` 构造函数的原型对象——修改会影响 所有 `Global` 实例。 ### 实例属性 - `Global.prototype.constructor` - : 返回创建对象实例的函数。缺省为构造函数为 {{jsxref("WebAssembly.Global()")}} -- `Global.prototype[@@toStringTag]` - - : 属性 [@@toStringTag](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 初始值为字符串 "WebAssembly.Global". +- `Global.prototype[Symbol.toStringTag]` + - : 属性 [Symbol.toStringTag](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag) 初始值为字符串“WebAssembly.Global”。 - `Global.prototype.value` - - : 全局变量包含的值 — 可以直接用于设置和获取全局变量的值。 + - : 全局变量包含的值——可以直接用于设置和获取全局变量的值。 ### 实例方法