es6-shim – ECMAScript 6 functionality on ECMAScript 5
Join the DZone community and get the full member experience.
Join For Free
Paul Miller’s es6-shim
gives you functionality that will be in ECMAScript 6 (code-named
ECMAScript.next), on ECMAScript 5 engines. It was initially based on a
project of mine, but adds much new functionality, Node.js compatibility,
and (not least) tests.
A few highlights:
- Strings
> "hello world".startsWith("hello") true > "hi".repeat(3) 'hihihi'
- Object.getOwnPropertyDescriptors() – makes Object.create() more useful.
var copy = Object.create(Object.getPrototypeOf(orig), Object.getOwnPropertyDescriptors(orig)); var newFoo = Object.create(FooProto, Object.getOwnPropertyDescriptors({ instanceProp1: 123, instanceProp2: "abc" }));
- Object.is() – an improved version of === (which will likely become an operator called is in ECMAScript 6).
> 0 === -0 true > Object.is(0, -0) false > NaN === NaN false > Object.is(NaN, NaN) true
- Map – gives you a dictionary with arbitrary keys.
> var m = new Map(); undefined > m.set("1", "foo"); undefined > m.set(1, "bar"); undefined > m.get("1") 'foo' > m.get(1) 'bar'
"1" and 1 are (coerced to) the same key with arrays. Note that each object is considered different from any other object. Hence, the following map entry cannot be easily retrieved:> m.set({}, "hello"); > m.get({}) // new object! undefined
- Easy install on Node.js (you must run at least Node.js 0.6.5!):
npm install es6-shim
Afterwards, you enable it in your project like this:require("es6-shim");
Take a look at the tests to get usage examples.
ECMAScript
Opinions expressed by DZone contributors are their own.
Comments