This challenge allows you to practice the concepts and techniques learned over the past week and apply them in a survey of problems. This Sprint explored JavaScript Fundamentals. During this Sprint, you studied variables, functions, object literals, arrays, this keyword, prototypes, and class syntax. In your challenge this week, you will demonstrate proficiency by completing a survey of JavaScript problems.
Demonstrate your understanding of this week's concepts by answering the following free-form questions.
Edit this document to include your answers after each question. Make sure to leave a blank line above and below your answer so it is clear and easy to read by your team lead
-
Describe the biggest difference between
.forEach&.map.At the practical level,
forEachloops and mutates over the original array where asmapcreates a new array of calling the provided function -
What is the difference between a function and a method?
A method is a subset of functions that are associated with an object, and whenever they are called, it also has access to the other properties in the object
-
What is closure?
At the most basic level, closure is a feature of Javascript's implementation of scope where a function has access to the lexical environment where it was declared, allowing a function to track variables
-
Describe the four rules of the 'this' keyword
a. Global binding - when
thisis used in the global scope, it refers to the window/console object,undefinedin strict mode b. Implicit Binding - when a function is called by a preceding dot,thisrefers to the object before the dot c.newBinding - in a constructor function,thisis the object created d. Explicit Binding - when usingcall,apply, orbindfunctions,thisis defined to refer to whatever was passed -
Why do we need super() in an extended class? We need the
super()to tell what the child class is inheriting from the parent and pass though arguments. It keeps the code DRY.
Follow these steps to set up and work on your project:
- Create a forked copy of this project.
- Add TL as collaborator on Github.
- Clone your OWN version of Repo (Not Lambda's by mistake!).
- Create a new Branch on the clone: git checkout -b
<firstName-lastName>. - Create a pull request before you start working on the project requirements. You will continuously push your updates throughout the project.
- You are now ready to build this project with your preferred IDE
- Implement the project on your Branch, committing changes regularly.
- Push commits: git push origin
<firstName-lastName>.
Follow these steps for completing your project:
- Submit a Pull-Request to merge Branch into master (student's Repo).
- Add your team lead as a Reviewer on the Pull-request
- TL then will count the HW as done by merging the branch back into master.
Your finished project must include all of the following requirements:
Test your knowledge of objects and arrays.
- Use the objects-arrays.js link to get started. Read the instructions carefully!
This challenge takes a look at callbacks and closures as well as scope.
- Use the functions.js link to get started. Read the instructions carefully!
Create constructors, bind methods, and create cuboids in this prototypes challenge.
- Use the prototypes.js link to get started. Read the instructions carefully!
Once you have completed the prototypes challenge, it's time to convert all your hard work into classes.
- Use the classes.js link to get started. Read the instructions carefully!
In your solutions, it is essential that you follow best practices and produce clean and professional results. Schedule time to review, refine, and assess your work and perform basic professional polishing including spell-checking and grammar-checking on your work. It is better to submit a challenge that meets MVP than one that attempts too much and does not.
There are a few stretch problems found throughout the files, don't work on them until you are finished with MVP requirements!