Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 123 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,123 @@
# core-object-oriented-javascript
# Core Object Oriented JavaScript

A day-by-day structured deep dive into object-oriented JavaScript. Read articles, watch videos, complete lessons and exercises, and implement a final project.

## Day 1: Scopes & Closures

Your objectives for the day is to:

- Learn about JavaScript’s variable scoping, including lexical scopes and dynamics scopes.
- Learn about Closures
- Learn about the Keyword "this"
- Learn about Prototypes

### Scopes

- [X] Watch these videos on Type and Scope
- https://shereef.wistia.com/medias/mlnjxm9z9s
- https://shereef.wistia.com/medias/hn99v12lkr
- https://shereef.wistia.com/medias/6snmj6es7v
- https://shereef.wistia.com/medias/5bva01dxbw
- https://shereef.wistia.com/medias/zi0me19ovo
- [X] Signup for [Udacity Object Oriented Javascript][udacity]
- [X] Complete the [Scopes lesson][udacity]

### Closures

- [X] Complete the [Closures lesson][udacity]

## Day 2: Objects and "this"

### Objects

- [X] Watch [Video introduction to Object Oriented Javascript](https://www.youtube.com/watch?v=O8wwnhdkPE4) (1 Hour)
- [X] Read [Javascript Objects in Detail](http://javascriptissexy.com/javascript-objects-in-detail/)
- [X] Read pages 173 to 184 in [Professional JS for Web Developers][projs]
- [X] Signup for a free Team Treehouse trial and complete their [Object Oriented Javascript Course] (https://teamtreehouse.com/library/objectoriented-javascript)
- [X] Skim this [cheat sheet][cheat]

### This

- [X] Watch these videos:
- https://shereef.wistia.com/medias/wfybhl2nmr
- https://shereef.wistia.com/medias/kqbedkmm13
- [X] Read [Undrestanding Javascrpt's This with Clarity and Mastery](http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/)
- [X] Read [What is this in Javascript](http://www.code-sample.com/2015/06/what-is-this-in-javascript.html)
- [X] Complete the [Keyword "this" lesson][udacity]

### Stretch

- [ ] Do exercises for Chapter 4 of [Object Oriented Javascript][oojs] (and maybe read it)
- [X] Study these [top 50 OOPs interview questions](http://career.guru99.com/top-50-oops-interview-questions/)

## Day 3: Prototype and Inheritance

- [X] Watch these videos on Prototypes:
- https://shereef.wistia.com/medias/a5m8nwq4su
- https://shereef.wistia.com/medias/ednchu35gz
- https://shereef.wistia.com/medias/yejzrin760
- https://shereef.wistia.com/medias/372u07ybvu
- https://shereef.wistia.com/medias/xxj6323pk9
- [X] Read [Prototype in Plain English](http://javascriptissexy.com/javascript-prototype-in-plain-detailed-language/)
- [X] Read [OOP in Javascript](http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/)
- [X] Complete the [Prototype Chains][udacity] Lesson on Udacity
- [X] Complete the [Prototypal Classes][udacity] Lesson on Udacity

### Stretch

- [ ] Read pages 184 to 201 in [Professional JS for Web Developers][projs]
- [ ] Read [Understanding Javascript Prototypes](https://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/)
- [ ] Read sections 7 in [JS Ninja](ninja)
- [ ] Do exercises for Chapter 5 of [Object Oriented Javascript][oojs] (and maybe read it)
- [ ] Do exercises for Chapter 6 of [Object Oriented Javascript][oojs] (and maybe read it)

## Day 4: Deeper Dive and Final Project

- [X] Complete the [Object Decorator Pattern][udacity] Lesson on Udacity
- [X] Complete the [Functional Classes][udacity] Lesson on Udacity
- [ ] Complete the [Pseudoclassical Patterns][udacity] Lesson on Udacity
- [ ] Complete the [Superclass and Subclass Patterns][udacity] Lesson on Udacity
- [ ] Complete the [Pseudoclassical Sublasses][udacity] Lesson on Udacity
- [ ] Start (and maybe finish) the [Final Project][udacity] Lesson on Udacity

## Day 5: Final Project and check your understanding

- [ ] Complete the [Final Project][udacity] Lesson on Udacity

Do you know/understand:

- Everything [in this article](http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/)
- Everything in this [cheat sheet][cheat]
- The difference between Classic Inheritance and Prototypical Inheritance
- The difference between private variable, public variable and static variable? How we achieve this in JS?
- How to add/remove properties to object in run time?
- How to achieve inheritance ?
- How to extend built-in objects?
- What is Object in JavaScript?
- What is the Prototype object in JavaScript and how it is used?
- What is "this"? What is its value?
- Explain why "self" is needed instead of "this".
- What is a Closure and why are they so useful to us?
- Explain how to write class methods vs. instance methods.
- Can you explain the difference between == and ===?


## Stretch Goals

- [ ] Complete the [learn-js OO tutorial](https://www.learn-js.org/en/Object_Oriented_JavaScript)
- [ ] Complete the [learn-js function context tutorial](https://www.learn-js.org/en/Function_Context)
- [ ] Complete the [learn-js inheritance tutorial](https://www.learn-js.org/en/Inheritance)
- [ ] Read [Object Oriented Javascript for Beginners](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS)
- [ ] Read [Chapter 8 of Eloquent Javascript](http://eloquentjavascript.net/1st_edition/chapter8.html)
- [ ] Read [The Basics of Object Oriented Javascript](https://code.tutsplus.com/tutorials/the-basics-of-object-oriented-javascript--net-7670)
- [ ] Study this [OOP interview questions](http://www.code-sample.com/2015/04/javascript-interview-questions-answers.html)
- [ ] Go over these [object oriented javascript interview questions](https://blog.kevinchisholm.com/object-oriented-javascript/javascript-interview-questions-object-oriented-javascript/)
- [ ] Complete these [3 practice exercises](https://www.ibm.com/developerworks/library/wa-objects-pr/)
- [ ] Complete section 2 of [these exercises](http://ynonperek.com/javascript-exer.html)


[udacity]:https://www.udacity.com/course/object-oriented-javascript--ud015
[projs]:ftp://ftp.micronet-rostov.ru/linux-support/books/programming/JavaScript/Wrox.Professional.JavaScript.for.Web.Developers.3rd.Edition.Jan.2012.pdf
[ninja]:https://github.com/GuildCrafts/core-object-oriented-javascript/raw/master/Books/Secrets%20of%20the%20JavaScript%20Ninja%20-%20John%20Resig%20and%20Bear%20Bibeault%20-%20December%202012.pdf
[cheat]:https://github.com/GuildCrafts/core-object-oriented-javascript/raw/master/Books/Objects-Cheat-Sheet.pdf
[oojs]:ftp://ftp.micronet-rostov.ru/linux-support/books/programming/JavaScript/[Packt]%20-%20Object-Oriented%20JavaScript%20-%20[Stefanov].pdf