Sprint Challenge: JavaScript Fundamentals

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.

Self-Study Questions

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

  1. Describe the biggest difference between .forEach & .map.

    At the practical level, forEach loops and mutates over the original array where as map creates a new array of calling the provided function

  2. 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

  3. 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

  4. Describe the four rules of the 'this' keyword

    a. Global binding - when this is used in the global scope, it refers to the window/console object, undefined in strict mode b. Implicit Binding - when a function is called by a preceding dot, this refers to the object before the dot c. new Binding - in a constructor function, this is the object created d. Explicit Binding - when using call, apply, or bind functions, this is defined to refer to whatever was passed

  5. 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.

Project Set up

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.

Minimum Viable Product

Your finished project must include all of the following requirements:

Task 1: Objects and Arrays

Test your knowledge of objects and arrays.

Task 2: Functions

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!

Task 3: Prototypes

Create constructors, bind methods, and create cuboids in this prototypes challenge.

  • Use the prototypes.js link to get started. Read the instructions carefully!

Task 4: Classes

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.

Stretch Problems

There are a few stretch problems found throughout the files, don't work on them until you are finished with MVP requirements!