<commit_before># OOP

**[<= Back](../04-high-order-functions/high-order-functions.md)**		*	*	*	**[Next =>](../06-project-elife/project-elife.md)**

### Theory

1. [Objects and Inheritance](http://speakingjs.com/es5/ch17.html)
1. [Eloquent JavaScript: The Secret Life of Objects](http://eloquentjavascript.net/06_object.html)
1. [The Four Layers of JavaScript OOP - O'Reilly Webcast](https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s)
    * [Slides](https://speakerdeck.com/rauschma/the-four-layers-of-javascript-oop)
    * [In defense of JavaScript’s constructors](http://www.2ality.com/2013/07/defending-constructors.html)

### Additional

1. [JavaScript’s “this”: how it works, where it can trip you up](http://www.2ality.com/2014/05/this.html)
1. [Understanding JavaScript Function Invocation and "this"](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/)
1. [Prototypes and Inheritance in JavaScript](https://msdn.microsoft.com/en-us/magazine/ff852808.aspx)
1. [<NAME>: Learning to Love JavaScript](https://www.youtube.com/watch?v=seX7jYI96GE) [1:03:25]
1. JavaScript for Web Developers: Object-Oriented Programming

> You may find it useful to split `JavaScript for Web Developers: Object-Oriented Programming` in parts because of it's size

### Practice

#### Workshop: Planet Proto

* [NodeSchool: Planet Proto](https://github.com/sporto/planetproto)

#### Exercise: A Vector Type
 
* [Eloquent JavaScript: A Vector Type](http://eloquentjavascript.net/06_object.html#h_zO8FRQBMAy)
 
#### Exercise: Another cell
 
* [Eloquent JavaScript: Another cell](http://eloquentjavascript.net/06_object.html#h_nLNNevzcF7)
 
#### Exercise: Sequence interface
 
* [Eloquent JavaScript: Sequence interface](http://eloquentjavascript.net/06_object.html#h_a0w19Kx5iq)

**[<= Back](../04-high-order-functions/high-order-functions.md)**		*	*	*	**[Next =>](../06-project-elife/project-elife.md)**<commit_msg>Update oop.md<commit_after># OOP

**[<= Back](../04-high-order-functions/high-order-functions.md)**		*	*	*	**[Next =>](../06-project-elife/project-elife.md)**

### Theory

1. [Objects and Inheritance](http://speakingjs.com/es5/ch17.html)
1. [Eloquent JavaScript: The Secret Life of Objects](http://eloquentjavascript.net/06_object.html)
1. [The Four Layers of JavaScript OOP - O'Reilly Webcast](https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s)
    * [Slides](https://speakerdeck.com/rauschma/the-four-layers-of-javascript-oop)
    * [In defense of JavaScript’s constructors](http://www.2ality.com/2013/07/defending-constructors.html)

### Additional

1. [JavaScript’s “this”: how it works, where it can trip you up](http://www.2ality.com/2014/05/this.html)
1. [Understanding JavaScript Function Invocation and "this"](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/)
1. [Prototypes and Inheritance in JavaScript](https://msdn.microsoft.com/en-us/magazine/ff852808.aspx)
1. [Alex Russell: Learning to Love JavaScript](https://www.youtube.com/watch?v=seX7jYI96GE) [1:03:25]
1. JavaScript for Web Developers: Object-Oriented Programming

> You may find it useful to split `JavaScript for Web Developers: Object-Oriented Programming` in parts because of it's size

### Practice

#### Workshop: Planet Proto

* [NodeSchool: Planet Proto](https://github.com/sporto/planetproto)

#### Exercise: A Vector Type
 
* [Eloquent JavaScript: A Vector Type](http://eloquentjavascript.net/06_object.html#h_zO8FRQBMAy)
 
#### Exercise: Another cell
 
* [Eloquent JavaScript: Another cell](http://eloquentjavascript.net/06_object.html#h_nLNNevzcF7)
 
#### Exercise: Sequence interface
 
* [Eloquent JavaScript: Sequence interface](http://eloquentjavascript.net/06_object.html#h_a0w19Kx5iq)

### Exercise: Override `toString`

Provide your objects from previous tasks with 'toString' method  


**[<= Back](../04-high-order-functions/high-order-functions.md)**		*	*	*	**[Next =>](../06-project-elife/project-elife.md)**
{'fraction_non_alphanumeric': 0.16411158582558433, 'fraction_numerical': 0.03669263634078914, 'mean_word_length': 5.104294478527607, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 10, 'https://': 10, 'lorem ipsum': 0, 'www.': 8, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5279744', 'n_tokens_mistral': 1500, 'n_tokens_neox': 1382, 'n_words': 263}