diff --git a/README.md b/README.md index 195982a..c2f62e0 100644 --- a/README.md +++ b/README.md @@ -1 +1,123 @@ -# core-object-oriented-javascript \ No newline at end of file +# 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