{"id":27139523,"url":"https://github.com/ddrcode/ddr-ecma5","last_synced_at":"2025-04-08T04:58:27.943Z","repository":{"id":149680730,"uuid":"1877355","full_name":"ddrcode/ddr-ecma5","owner":"ddrcode","description":"ECMAScript 5 functionality for ECMAScript 3 interpreters","archived":false,"fork":false,"pushed_at":"2011-08-27T09:15:37.000Z","size":821,"stargazers_count":26,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-04-01T07:59:24.065Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/ddrcode/ddr-ecma5/wiki","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddrcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-06-10T18:39:31.000Z","updated_at":"2023-04-01T08:26:07.072Z","dependencies_parsed_at":"2023-04-01T08:26:05.308Z","dependency_job_id":null,"html_url":"https://github.com/ddrcode/ddr-ecma5","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddrcode%2Fddr-ecma5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddrcode%2Fddr-ecma5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddrcode%2Fddr-ecma5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddrcode%2Fddr-ecma5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddrcode","download_url":"https://codeload.github.com/ddrcode/ddr-ecma5/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779698,"owners_count":20994573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-08T04:58:27.388Z","updated_at":"2025-04-08T04:58:27.928Z","avatar_url":"https://github.com/ddrcode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"ddr-ecma5\n=========\n\n**ddr-ecma5** lets you to write ECMAScript 5 code and run it on older environments like IE6 \n(I know - it must die anyway) or Firefox \u003c 4. It works also perfectly outside the browser \n- like Rhino, SpiderMonkey, etc. \n\n## Installation\n1. In **browser applications** just add the library to your web page and enjoy\u003cbr/\u003e \n\n    ```html\n    \u003cscript type=\"text/javascript\" src=\"ddr-ecma5.js\"\u003e\u003c/script\u003e\n    ```\n\n2. In **Rhino/SpiderMonkey** environments use `load` function:\n\n    ```js\n    load('ddr-ecma5.js');\n    ```\n\n3. **Node.JS** - do not bother to load the library to your node projects - V8 supports ECMAScript 5 by itself. \n\n## Testing\nIf you are curious which functionality of ECMAScript 5 is currently supported by your browser \nopen  `test/ddr-ecma5-features-test.html` file. Another test file - `ddr-ecma5-test.html` - executes \na test of the library itself. All tests are using [QUnit](https://github.com/jquery/qunit) framework. \n\n## Is it stable?\nYes it is! The library development started at the beginning of 2010 and each feature of it has been\nproperly tested. Version 1.2 of the library contains all ECMAScript 5 methods which can be implemented \nwith ECMAScript 3 features - means no new methods will be added.  \nCurrently the author focuses only on the stability and performance of the library.\nddr-ecma5 is used by many developers in their private and commercial projects.  \n\n## Functionality and compatibility\nNot all features of ECMAScript 5 can be implemented with ECMAScript 3. An example can be _freeze_ \nfeature or the _strict mode_. However most of extensions, like new methods of Array, String or Function \nare provided by the library. \n\nThe table below illustrates in which version of a browser the particular feature of ECMAScript 5 \nhas been introduced. As you can see in most of the cases only the latest versions of the browsers \n(like IE9, FF4, SF5) are supporting the ECMAScript 5 standard. You can use ddr-ecma5 library to \nkeep the backward compatibility with older browsers without resigning from ECMAScript 5 features. \n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n  \u003cth\u003eFeature\u003c/th\u003e\n  \u003cth\u003eddr-ecma5\u003c/th\u003e\u003cth\u003eChrome\u003c/th\u003e\u003cth\u003eFirefox\u003c/th\u003e\u003cth\u003eSafari\u003c/th\u003e\u003cth\u003eOpera\u003c/th\u003e\u003cth\u003eIE\u003c/th\u003e\u003cth\u003eRhino\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n  \u003cth\u003eFunction.prototype.bind\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e7.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.keys\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.getPrototypeOf\u003c/th\u003e\n  \u003ctd\u003e1.0 \u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.create\u003c/th\u003e\n  \u003ctd\u003e1.0 \u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.defineProperty\u003c/th\u003e\n  \u003ctd\u003e1.2 \u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e8.0 \u003csup\u003e3\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.defineProperties\u003c/th\u003e\n  \u003ctd\u003e1.2 \u003csup\u003e1\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.getOwnPropertyDescriptor\u003c/th\u003e\n  \u003ctd\u003e1.2\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e8.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.getOwnPropertyNames\u003c/th\u003e\n  \u003ctd\u003e1.2\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.preventExtensions\u003c/th\u003e\n  \u003ctd\u003e- \u003csup\u003e2\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.seal\u003c/th\u003e\n  \u003ctd\u003e- \u003csup\u003e2\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.freeze\u003c/th\u003e\n  \u003ctd\u003e- \u003csup\u003e2\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.isExtensible\u003c/th\u003e\n  \u003ctd\u003e1.1\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.isSealed\u003c/th\u003e\n  \u003ctd\u003e1.1\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eObject.isFrozen\u003c/th\u003e\n  \u003ctd\u003e1.1\u003c/td\u003e\u003ctd\u003e6.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eString.prototype.trim\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.5\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.isArray\u003c/th\u003e\n  \u003ctd\u003e1.0.1\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.indexOf\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.lastIndexOf\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.every\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.some\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.forEach\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.map\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.filter\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e3.2\u003c/td\u003e\u003ctd\u003e10.1\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.reduce\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eArray.prototype.reduceRight\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eDate.prototype.toISOString\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.5\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eDate.prototype.toJSON\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.5\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e?\u003c/td\u003e\u003ctd\u003e8.0\u003c/td\u003e\u003ctd\u003e1.7R3\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eDate.now\u003c/th\u003e\n  \u003ctd\u003e1.0\u003c/td\u003e\u003ctd\u003e5.0\u003c/td\u003e\u003ctd\u003e3.0\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e10.5\u003c/td\u003e\u003ctd\u003e9.0\u003c/td\u003e\u003ctd\u003e1.6R1\u003c/td\u003e\n\u003c/tr\u003e\u003ctr\u003e  \n  \u003cth\u003eStrict mode\u003c/th\u003e\n  \u003ctd\u003e- \u003csup\u003e2\u003c/sup\u003e\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e4.0\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\u003ctd\u003e-\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\nNotes\u003cbr/\u003e\n\u003csup\u003e1\u003c/sup\u003e - limited functionality in comparison to ECMAScript 5 specification\u003cbr/\u003e\n\u003csup\u003e2\u003c/sup\u003e - impossible to implement this feature with ECMAScript 3 functionality\u003cbr/\u003e\n\u003csup\u003e3\u003c/sup\u003e - on IE8 Object.defineProperty works only with DOM objects.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddrcode%2Fddr-ecma5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddrcode%2Fddr-ecma5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddrcode%2Fddr-ecma5/lists"}