[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2965":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":40,"discoverSource":41},2965,"core-js","zloirock\u002Fcore-js","zloirock","Standard Library","https:\u002F\u002Fcore-js.io",null,"JavaScript",25497,1697,251,34,0,2,14,72.09,"MIT License",false,"master",true,[25,26,27,28,29,30,31,32,33,34,35,36],"ecmascript-proposals","es2015","es6","es7","esnext","javascript","js","polyfill","ponyfill","proposal","proposals","shim","2026-06-12 04:00:16","![logo](https:\u002F\u002Fuser-images.githubusercontent.com\u002F2213682\u002F146607186-8e13ddef-26a4-4ebf-befd-5aac9d77c090.png)\n\n\u003Cdiv align=\"center\">\n\n[![fundraising](https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fall\u002Fbadge.svg?label=fundraising)](https:\u002F\u002Fopencollective.com\u002Fcore-js) [![PRs welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md) [![version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fcore-js.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcore-js) [![core-js downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fcore-js.svg?label=npm%20i%20core-js)](https:\u002F\u002Fnpm-stat.com\u002Fcharts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fcore-js-pure.svg?label=npm%20i%20core-js-pure)](https:\u002F\u002Fnpm-stat.com\u002Fcharts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18)\n\n\u003C\u002Fdiv>\n\n**Welcome to our new website, [core-js.io](https:\u002F\u002Fcore-js.io), where our documentation is moving!**\n---\n\n**I highly recommend reading this: [So, what's next?](https:\u002F\u002Fcore-js.io\u002Fblog\u002F2023-02-14-so-whats-next)**\n---\n\n> Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2025](#ecmascript): [promises](#ecmascript-promise), [symbols](#ecmascript-symbol), [collections](#ecmascript-collections), iterators, [typed arrays](#ecmascript-typed-arrays), many other features, [ECMAScript proposals](#ecmascript-proposals), [some cross-platform WHATWG \u002F W3C features and proposals](#web-standards) like [`URL`](#url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.\n\n## [core-js@3, babel and a look into the future](https:\u002F\u002Fcore-js.io\u002Fblog\u002F2019-03-19-core-js-3-babel-and-a-look-into-the-future)\n\n## Raising funds\n\n`core-js` isn't backed by a company, so the future of this project depends on you. Become a sponsor or a backer if you are interested in `core-js`: [**Open Collective**](https:\u002F\u002Fopencollective.com\u002Fcore-js), [**Patreon**](https:\u002F\u002Fpatreon.com\u002Fzloirock), [**Boosty**](https:\u002F\u002Fboosty.to\u002Fzloirock), **Bitcoin ( bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz )**, [**Alipay**](https:\u002F\u002Fuser-images.githubusercontent.com\u002F2213682\u002F219464783-c17ad329-17ce-4795-82a7-f609493345ed.png).\n\n---\n\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F0\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F0\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F1\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F1\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F2\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F2\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F3\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F3\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F4\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F4\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F5\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F5\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F6\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F6\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F7\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F7\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F8\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F8\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F9\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F9\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F10\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F10\u002Favatar.svg\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F11\u002Fwebsite\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fsponsor\u002F11\u002Favatar.svg\">\u003C\u002Fa>\n\n---\n\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcore-js#backers\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fopencollective.com\u002Fcore-js\u002Fbackers.svg?width=890\">\u003C\u002Fa>\n\n---\n\n[*Example of usage*](https:\u002F\u002Ftinyurl.com\u002F28zqjbun):\n```js\nimport 'core-js\u002Factual';\n\nPromise.try(() => 42).then(it => console.log(it)); \u002F\u002F => 42\n\nArray.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); \u002F\u002F => [1, 2, 3, 4, 5]\n\n[1, 2].flatMap(it => [it, it]); \u002F\u002F => [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it => it % 2)\n  .map(it => it ** 2)\n  .toArray(); \u002F\u002F => [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); \u002F\u002F => new Set([1, 2, 3])\n```\n\n*You can load only required features*:\n```js\nimport 'core-js\u002Factual\u002Fpromise';\nimport 'core-js\u002Factual\u002Fset';\nimport 'core-js\u002Factual\u002Fiterator';\nimport 'core-js\u002Factual\u002Farray\u002Ffrom';\nimport 'core-js\u002Factual\u002Farray\u002Fflat-map';\nimport 'core-js\u002Factual\u002Fstructured-clone';\n\nPromise.try(() => 42).then(it => console.log(it)); \u002F\u002F => 42\n\nArray.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); \u002F\u002F => [1, 2, 3, 4, 5]\n\n[1, 2].flatMap(it => [it, it]); \u002F\u002F => [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it => it % 2)\n  .map(it => it ** 2)\n  .toArray(); \u002F\u002F => [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); \u002F\u002F => new Set([1, 2, 3])\n```\n\n*Or use it without global namespace pollution*:\n```js\nimport Promise from 'core-js-pure\u002Factual\u002Fpromise';\nimport Set from 'core-js-pure\u002Factual\u002Fset';\nimport Iterator from 'core-js-pure\u002Factual\u002Fiterator';\nimport from from 'core-js-pure\u002Factual\u002Farray\u002Ffrom';\nimport flatMap from 'core-js-pure\u002Factual\u002Farray\u002Fflat-map';\nimport structuredClone from 'core-js-pure\u002Factual\u002Fstructured-clone';\n\nPromise.try(() => 42).then(it => console.log(it)); \u002F\u002F => 42\n\nfrom(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); \u002F\u002F => [1, 2, 3, 4, 5]\n\nflatMap([1, 2], it => [it, it]); \u002F\u002F => [1, 1, 2, 2]\n\nIterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))\n  .drop(1).take(5)\n  .filter(it => it % 2)\n  .map(it => it ** 2)\n  .toArray(); \u002F\u002F => [9, 25]\n\nstructuredClone(new Set([1, 2, 3])); \u002F\u002F => new Set([1, 2, 3])\n```\n\n### Index\n- [Usage](#usage)\n  - [Installation](#installation)\n  - [`postinstall` message](#postinstall-message)\n  - [CommonJS API](#commonjs-api)\n  - [Babel](#babel)\n    - [`@babel\u002Fpolyfill`](#babelpolyfill)\n    - [`@babel\u002Fpreset-env`](#babelpreset-env)\n    - [`@babel\u002Fruntime`](#babelruntime)\n  - [swc](#swc)\n  - [Configurable level of aggressiveness](#configurable-level-of-aggressiveness)\n  - [Custom build](#custom-build)\n- [Supported engines and compatibility data](#supported-engines-and-compatibility-data)\n- [Features](#features)\n  - [ECMAScript](#ecmascript)\n    - [ECMAScript: Object](#ecmascript-object)\n    - [ECMAScript: Function](#ecmascript-function)\n    - [ECMAScript: Error](#ecmascript-error)\n    - [ECMAScript: Array](#ecmascript-array)\n    - [ECMAScript: Iterator](#ecmascript-iterator)\n    - [ECMAScript: String and RegExp](#ecmascript-string-and-regexp)\n    - [ECMAScript: Number](#ecmascript-number)\n    - [ECMAScript: Math](#ecmascript-math)\n    - [ECMAScript: Date](#ecmascript-date)\n    - [ECMAScript: Promise](#ecmascript-promise)\n    - [ECMAScript: Symbol](#ecmascript-symbol)\n    - [ECMAScript: Collections](#ecmascript-collections)\n    - [ECMAScript: Explicit Resource Management](#ecmascript-explicit-resource-management)\n    - [ECMAScript: Typed Arrays](#ecmascript-typed-arrays)\n    - [ECMAScript: Reflect](#ecmascript-reflect)\n    - [ECMAScript: JSON](#ecmascript-json)\n    - [ECMAScript: globalThis](#ecmascript-globalthis)\n  - [ECMAScript proposals](#ecmascript-proposals)\n    - [Finished proposals](#finished-proposals)\n      - [`globalThis`](#globalthis)\n      - [Relative indexing method](#relative-indexing-method)\n      - [`Array.prototype.includes`](#arrayprototypeincludes)\n      - [`Array.prototype.flat` \u002F `Array.prototype.flatMap`](#arrayprototypeflat--arrayprototypeflatmap)\n      - [`Array` find from last](#array-find-from-last)\n      - [Change `Array` by copy](#change-array-by-copy)\n      - [`Array` grouping](#array-grouping)\n      - [`Array.fromAsync`](#arrayfromasync)\n      - [`ArrayBuffer.prototype.transfer` and friends](#arraybufferprototypetransfer-and-friends)\n      - [`Uint8Array` to \u002F from base64 and hex](#uint8array-to--from-base64-and-hex)\n      - [`Error.isError`](#erroriserror)\n      - [Explicit Resource Management](#explicit-resource-management)\n      - [`Float16` methods](#float16-methods)\n      - [`Iterator` helpers](#iterator-helpers)\n      - [`Iterator` sequencing](#iterator-sequencing)\n      - [`Object.values` \u002F `Object.entries`](#objectvalues--objectentries)\n      - [`Object.fromEntries`](#objectfromentries)\n      - [`Object.getOwnPropertyDescriptors`](#objectgetownpropertydescriptors)\n      - [Accessible `Object.prototype.hasOwnProperty`](#accessible-objectprototypehasownproperty)\n      - [`String` padding](#string-padding)\n      - [`String.prototype.matchAll`](#stringmatchall)\n      - [`String.prototype.replaceAll`](#stringreplaceall)\n      - [`String.prototype.trimStart` \u002F `String.prototype.trimEnd`](#stringprototypetrimstart-stringprototypetrimend)\n      - [`RegExp` `s` (`dotAll`) flag](#regexp-s-dotall-flag)\n      - [`RegExp` named capture groups](#regexp-named-capture-groups)\n      - [`RegExp` escaping](#regexp-escaping)\n      - [`Promise.allSettled`](#promiseallsettled)\n      - [`Promise.any`](#promiseany)\n      - [`Promise.prototype.finally`](#promiseprototypefinally)\n      - [`Promise.try`](#promisetry)\n      - [`Promise.withResolvers`](#promisewithresolvers)\n      - [`Symbol.asyncIterator` for asynchronous iteration](#symbolasynciterator-for-asynchronous-iteration)\n      - [`Symbol.prototype.description`](#symbolprototypedescription)\n      - [`JSON.parse` source text access](#jsonparse-source-text-access)\n      - [Well-formed `JSON.stringify`](#well-formed-jsonstringify)\n      - [Well-formed unicode strings](#well-formed-unicode-strings)\n      - [New `Set` methods](#new-set-methods)\n      - [`Map` upsert](#map-upsert)\n      - [`Math.sumPrecise`](#mathsumprecise)\n    - [Stage 3 proposals](#stage-3-proposals)\n      - [Joint iteration](#joint-iteration)\n      - [`Symbol.metadata` for decorators metadata proposal](#symbolmetadata-for-decorators-metadata-proposal)\n    - [Stage 2.7 proposals](#stage-27-proposals)\n      - [`Iterator` chunking](#iterator-chunking)\n    - [Stage 2 proposals](#stage-2-proposals)\n      - [`AsyncIterator` helpers](#asynciterator-helpers)\n      - [`Iterator.range`](#iteratorrange)\n      - [`Array.isTemplateObject`](#arrayistemplateobject)\n      - [`Number.prototype.clamp`](#numberprototypeclamp)\n      - [`String.dedent`](#stringdedent)\n      - [`Symbol` predicates](#symbol-predicates)\n      - [`Symbol.customMatcher` for extractors](#symbolcustommatcher-for-extractors)\n    - [Stage 1 proposals](#stage-1-proposals)\n      - [`Observable`](#observable)\n      - [New collections methods](#new-collections-methods)\n      - [`.of` and `.from` methods on collection constructors](#of-and-from-methods-on-collection-constructors)\n      - [`compositeKey` and `compositeSymbol`](#compositekey-and-compositesymbol)\n      - [`Array` filtering](#array-filtering)\n      - [`Array` deduplication](#array-deduplication)\n      - [`DataView` get \u002F set `Uint8Clamped` methods](#dataview-get-set-iint8clamped-methods)\n      - [`Number.fromString`](#numberfromstring)\n      - [`String.cooked`](#stringcooked)\n      - [`String.prototype.codePoints`](#stringprototypecodepoints)\n      - [`Symbol.customMatcher` for pattern matching](#symbolcustommatcher-for-pattern-matching)\n    - [Stage 0 proposals](#stage-0-proposals)\n      - [`Function.prototype.demethodize`](#functionprototypedemethodize)\n      - [`Function.{ isCallable, isConstructor }`](#function-iscallable-isconstructor-)\n    - [Pre-stage 0 proposals](#pre-stage-0-proposals)\n      - [`Reflect` metadata](#reflect-metadata)\n  - [Web standards](#web-standards)\n    - [`self`](#self)\n    - [`structuredClone`](#structuredclone)\n    - [Base64 utility methods](#base64-utility-methods)\n    - [`setTimeout` and `setInterval`](#settimeout-and-setinterval)\n    - [`setImmediate`](#setimmediate)\n    - [`queueMicrotask`](#queuemicrotask)\n    - [`URL` and `URLSearchParams`](#url-and-urlsearchparams)\n    - [`DOMException`](#domexception)\n    - [iterable DOM collections](#iterable-dom-collections)\n  - [Iteration helpers](#iteration-helpers)\n- [Missing polyfills](#missing-polyfills)\n- [Contributing](.\u002FCONTRIBUTING.md)\n- [Security policy](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002FSECURITY.md)\n- [Changelog](.\u002FCHANGELOG.md)\n\n## Usage[⬆](#index)\n### Installation:[⬆](#index)\n```sh\n\u002F\u002F global version\nnpm install --save core-js@3.49.0\n\u002F\u002F version without global namespace pollution\nnpm install --save core-js-pure@3.49.0\n\u002F\u002F bundled global version\nnpm install --save core-js-bundle@3.49.0\n```\n\n### `postinstall` message[⬆](#index)\nThe `core-js` project needs your help, so the package shows a message about it after installation. If it causes problems for you, you can disable it:\n```sh\nADBLOCK=true npm install\n\u002F\u002F or\nDISABLE_OPENCOLLECTIVE=true npm install\n\u002F\u002F or\nnpm install --loglevel silent\n```\n\n### CommonJS API[⬆](#index)\nYou can import only-required-for-you polyfills, like in the examples at the top of `README.md`. Available CommonJS entry points for all polyfilled methods \u002F constructors and namespaces. Just some examples:\n\n```ts\n\u002F\u002F polyfill all `core-js` features, including early-stage proposals:\nimport \"core-js\";\n\u002F\u002F or:\nimport \"core-js\u002Ffull\";\n\u002F\u002F polyfill all actual features - stable ES, web standards and stage 3 ES proposals:\nimport \"core-js\u002Factual\";\n\u002F\u002F polyfill only stable features - ES and web standards:\nimport \"core-js\u002Fstable\";\n\u002F\u002F polyfill only stable ES features:\nimport \"core-js\u002Fes\";\n\n\u002F\u002F if you want to polyfill `Set`:\n\u002F\u002F all `Set`-related features, with early-stage ES proposals:\nimport \"core-js\u002Ffull\u002Fset\";\n\u002F\u002F stable required for `Set` ES features, features from web standards and stage 3 ES proposals:\nimport \"core-js\u002Factual\u002Fset\";\n\u002F\u002F stable required for `Set` ES features and features from web standards\n\u002F\u002F (DOM collections iterator in this case):\nimport \"core-js\u002Fstable\u002Fset\";\n\u002F\u002F only stable ES features required for `Set`:\nimport \"core-js\u002Fes\u002Fset\";\n\u002F\u002F the same without global namespace pollution:\nimport Set from \"core-js-pure\u002Ffull\u002Fset\";\nimport Set from \"core-js-pure\u002Factual\u002Fset\";\nimport Set from \"core-js-pure\u002Fstable\u002Fset\";\nimport Set from \"core-js-pure\u002Fes\u002Fset\";\n\n\u002F\u002F if you want to polyfill just the required methods:\nimport \"core-js\u002Ffull\u002Fset\u002Fintersection\";\nimport \"core-js\u002Factual\u002Farray\u002Ffind-last\";\nimport \"core-js\u002Fstable\u002Fqueue-microtask\";\nimport \"core-js\u002Fes\u002Farray\u002Ffrom\";\n\n\u002F\u002F polyfill iterator helpers proposal:\nimport \"core-js\u002Fproposals\u002Fiterator-helpers\";\n\u002F\u002F polyfill all stage 2+ proposals:\nimport \"core-js\u002Fstage\u002F2\";\n```\n\n> [!TIP]\n> The usage of the `\u002Factual\u002F` namespace is recommended since it includes all actual JavaScript features and does not include unstable early-stage proposals that are available mainly for experiments.\n\n> [!WARNING]\n> - The `modules` path is an internal API, does not inject all required dependencies and can be changed in minor or patch releases. Use it only for a custom build and\u002For if you know what are you doing.\n> - If you use `core-js` with the extension of native objects, recommended to load all `core-js` modules at the top of the entry point of your application, otherwise, you can have conflicts.\n>   - For example, Google Maps use their own `Symbol.iterator`, conflicting with `Array.from`, `URLSearchParams` and \u002F or something else from `core-js`, see [related issues](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fsearch?q=Google+Maps&type=Issues).\n>   - Such conflicts are also resolvable by discovering and manually adding each conflicting entry from `core-js`.\n> - `core-js` is extremely modular and uses a lot of very tiny modules, because of that for usage in browsers bundle up `core-js` instead of a usage loader for each file, otherwise, you will have hundreds of requests.\n\n#### CommonJS and prototype methods without global namespace pollution[⬆](#index)\nIn the `pure` version, we can't pollute prototypes of native constructors. Because of that, prototype methods transformed into static methods like in examples above. But with transpilers, we can use one more trick - [bind operator and virtual methods](https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-bind-operator). Special for that, available `\u002Fvirtual\u002F` entry points. Example:\n```ts\nimport fill from 'core-js-pure\u002Factual\u002Farray\u002Fvirtual\u002Ffill';\nimport findIndex from 'core-js-pure\u002Factual\u002Farray\u002Fvirtual\u002Ffind-index';\n\nArray(10)::fill(0).map((a, b) => b * b)::findIndex(it => it && !(it % 8)); \u002F\u002F => 4\n```\n\n> [!WARNING]\n> The bind operator is an early-stage ECMAScript proposal and usage of this syntax can be dangerous.\n\n### Babel[⬆](#index)\n\n`core-js` is integrated with `babel` and is the base for polyfilling-related `babel` features:\n\n#### `@babel\u002Fpolyfill`[⬆](#index)\n\n[`@babel\u002Fpolyfill`](https:\u002F\u002Fbabeljs.io\u002Fdocs\u002Fusage\u002Fpolyfill) [**IS** just the import of stable `core-js` features and `regenerator-runtime`](https:\u002F\u002Fgithub.com\u002Fbabel\u002Fbabel\u002Fblob\u002Fc8bb4500326700e7dc68ce8c4b90b6482c48d82f\u002Fpackages\u002Fbabel-polyfill\u002Fsrc\u002Findex.js) for generators and async functions, so loading `@babel\u002Fpolyfill` means loading the global version of `core-js` without ES proposals.\n\nNow it's deprecated in favor of separate inclusion of required parts of `core-js` and `regenerator-runtime` and, for backward compatibility, `@babel\u002Fpolyfill` is still based on `core-js@2`.\n\nAs a full equal of `@babel\u002Fpolyfill`, you can use the following:\n```js\nimport 'core-js\u002Fstable';\nimport 'regenerator-runtime\u002Fruntime';\n```\n\n#### `@babel\u002Fpreset-env`[⬆](#index)\n\n[`@babel\u002Fpreset-env`](https:\u002F\u002Fgithub.com\u002Fbabel\u002Fbabel\u002Ftree\u002Fmaster\u002Fpackages\u002Fbabel-preset-env) has `useBuiltIns` option, which optimizes the use of the global version of `core-js`. With `useBuiltIns` option, you should also set `corejs` option to the used version of `core-js`, like `corejs: '3.49'`.\n\n> [!IMPORTANT]\n> It is recommended to specify the used minor `core-js` version, like `corejs: '3.49'`, instead of `corejs: 3`, since with `corejs: 3` will not be injected modules which were added in minor `core-js` releases.\n\n---\n\n- `useBuiltIns: 'entry'` replaces imports of `core-js` to import only required for a target environment modules. So, for example,\n```js\nimport 'core-js\u002Fstable';\n```\nwith `chrome 71` target will be replaced just to:\n```js\nimport 'core-js\u002Fmodules\u002Fes.array.unscopables.flat';\nimport 'core-js\u002Fmodules\u002Fes.array.unscopables.flat-map';\nimport 'core-js\u002Fmodules\u002Fes.object.from-entries';\nimport 'core-js\u002Fmodules\u002Fweb.immediate';\n```\nIt works for all entry points of global version of `core-js` and their combinations, for example for\n```js\nimport 'core-js\u002Fes';\nimport 'core-js\u002Fproposals\u002Fset-methods';\nimport 'core-js\u002Ffull\u002Fset\u002Fmap';\n```\nwith `chrome 71` target you will have as the result:\n```js\nimport 'core-js\u002Fmodules\u002Fes.array.unscopables.flat';\nimport 'core-js\u002Fmodules\u002Fes.array.unscopables.flat-map';\nimport 'core-js\u002Fmodules\u002Fes.object.from-entries';\nimport 'core-js\u002Fmodules\u002Fesnext.set.difference';\nimport 'core-js\u002Fmodules\u002Fesnext.set.intersection';\nimport 'core-js\u002Fmodules\u002Fesnext.set.is-disjoint-from';\nimport 'core-js\u002Fmodules\u002Fesnext.set.is-subset-of';\nimport 'core-js\u002Fmodules\u002Fesnext.set.is-superset-of';\nimport 'core-js\u002Fmodules\u002Fesnext.set.map';\nimport 'core-js\u002Fmodules\u002Fesnext.set.symmetric-difference';\nimport 'core-js\u002Fmodules\u002Fesnext.set.union';\n```\n\n- `useBuiltIns: 'usage'` adds to the top of each file import of polyfills for features used in this file and not supported by target environments, so for:\n```js\n\u002F\u002F first file:\nlet set = new Set([1, 2, 3]);\n```\n```js\n\u002F\u002F second file:\nlet array = Array.of(1, 2, 3);\n```\nif the target contains an old environment like `IE 11` we will have something like:\n```js\n\u002F\u002F first file:\nimport 'core-js\u002Fmodules\u002Fes.array.iterator';\nimport 'core-js\u002Fmodules\u002Fes.object.to-string';\nimport 'core-js\u002Fmodules\u002Fes.set';\n\nvar set = new Set([1, 2, 3]);\n```\n```js\n\u002F\u002F second file:\nimport 'core-js\u002Fmodules\u002Fes.array.of';\n\nvar array = Array.of(1, 2, 3);\n```\n\nBy default, `@babel\u002Fpreset-env` with `useBuiltIns: 'usage'` option only polyfills stable features, but you can enable polyfilling of proposals by the `proposals` option, as `corejs: { version: '3.49', proposals: true }`.\n\n> [!IMPORTANT]\n> In the case of `useBuiltIns: 'usage'`, you should not add `core-js` imports by yourself, they will be added automatically.\n\n#### `@babel\u002Fruntime`[⬆](#index)\n\n[`@babel\u002Fruntime`](https:\u002F\u002Fbabeljs.io\u002Fdocs\u002Fplugins\u002Ftransform-runtime\u002F) with `corejs: 3` option simplifies work with the `core-js-pure`. It automatically replaces the usage of modern features from the JS standard library to imports from the version of `core-js` without global namespace pollution, so instead of:\n```js\nimport from from 'core-js-pure\u002Fstable\u002Farray\u002Ffrom';\nimport flat from 'core-js-pure\u002Fstable\u002Farray\u002Fflat';\nimport Set from 'core-js-pure\u002Fstable\u002Fset';\nimport Promise from 'core-js-pure\u002Fstable\u002Fpromise';\n\nfrom(new Set([1, 2, 3, 2, 1]));\nflat([1, [2, 3], [4, [5]]], 2);\nPromise.resolve(32).then(x => console.log(x));\n```\nyou can write just:\n```js\nArray.from(new Set([1, 2, 3, 2, 1]));\n[1, [2, 3], [4, [5]]].flat(2);\nPromise.resolve(32).then(x => console.log(x));\n```\n\nBy default, `@babel\u002Fruntime` only polyfills stable features, but like in `@babel\u002Fpreset-env`, you can enable polyfilling of proposals by `proposals` option, as `corejs: { version: 3, proposals: true }`.\n\n> [!WARNING]\n> If you use `@babel\u002Fpreset-env` and `@babel\u002Fruntime` together, use `corejs` option only in one place since it's duplicate functionality and will cause conflicts.\n\n### swc[⬆](#index)\n\nFast JavaScript transpiler `swc` [contains integration with `core-js`](https:\u002F\u002Fswc.rs\u002Fdocs\u002Fconfiguration\u002Fsupported-browsers), that optimizes work with the global version of `core-js`. [Like `@babel\u002Fpreset-env`](#babelpreset-env), it has 2 modes: `usage` and `entry`, but `usage` mode still works not so well as in `babel`. Example of configuration in `.swcrc`:\n```json\n{\n  \"env\": {\n    \"targets\": \"> 0.25%, not dead\",\n    \"mode\": \"entry\",\n    \"coreJs\": \"3.49\"\n  }\n}\n```\n\n### Configurable level of aggressiveness[⬆](#index)\n\nBy default, `core-js` sets polyfills only when they are required. That means that `core-js` checks if a feature is available and works correctly or not and if it has no problems, `core-js` uses native implementation.\n\nBut sometimes `core-js` feature detection could be too strict for your case. For example, `Promise` constructor requires the support of unhandled rejection tracking and `@@species`.\n\nSometimes we could have an inverse problem - a knowingly broken environment with problems not covered by `core-js` feature detection.\n\nFor those cases, we could redefine this behavior for certain polyfills:\n\n```js\nconst configurator = require('core-js\u002Fconfigurator');\n\nconfigurator({\n  useNative: ['Promise'],                                 \u002F\u002F polyfills will be used only if natives are completely unavailable\n  usePolyfill: ['Array.from', 'String.prototype.padEnd'], \u002F\u002F polyfills will be used anyway\n  useFeatureDetection: ['Map', 'Set'],                    \u002F\u002F default behavior\n});\n\nrequire('core-js\u002Factual');\n```\n\nIt does not work with some features. Also, if you change the default behavior, even `core-js` internals may not work correctly.\n\n### Custom build[⬆](#index)\n\nFor some cases could be useful to exclude some `core-js` features or generate a polyfill for target engines. You could use [`core-js-builder`](\u002Fpackages\u002Fcore-js-builder) package for that.\n\n## Supported engines and compatibility data[⬆](#index)\n\n`core-js` tries to support all possible JS engines and environments with ES3 support. Some features have a higher lower bar - for example, *some* accessors can properly work only from ES5, promises require a way to set a microtask or a task, etc.\n\nHowever, I have no possibility to test `core-js` absolutely everywhere - for example, testing in IE7- and some other ancient was stopped. The list of definitely supported engines you can see in the compatibility table by the link below. [Write](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues) if you have issues or questions with the support of any engine.\n\n`core-js` project provides (as [`core-js-compat`](\u002Fpackages\u002Fcore-js-compat) package) all required data about the necessity of `core-js` modules, entry points, and tools for work with it - it's useful for integration with tools like `babel` or `swc`. If you wanna help, you could take a look at the related section of [`CONTRIBUTING.md`](\u002FCONTRIBUTING.md#how-to-update-core-js-compat-data). The visualization of compatibility data and the browser tests runner is available [here](http:\u002F\u002Fzloirock.github.io\u002Fcore-js\u002Fmaster\u002Fcompat\u002F), the example:\n\n![compat-table](https:\u002F\u002Fuser-images.githubusercontent.com\u002F2213682\u002F217452234-ccdcfc5a-c7d3-40d1-ab3f-86902315b8c3.png)\n\n## Features:[⬆](#index)\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\n```\n\n### ECMAScript[⬆](#index)\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\u002Fes\n```\n#### ECMAScript: Object[⬆](#index)\nModules [`es.object.assign`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.assign.js), [`es.object.create`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.create.js), [`es.object.define-getter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.define-getter.js), [`es.object.define-property`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.define-property.js), [`es.object.define-properties`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.define-properties.js), [`es.object.define-setter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.define-setter.js), [`es.object.entries`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.entries.js), [`es.object.freeze`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.freeze.js), [`es.object.from-entries`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.from-entries.js), [`es.object.get-own-property-descriptor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.get-own-property-descriptor.js), [`es.object.get-own-property-descriptors`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.get-own-property-descriptors.js), [`es.object.get-own-property-names`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.get-own-property-names.js), [`es.object.get-prototype-of`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.get-prototype-of.js), [`es.object.group-by`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.group-by.js), [`es.object.has-own`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.has-own.js), [`es.object.is`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.is.js), [`es.object.is-extensible`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.is-extensible.js), [`es.object.is-frozen`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.is-frozen.js), [`es.object.is-sealed`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.is-sealed.js), [`es.object.keys`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.keys.js), [`es.object.lookup-setter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.lookup-setter.js), [`es.object.lookup-getter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.lookup-getter.js), [`es.object.prevent-extensions`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.prevent-extensions.js), [`es.object.proto`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.proto.js), [`es.object.to-string`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.to-string.js), [`es.object.seal`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.seal.js), [`es.object.set-prototype-of`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.set-prototype-of.js), [`es.object.values`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.object.values.js).\n\n```ts\nclass Object {\n  toString(): string; \u002F\u002F ES2015+ fix: @@toStringTag support\n  __defineGetter__(property: PropertyKey, getter: Function): void;\n  __defineSetter__(property: PropertyKey, setter: Function): void;\n  __lookupGetter__(property: PropertyKey): Function | void;\n  __lookupSetter__(property: PropertyKey): Function | void;\n  __proto__: Object | null; \u002F\u002F required a way setting of prototype - will not in IE10-, it's for modern engines like Deno\n  static assign(target: Object, ...sources: Array\u003CObject>): Object;\n  static create(prototype: Object | null, properties?: { [property: PropertyKey]: PropertyDescriptor }): Object;\n  static defineProperties(object: Object, properties: { [property: PropertyKey]: PropertyDescriptor })): Object;\n  static defineProperty(object: Object, property: PropertyKey, attributes: PropertyDescriptor): Object;\n  static entries(object: Object): Array\u003C[string, mixed]>;\n  static freeze(object: any): any;\n  static fromEntries(iterable: Iterable\u003C[key, value]>): Object;\n  static getOwnPropertyDescriptor(object: any, property: PropertyKey): PropertyDescriptor | void;\n  static getOwnPropertyDescriptors(object: any): { [property: PropertyKey]: PropertyDescriptor };\n  static getOwnPropertyNames(object: any): Array\u003Cstring>;\n  static getPrototypeOf(object: any): Object | null;\n  static groupBy(items: Iterable, callbackfn: (value: any, index: number) => key): { [key]: Array\u003Cmixed> };\n  static hasOwn(object: object, key: PropertyKey): boolean;\n  static is(value1: any, value2: any): boolean;\n  static isExtensible(object: any): boolean;\n  static isFrozen(object: any): boolean;\n  static isSealed(object: any): boolean;\n  static keys(object: any): Array\u003Cstring>;\n  static preventExtensions(object: any): any;\n  static seal(object: any): any;\n  static setPrototypeOf(target: any, prototype: Object | null): any; \u002F\u002F required __proto__ - IE11+\n  static values(object: any): Array\u003Cmixed>;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fassign\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fis\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fset-prototype-of\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fget-prototype-of\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fcreate\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fdefine-property\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fdefine-properties\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fget-own-property-descriptor\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fget-own-property-descriptors\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fgroup-by\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fhas-own\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fkeys\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fvalues\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fentries\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fget-own-property-names\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Ffreeze\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Ffrom-entries\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fseal\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fprevent-extensions\ncore-js\u002Fes|stable|actual|full\u002Fobject\u002Fproto\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fis-frozen\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fis-sealed\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fis-extensible\ncore-js\u002Fes|stable|actual|full\u002Fobject\u002Fto-string\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fdefine-getter\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Fdefine-setter\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Flookup-getter\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fobject\u002Flookup-setter\n```\n*Examples*:\n```js\nlet foo = { q: 1, w: 2 };\nlet bar = { e: 3, r: 4 };\nlet baz = { t: 5, y: 6 };\nObject.assign(foo, bar, baz); \u002F\u002F => foo = { q: 1, w: 2, e: 3, r: 4, t: 5, y: 6 }\n\nObject.is(NaN, NaN); \u002F\u002F => true\nObject.is(0, -0);    \u002F\u002F => false\nObject.is(42, 42);   \u002F\u002F => true\nObject.is(42, '42'); \u002F\u002F => false\n\nfunction Parent() { \u002F* empty *\u002F }\nfunction Child() { \u002F* empty *\u002F }\nObject.setPrototypeOf(Child.prototype, Parent.prototype);\nnew Child() instanceof Child;  \u002F\u002F => true\nnew Child() instanceof Parent; \u002F\u002F => true\n\n({\n  [Symbol.toStringTag]: 'Foo',\n}).toString(); \u002F\u002F => '[object Foo]'\n\nObject.keys('qwe'); \u002F\u002F => ['0', '1', '2']\nObject.getPrototypeOf('qwe') === String.prototype; \u002F\u002F => true\n\nObject.values({ a: 1, b: 2, c: 3 });  \u002F\u002F => [1, 2, 3]\nObject.entries({ a: 1, b: 2, c: 3 }); \u002F\u002F => [['a', 1], ['b', 2], ['c', 3]]\n\nfor (let [key, value] of Object.entries({ a: 1, b: 2, c: 3 })) {\n  console.log(key);   \u002F\u002F => 'a', 'b', 'c'\n  console.log(value); \u002F\u002F => 1, 2, 3\n}\n\n\u002F\u002F Shallow object cloning with prototype and descriptors:\nlet copy = Object.create(Object.getPrototypeOf(object), Object.getOwnPropertyDescriptors(object));\n\u002F\u002F Mixin:\nObject.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n\nconst map = new Map([['a', 1], ['b', 2]]);\nObject.fromEntries(map); \u002F\u002F => { a: 1, b: 2 }\n\nclass Unit {\n  constructor(id) {\n    this.id = id;\n  }\n  toString() {\n    return `unit${ this.id }`;\n  }\n}\n\nconst units = new Set([new Unit(101), new Unit(102)]);\n\nObject.fromEntries(units.entries()); \u002F\u002F => { unit101: Unit { id: 101 }, unit102: Unit { id: 102 } }\n\nObject.hasOwn({ foo: 42 }, 'foo'); \u002F\u002F => true\nObject.hasOwn({ foo: 42 }, 'bar'); \u002F\u002F => false\nObject.hasOwn({}, 'toString');     \u002F\u002F => false\n\nObject.groupBy([1, 2, 3, 4, 5], it => it % 2); \u002F\u002F => { 1: [1, 3, 5], 0: [2, 4] }\n```\n\n#### ECMAScript: Function[⬆](#index)\nModules [`es.function.name`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.function.name.js), [`es.function.has-instance`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.function.has-instance.js). Just ES5: [`es.function.bind`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.function.bind.js).\n```ts\nclass Function {\n  name: string;\n  bind(thisArg: any, ...args: Array\u003Cmixed>): Function;\n  @@hasInstance(value: any): boolean;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js\u002Fes|stable|actual|full\u002Ffunction\ncore-js\u002Fes|stable|actual|full\u002Ffunction\u002Fname\ncore-js\u002Fes|stable|actual|full\u002Ffunction\u002Fhas-instance\ncore-js(-pure)\u002Fes|stable|actual|full\u002Ffunction\u002Fbind\ncore-js(-pure)\u002Fes|stable|actual|full\u002Ffunction\u002Fvirtual\u002Fbind\n```\n[*Example*](https:\u002F\u002Ftinyurl.com\u002F22na9nbm):\n```js\n(function foo() { \u002F* empty *\u002F }).name; \u002F\u002F => 'foo'\n\nconsole.log.bind(console, 42)(43); \u002F\u002F => 42 43\n```\n\n#### ECMAScript: Error[⬆](#index)\nModules [`es.aggregate-error`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.aggregate-error.js), [`es.aggregate-error.cause`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.aggregate-error.cause.js), [`es.error.cause`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.error.cause.js), [`es.error.is-error`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.error.is-error.js), [`es.suppressed-error.constructor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.suppressed-error.constructor.js), [`es.error.to-string`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.error.to-string.js).\n```ts\nclass Error {\n  static isError(value: any): boolean;\n  constructor(message: string, { cause: any }): %Error%;\n  toString(): string; \u002F\u002F different fixes\n}\n\nclass [\n  EvalError,\n  RangeError,\n  ReferenceError,\n  SyntaxError,\n  TypeError,\n  URIError,\n  WebAssembly.CompileError,\n  WebAssembly.LinkError,\n  WebAssembly.RuntimeError,\n] extends Error {\n  constructor(message: string, { cause: any }): %Error%;\n}\n\nclass AggregateError extends Error {\n  constructor(errors: Iterable, message?: string, { cause: any }?): AggregateError;\n  errors: Array\u003Cany>;\n  message: string;\n  cause: any;\n}\n\nclass SuppressedError extends Error {\n  constructor(error: any, suppressed: any, message?: string): SuppressedError;\n  error: any;\n  suppressed: any;\n  message: string;\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js\u002Fes|stable|actual|full\u002Ferror\ncore-js\u002Fes|stable|actual|full\u002Ferror\u002Fconstructor\ncore-js(-pure)\u002Fes|stable|actual|full\u002Ferror\u002Fis-error\ncore-js\u002Fes|stable|actual|full\u002Ferror\u002Fto-string\ncore-js(-pure)\u002Fes|stable|actual|full\u002Faggregate-error\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fsuppressed-error\n```\n[*Example*](https:\u002F\u002Fis.gd\u002F1SufcH):\n```js\nconst error1 = new TypeError('Error 1');\nconst error2 = new TypeError('Error 2');\nconst aggregate = new AggregateError([error1, error2], 'Collected errors');\naggregate.errors[0] === error1; \u002F\u002F => true\naggregate.errors[1] === error2; \u002F\u002F => true\n\nconst cause = new TypeError('Something wrong');\nconst error = new TypeError('Here explained what`s wrong', { cause });\nerror.cause === cause; \u002F\u002F => true\n\nError.prototype.toString.call({ message: 1, name: 2 }) === '2: 1'; \u002F\u002F => true\n```\n\n[*Example*](https:\u002F\u002Ftinyurl.com\u002F23nauwoz):\n```js\nError.isError(new Error('error')); \u002F\u002F => true\nError.isError(new TypeError('error')); \u002F\u002F => true\nError.isError(new DOMException('error')); \u002F\u002F => true\n\nError.isError(null); \u002F\u002F => false\nError.isError({}); \u002F\u002F => false\nError.isError(Object.create(Error.prototype)); \u002F\u002F => false\n```\n\n> [!WARNING]\n> We have no bulletproof way to polyfill this `Error.isError` \u002F check if the object is an error, so it's an enough naive implementation.\n\n#### ECMAScript: Array[⬆](#index)\nModules [`es.array.from`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.from.js), [`es.array.from-async`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.from-async.js), [`es.array.is-array`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.is-array.js), [`es.array.of`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.of.js), [`es.array.copy-within`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.copy-within.js), [`es.array.fill`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.fill.js), [`es.array.find`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.find.js), [`es.array.find-index`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.find-index.js), [`es.array.find-last`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.find-last.js), [`es.array.find-last-index`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.find-last-index.js), [`es.array.iterator`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.iterator.js), [`es.array.includes`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.includes.js), [`es.array.push`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.push.js), [`es.array.slice`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.slice.js), [`es.array.join`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.join.js), [`es.array.unshift`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.unshift.js), [`es.array.index-of`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.index-of.js), [`es.array.last-index-of`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.last-index-of.js), [`es.array.every`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.every.js), [`es.array.some`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.some.js), [`es.array.for-each`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.for-each.js), [`es.array.map`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.map.js), [`es.array.filter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.filter.js), [`es.array.reduce`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.reduce.js), [`es.array.reduce-right`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.reduce-right.js), [`es.array.reverse`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.reverse.js), [`es.array.sort`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.sort.js), [`es.array.flat`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.flat.js), [`es.array.flat-map`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.flat-map.js), [`es.array.unscopables.flat`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.unscopables.flat.js), [`es.array.unscopables.flat-map`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.unscopables.flat-map.js), [`es.array.at`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.at.js), [`es.array.to-reversed`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.to-reversed.js), [`es.array.to-sorted`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.to-sorted.js), [`es.array.to-spliced`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.to-spliced.js), [`es.array.with`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.array.with.js).\n```ts\nclass Array {\n  at(index: int): any;\n  concat(...args: Array\u003Cmixed>): Array\u003Cmixed>; \u002F\u002F with adding support of @@isConcatSpreadable and @@species\n  copyWithin(target: number, start: number, end?: number): this;\n  entries(): Iterator\u003C[index, value]>;\n  every(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): boolean;\n  fill(value: any, start?: number, end?: number): this;\n  filter(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): Array\u003Cmixed>; \u002F\u002F with adding support of @@species\n  find(callbackfn: (value: any, index: number, target: any) => boolean), thisArg?: any): any;\n  findIndex(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): uint;\n  findLast(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): any;\n  findLastIndex(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): uint;\n  flat(depthArg?: number = 1): Array\u003Cmixed>;\n  flatMap(mapFn: (value: any, index: number, target: any) => any, thisArg: any): Array\u003Cmixed>;\n  forEach(callbackfn: (value: any, index: number, target: any) => void, thisArg?: any): void;\n  includes(searchElement: any, from?: number): boolean;\n  indexOf(searchElement: any, from?: number): number;\n  join(separator: string = ','): string;\n  keys(): Iterator\u003Cindex>;\n  lastIndexOf(searchElement: any, from?: number): number;\n  map(mapFn: (value: any, index: number, target: any) => any, thisArg?: any): Array\u003Cmixed>; \u002F\u002F with adding support of @@species\n  push(...args: Array\u003Cmixed>): uint;\n  reduce(callbackfn: (memo: any, value: any, index: number, target: any) => any, initialValue?: any): any;\n  reduceRight(callbackfn: (memo: any, value: any, index: number, target: any) => any, initialValue?: any): any;\n  reverse(): this; \u002F\u002F Safari 12.0 bug fix\n  slice(start?: number, end?: number): Array\u003Cmixed>; \u002F\u002F with adding support of @@species\n  splice(start?: number, deleteCount?: number, ...items: Array\u003Cmixed>): Array\u003Cmixed>; \u002F\u002F with adding support of @@species\n  some(callbackfn: (value: any, index: number, target: any) => boolean, thisArg?: any): boolean;\n  sort(comparefn?: (a: any, b: any) => number): this; \u002F\u002F with modern behavior like stable sort\n  toReversed(): Array\u003Cmixed>;\n  toSpliced(start?: number, deleteCount?: number, ...items: Array\u003Cmixed>): Array\u003Cmixed>;\n  toSorted(comparefn?: (a: any, b: any) => number): Array\u003Cmixed>;\n  unshift(...args: Array\u003Cmixed>): uint;\n  values(): Iterator\u003Cvalue>;\n  with(index: includes, value: any): Array\u003Cmixed>;\n  @@iterator(): Iterator\u003Cvalue>;\n  @@unscopables: { [newMethodNames: string]: true };\n  static from(items: Iterable | ArrayLike, mapFn?: (value: any, index: number) => any, thisArg?: any): Array\u003Cmixed>;\n  static fromAsync(asyncItems: AsyncIterable | Iterable | ArrayLike, mapfn?: (value: any, index: number) => any, thisArg?: any): Array;\n  static isArray(value: any): boolean;\n  static of(...args: Array\u003Cmixed>): Array\u003Cmixed>;\n}\n\nclass Arguments {\n  @@iterator(): Iterator\u003Cvalue>; \u002F\u002F available only in core-js methods\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray\u002Ffrom\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray\u002Ffrom-async\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray\u002Fof\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray\u002Fis-array\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fconcat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fcopy-within\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fentries\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fevery\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffill\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffilter\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffind\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffind-index\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffind-last\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffind-last-index\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fflat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fflat-map\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Ffor-each\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fincludes\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Findex-of\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fiterator\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fjoin\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fkeys\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Flast-index-of\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fmap\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fpush\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Freduce\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Freduce-right\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Freverse\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fslice\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fsome\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fsort\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fsplice\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fto-reversed\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fto-sorted\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fto-spliced\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Funshift\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fvalues\ncore-js(-pure)\u002Fes|stable|actual|full\u002Farray(\u002Fvirtual)\u002Fwith\n```\n[*Examples*](https:\u002F\u002Ftinyurl.com\u002F2oaa8x2x):\n```js\nArray.from(new Set([1, 2, 3, 2, 1]));        \u002F\u002F => [1, 2, 3]\nArray.from({ 0: 1, 1: 2, 2: 3, length: 3 }); \u002F\u002F => [1, 2, 3]\nArray.from('123', Number);                   \u002F\u002F => [1, 2, 3]\nArray.from('123', it => it ** 2);            \u002F\u002F => [1, 4, 9]\n\nArray.of(1);       \u002F\u002F => [1]\nArray.of(1, 2, 3); \u002F\u002F => [1, 2, 3]\n\nlet array = ['a', 'b', 'c'];\n\nfor (let value of array) console.log(value);          \u002F\u002F => 'a', 'b', 'c'\nfor (let value of array.values()) console.log(value); \u002F\u002F => 'a', 'b', 'c'\nfor (let key of array.keys()) console.log(key);       \u002F\u002F => 0, 1, 2\nfor (let [key, value] of array.entries()) {\n  console.log(key);                                   \u002F\u002F => 0, 1, 2\n  console.log(value);                                 \u002F\u002F => 'a', 'b', 'c'\n}\n\nfunction isOdd(value) {\n  return value % 2;\n}\n[4, 8, 15, 16, 23, 42].find(isOdd);      \u002F\u002F => 15\n[4, 8, 15, 16, 23, 42].findIndex(isOdd); \u002F\u002F => 2\n[1, 2, 3, 4].findLast(isOdd);            \u002F\u002F => 3\n[1, 2, 3, 4].findLastIndex(isOdd);       \u002F\u002F => 2\n\nArray(5).fill(42); \u002F\u002F => [42, 42, 42, 42, 42]\n\n[1, 2, 3, 4, 5].copyWithin(0, 3); \u002F\u002F => [4, 5, 3, 4, 5]\n\n[1, 2, 3].includes(2);        \u002F\u002F => true\n[1, 2, 3].includes(4);        \u002F\u002F => false\n[1, 2, 3].includes(2, 2);     \u002F\u002F => false\n\n[NaN].indexOf(NaN);           \u002F\u002F => -1\n[NaN].includes(NaN);          \u002F\u002F => true\nArray(1).indexOf(undefined);  \u002F\u002F => -1\nArray(1).includes(undefined); \u002F\u002F => true\n\n[1, [2, 3], [4, 5]].flat();    \u002F\u002F => [1, 2, 3, 4, 5]\n[1, [2, [3, [4]]], 5].flat();  \u002F\u002F => [1, 2, [3, [4]], 5]\n[1, [2, [3, [4]]], 5].flat(3); \u002F\u002F => [1, 2, 3, 4, 5]\n\n[{ a: 1, b: 2 }, { a: 3, b: 4 }, { a: 5, b: 6 }].flatMap(it => [it.a, it.b]); \u002F\u002F => [1, 2, 3, 4, 5, 6]\n\n[1, 2, 3].at(1);  \u002F\u002F => 2\n[1, 2, 3].at(-1); \u002F\u002F => 3\n\nconst sequence = [1, 2, 3];\nsequence.toReversed(); \u002F\u002F => [3, 2, 1]\nsequence; \u002F\u002F => [1, 2, 3]\n\nconst initialArray = [1, 2, 3, 4];\ninitialArray.toSpliced(1, 2, 5, 6, 7); \u002F\u002F => [1, 5, 6, 7, 4]\ninitialArray; \u002F\u002F => [1, 2, 3, 4]\n\nconst outOfOrder = [3, 1, 2];\noutOfOrder.toSorted(); \u002F\u002F => [1, 2, 3]\noutOfOrder; \u002F\u002F => [3, 1, 2]\n\nconst correctionNeeded = [1, 1, 3];\ncorrectionNeeded.with(1, 2); \u002F\u002F => [1, 2, 3]\ncorrectionNeeded; \u002F\u002F => [1, 1, 3]\n```\n\n[*`Array.fromAsync` example*](https:\u002F\u002Ftinyurl.com\u002F2bt9bhwn):\n```js\nawait Array.fromAsync((async function * () { yield * [1, 2, 3]; })(), i => i ** 2); \u002F\u002F => [1, 4, 9]\n```\n\n#### ECMAScript: Iterator[⬆](#index)\nModules [`es.iterator.constructor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js), [`es.iterator.concat`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.concat.js), [`es.iterator.dispose`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.dispose.js), [`es.iterator.drop`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.drop.js), [`es.iterator.every`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js), [`es.iterator.filter`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js), [`es.iterator.find`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.find.js), [`es.iterator.flat-map`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.flat-map.js), [`es.iterator.for-each`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js), [`es.iterator.from`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.from.js), [`es.iterator.map`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js), [`es.iterator.reduce`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js), [`es.iterator.some`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js), [`es.iterator.take`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.take.js), [`es.iterator.to-array`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.iterator.to-array.js)\n```ts\nclass Iterator {\n  static concat(...items: Array\u003CIterableObject>): Iterator\u003Cany>;\n  static from(iterable: Iterable\u003Cany> | Iterator\u003Cany>): Iterator\u003Cany>;\n  drop(limit: uint): Iterator\u003Cany>;\n  every(callbackfn: (value: any, counter: uint) => boolean): boolean;\n  filter(callbackfn: (value: any, counter: uint) => boolean): Iterator\u003Cany>;\n  find(callbackfn: (value: any, counter: uint) => boolean)): any;\n  flatMap(callbackfn: (value: any, counter: uint) => Iterable\u003Cany> | Iterator\u003Cany>): Iterator\u003Cany>;\n  forEach(callbackfn: (value: any, counter: uint) => void): void;\n  map(callbackfn: (value: any, counter: uint) => any): Iterator\u003Cany>;\n  reduce(callbackfn: (memo: any, value: any, counter: uint) => any, initialValue: any): any;\n  some(callbackfn: (value: any, counter: uint) => boolean): boolean;\n  take(limit: uint): Iterator\u003Cany>;\n  toArray(): Array\u003Cany>;\n  @@dispose(): undefined;\n  @@toStringTag: 'Iterator'\n}\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fconcat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fdispose\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fdrop\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fevery\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Ffilter\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Ffind\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fflat-map\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Ffor-each\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Ffrom\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fmap\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Freduce\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fsome\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Ftake\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fiterator\u002Fto-array\n```\n[Examples](https:\u002F\u002Ftinyurl.com\u002F24af2z7v):\n```js\n[1, 2, 3, 4, 5, 6, 7].values()\n  .drop(1)\n  .take(5)\n  .filter(it => it % 2)\n  .map(it => it ** 2)\n  .toArray(); \u002F\u002F => [9, 25]\n\nIterator.from({\n  next: () => ({ done: Math.random() > 0.9, value: Math.random() * 10 | 0 }),\n}).toArray(); \u002F\u002F => [7, 6, 3, 0, 2, 8]\n\nIterator.concat([0, 1].values(), [2, 3], function * () {\n  yield 4;\n  yield 5;\n}()).toArray(); \u002F\u002F => [0, 1, 2, 3, 4, 5]\n```\n\n> [!WARNING]\n> - For preventing prototype pollution, in the `pure` version, new `%IteratorPrototype%` methods are not added to the real `%IteratorPrototype%`, they are available only on wrappers - instead of `[].values().map(fn)` use `Iterator.from([]).map(fn)`.\n\n#### ECMAScript: String and RegExp[⬆](#index)\nThe main part of `String` features: modules [`es.string.from-code-point`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.from-code-point.js), [`es.string.raw`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.raw.js), [`es.string.iterator`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.iterator.js), [`es.string.split`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.split.js), [`es.string.code-point-at`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.code-point-at.js), [`es.string.ends-with`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.ends-with.js), [`es.string.includes`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.includes.js), [`es.string.repeat`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.repeat.js), [`es.string.pad-start`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.pad-start.js), [`es.string.pad-end`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.pad-end.js), [`es.string.starts-with`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.starts-with.js), [`es.string.trim`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.trim.js), [`es.string.trim-start`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.trim-start.js), [`es.string.trim-end`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.trim-end.js), [`es.string.match-all`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.match-all.js), [`es.string.replace-all`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.replace-all.js), [`es.string.at-alternative`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.at-alternative.js), [`es.string.is-well-formed`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.is-well-formed.js), [`es.string.to-well-formed`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.to-well-formed.js).\n\nAdding support of well-known [symbols](#ecmascript-symbol) `@@match`, `@@replace`, `@@search` and `@@split` and direct `.exec` calls to related `String` methods, modules [`es.string.match`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.match.js), [`es.string.replace`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.replace.js), [`es.string.search`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.search.js) and [`es.string.split`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.split.js).\n\nAnnex B methods. Modules [`es.string.anchor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.anchor.js), [`es.string.big`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.big.js), [`es.string.blink`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.blink.js), [`es.string.bold`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.bold.js), [`es.string.fixed`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.fixed.js), [`es.string.fontcolor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.fontcolor.js), [`es.string.fontsize`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.fontsize.js), [`es.string.italics`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.italics.js), [`es.string.link`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.link.js), [`es.string.small`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.small.js), [`es.string.strike`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.strike.js), [`es.string.sub`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.sub.js), [`es.string.sup`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.sup.js), [`es.string.substr`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.string.substr.js), [`es.escape`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.escape.js) and [`es.unescape`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.unescape.js).\n\n`RegExp` features: modules [`es.regexp.constructor`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.constructor.js), [`es.regexp.escape`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.escape.js), [`es.regexp.dot-all`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.dot-all.js), [`es.regexp.flags`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.flags.js), [`es.regexp.sticky`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.sticky.js) and [`es.regexp.test`](https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fmaster\u002Fpackages\u002Fcore-js\u002Fmodules\u002Fes.regexp.test.js).\n```ts\nclass String {\n  static fromCodePoint(...codePoints: Array\u003Cnumber>): string;\n  static raw({ raw: Array\u003Cstring> }, ...substitutions: Array\u003Cstring>): string;\n  at(index: int): string;\n  includes(searchString: string, position?: number): boolean;\n  startsWith(searchString: string, position?: number): boolean;\n  endsWith(searchString: string, position?: number): boolean;\n  repeat(count: number): string;\n  padStart(length: number, fillStr?: string = ' '): string;\n  padEnd(length: number, fillStr?: string = ' '): string;\n  codePointAt(pos: number): number | void;\n  match(template: any): any; \u002F\u002F ES2015+ fix for support @@match\n  matchAll(regexp: RegExp): Iterator;\n  replace(template: any, replacer: any): any; \u002F\u002F ES2015+ fix for support @@replace\n  replaceAll(searchValue: string | RegExp, replaceString: string | (searchValue, index, this) => string): string;\n  search(template: any): any; \u002F\u002F ES2015+ fix for support @@search\n  split(template: any, limit?: int): Array\u003Cstring>;; \u002F\u002F ES2015+ fix for support @@split, some fixes for old engines\n  trim(): string;\n  trimLeft(): string;\n  trimRight(): string;\n  trimStart(): string;\n  trimEnd(): string;\n  isWellFormed(): boolean;\n  toWellFormed(): string;\n  anchor(name: string): string;\n  big(): string;\n  blink(): string;\n  bold(): string;\n  fixed(): string;\n  fontcolor(color: string): string;\n  fontsize(size: any): string;\n  italics(): string;\n  link(url: string): string;\n  small(): string;\n  strike(): string;\n  sub(): string;\n  substr(start: int, length?: int): string;\n  sup(): string;\n  @@iterator(): Iterator\u003Ccharacters>;\n}\n\nclass RegExp {\n  \u002F\u002F support of sticky (`y`) flag, dotAll (`s`) flag, named capture groups, can alter flags\n  constructor(pattern: RegExp | string, flags?: string): RegExp;\n  static escape(value: string): string\n  exec(): Array\u003Cstring | undefined> | null; \u002F\u002F IE8 fixes\n  test(string: string): boolean; \u002F\u002F delegation to `.exec`\n  toString(): string; \u002F\u002F ES2015+ fix - generic\n  @@match(string: string): Array | null;\n  @@matchAll(string: string): Iterator;\n  @@replace(string: string, replaceValue: Function | string): string;\n  @@search(string: string): number;\n  @@split(string: string, limit: number): Array\u003Cstring>;\n  readonly attribute dotAll: boolean; \u002F\u002F IE9+\n  readonly attribute flags: string;   \u002F\u002F IE9+\n  readonly attribute sticky: boolean; \u002F\u002F IE9+\n}\n\nfunction escape(string: string): string;\nfunction unescape(string: string): string;\n```\n[*CommonJS entry points:*](#commonjs-api)\n```\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring\u002Ffrom-code-point\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring\u002Fraw\ncore-js\u002Fes|stable|actual|full\u002Fstring\u002Fmatch\ncore-js\u002Fes|stable|actual|full\u002Fstring\u002Freplace\ncore-js\u002Fes|stable|actual|full\u002Fstring\u002Fsearch\ncore-js\u002Fes|stable|actual|full\u002Fstring\u002Fsplit\ncore-js(-pure)\u002Fes|stable|actual\u002Fstring(\u002Fvirtual)\u002Fat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fcode-point-at\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fends-with\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fincludes\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fstarts-with\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fmatch-all\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fpad-start\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fpad-end\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Frepeat\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Freplace-all\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ftrim\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ftrim-start\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ftrim-end\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ftrim-left\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ftrim-right\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fis-well-formed\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fto-well-formed\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fanchor\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fbig\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fblink\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fbold\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ffixed\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ffontcolor\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Ffontsize\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fitalics\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Flink\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fsmall\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fstrike\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fsub\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fsubstr\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fsup\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fstring(\u002Fvirtual)\u002Fiterator\ncore-js\u002Fes|stable|actual|full\u002Fregexp\ncore-js\u002Fes|stable|actual|full\u002Fregexp\u002Fconstructor\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fregexp\u002Fescape\ncore-js\u002Fes|stable|actual|full\u002Fregexp\u002Fdot-all\ncore-js(-pure)\u002Fes|stable|actual|full\u002Fregexp\u002Fflags\ncore-js\u002Fes|stable|actual|full\u002Fregexp\u002Fsticky\ncore-js\u002Fes|stable|actual|full\u002Fregexp\u002Ftest\ncore-js\u002Fes|stable|actual|full\u002Fregexp\u002Fto-string\ncore-js\u002Fes|stable|actual|full\u002Fescape\ncore-js\u002Fes|stable|actual|full\u002Funescape\n```\n[*Examples*](https:\u002F\u002Ftinyurl.com\u002F22uafm3p):\n```js\nfor (let value of 'a𠮷b') {\n  console.log(value); \u002F\u002F => 'a', '𠮷',","core-js 是一个模块化的 JavaScript 标准库，提供了 ECMAScript 至 2025 年提案的 polyfills 和一些跨平台的 WHATWG\u002FW3C 特性。其核心功能包括对 promises、symbols、collections、迭代器、typed arrays 等的支持，并且可以根据需要加载特定的功能模块，避免全局命名空间污染。该项目适用于需要支持老旧浏览器或环境但又希望使用现代 JavaScript 语法和特性的开发场景。","2026-06-11 02:51:59","top_language"]