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

Get deep insight into Node.js applications with real-time metrics, CPU profiling, and heap snapshots with N|Solid from NodeSource. Learn more.

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

Node.js application metrics sent directly to any statsd-compliant system. Get N|Solid

Topics:

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}