title: What does the at symbol (@) do in ES6 javascript? (ECMAScript 2015)
body: <p>I'm looking at some ES6 code and I don't understand what the @ symbol does when it is placed in front of a variable. The closest thing I could find has something to do with private fields?</p>
  
  <p>Code I was looking at from the <a href="https://github.com/gaearon/redux/blob/master/examples/counter/containers/CounterApp.js#L7">redux library</a>:</p>
  
  <pre><code>import React, { Component } from 'react';
  import { bindActionCreators } from 'redux';
  import { connect } from 'redux/react';
  import Counter from '../components/Counter';
  import * as CounterActions from '../actions/CounterActions';
  
  @connect(state =&gt; ({
    counter: state.counter
  }))
  export default class CounterApp extends Component {
    render() {
      const { counter, dispatch } = this.props;
      return (
        &lt;Counter counter={counter}
                 {...bindActionCreators(CounterActions, dispatch)} /&gt;
      );
    }
  }
  </code></pre>
  
  <p>Here is a blog post I found on the topic: <a href="https://github.com/zenparsing/es-private-fields">https://github.com/zenparsing/es-private-fields</a></p>
  
  <p>In this blog post all the examples are in the context of a class - what does it mean when the symbol is used within a module?</p>