{ "name": "Object Oriented JavaScript", "order" : 0.008, "challenges": [ { "id": "bd7129d8c441eddfaeb5bddf", "name": "Waypoint: Scope Your Variables", "dashedName": "waypoint-scope-your-variables", "difficulty": 0.01, "challengeSeed": ["128836683"], "description": [ "Objects will allow you to build applications more efficiently by using small, reusable blocks of code.", "This course on Udacity will help you learn Object-Oriented Programming in JavaScript.", "First, we'll learn how JavaScript works in terms of scopes. You'll learn the difference between a \"Lexical Scope\" and an \"Execution Context\".", "This theoretical foundation is useful for understanding when a variable can be accessed and when it can't.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2593668697/m-2541189051 and start the course.", "Once you've completed this first section of scopes, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7131d8c441eddfaeb5bdbf", "name": "Waypoint: Reference your Current Object with This", "dashedName": "waypoint-reference-your-current-object-with-this", "difficulty": 0.03, "challengeSeed": ["128836508"], "description": [ "In this section, you'll learn how you can use the keyword this to dynamically point to your current object.", "For example, if we were inside the function camper.completeCourse(), this would refer to the specific camper upon which we were running the function.", "Note that this section poses several trick questions that were designed to make you think. Don't get hung up on them, just keep moving forward.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2593668699/m-2780408563 and start the course.", "Once you've completed this section of using the keyword this, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7132d8c441eddfaeb5bdaf", "name": "Waypoint: Traverse the Prototype Chain", "dashedName": "waypoint-traverse-the-prototype-chain", "difficulty": 0.04, "challengeSeed": ["128836684"], "description": [ "Next we'll learn about the multiple ways you can create a copy of an object.", "We'll also learn how an object's missing attributes can traverse the \"prototype chain\".", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2593668700/m-2616738615 and start the course.", "Once you've completed this section on prototype chain traversal, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7133d8c441eddfaeb5bd0f", "name": "Waypoint: Reuse Code with Decorators", "dashedName": "waypoint-reuse-code-with-decorators", "difficulty": 0.05, "challengeSeed": ["128836681"], "description": [ "In this section, we'll learn about the \"Decorator Pattern\".", "The Decorator Pattern will help you \"decorate\" an existing object with additional attributes. This pattern helps you reuse code, reducing the total amount of code you'll need to write and maintain.", "It's a convenient way to add functionality to objects without changing their underlying structure.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468536/m-2697628561 and start the course.", "Once you've completed this section of decorators, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7134d8c441eddfaeb5bd1f", "name": "Waypoint: Build Objects with Functional Classes", "dashedName": "waypoint-build-objects-with-functional-classes", "difficulty": 0.06, "challengeSeed": ["128836503"], "description": [ "Now we'll go over the simplest way to implement a JavaScript class.", "A class is a set of functions that you can use to easily produce similar objects.", "You may have heard JavaScript doesn't have classes. While this is technically true, don't let this fact prevent you from learning the important concepts in this section.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468537/m-2961989110 and start the course.", "Once you've completed this section of functional classes, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7135d8c441eddfaeb5bd2f", "name": "Waypoint: Build Objects with Prototypal Classes", "dashedName": "waypoint-build-objects-with-prototypal-classes", "difficulty": 0.07, "challengeSeed": ["128836505"], "description": [ "Now we'll learn how one object can be prototyped off of another object.", "Objects will delegate their \"failed lookups\" on up through the \"prototype chain\".", "This means that when you create a second object based off another object, then try to access an attribute that the second object doesn't have, JavaScript will \"fall through\" to the original object to see whether it has that attribute.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468538/m-3034538557 and start the course.", "Once you've completed this section of prototypal classes, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7136d8c441eddfaeb5bd3f", "name": "Waypoint: Understand Pseudoclassical Patterns", "dashedName": "waypoint-understand-pseudoclassical-patterns", "difficulty": 0.08, "challengeSeed": ["128836689"], "description": [ "JavaScript doesn't have the traditional \"classes\" that lower-level languages like C++ and Java have.", "Instead, JavaScript does some tricks to allow you to write code as though it had these traditional classes. We call these \"pseudo-classes\".", "In this section, we'll learn how to build these pseudo-classes. We'll also learn some tricks for figuring out where these objects originally came from.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468539/e-2783098540/m-2695768694 and start the course.", "Once you've completed this section pseudoclasses, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7136d8c441eddfaeb5bd4f", "name": "Waypoint: Subclass one Object to Another", "dashedName": "waypoint-subclass-one-object-to-another", "difficulty": 0.09, "challengeSeed": ["128836686"], "description": [ "Now we know the three ways that we can create objects. Through:
  1. functions
  2. prototyping
  3. pseudo classing
", "Let's learn how to \"subclass\" one object to another. This will give our new object the attributes of the original object. It will allow us to make further modifications to the new object without affecting the original object.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468540/m-2785128536 and start the course.", "Once you've completed this section on subclassing, mark this Waypoint complete and move on to the next one." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "bd7136d8c441eddfaeb5bd5f", "name": "Waypoint: Use Pseudoclassical Subclasses", "dashedName": "waypoint-use-pseudoclassical-subclasses", "difficulty": 0.10, "challengeSeed": ["128836937"], "description": [ "This final section will teach us how to create subclasses from pseudo classes.", "You can save your progress by creating a free Udacity account, but note that it's also possible to complete this entire course without an account by following the links we provide.", "Go to https://www.udacity.com/course/viewer#!/c-ud015/l-2794468541/e-2693158566/m-2688408703 and start the course.", "Once you've completed this final section on pseudoclassical subclassing, mark this Waypoint complete and move on." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] } ] }