Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

es6-shim – ECMAScript 6 functionality on ECMAScript 5

DZone's Guide to

es6-shim – ECMAScript 6 functionality on ECMAScript 5

· Web Dev Zone ·
Free Resource

Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.

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.

 

Source: http://www.2ality.com/2011/12/es6-shim.html

Deploying code to production can be filled with uncertainty. Reduce the risks, and deploy earlier and more often. Download this free guide to learn more. Brought to you in partnership with Rollbar.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}