# Cookie Jar: React
## `this`
- When we use an arrow function, the this context is bound to its outer scope
- When we don't use an arrow function and we reference the `onClick` function, this is not bound to our component which is where our state is defined. So when we do `this.addSomething = this.addSomething.bind(this)`, we are binding the function `addSomething` to our component. So, let's break it down:
- `this.addSomething` refers to the `addSomething` method we defined. Since we are doing this in the constructor, it is defined in our App component
- `this.addSomething.bind` - We are referencing the same method but this time calling `bind` on it
- `this.addSomething.bind(this)` - We are passing in the context of App
Example:
```javascript
let user = {
firstName: "Jasen",
// If I were to use an arrow function, it would still return undefined because
// I can't rebind arrow functions
greeting: function() { alert('My name is ' + this.firstName) }
}
```
```javascript
// We generate a new function that will always run with the given context because we sent it the actual context
user.greeting = user.greeting.bind(user)
// This will return undefined if we don't bind context
childOne.addEventListener(
"click",
user.greeting //Call site and context
)
```