Skip to content
Open
Show file tree
Hide file tree
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
18 changes: 18 additions & 0 deletions assignment4-solution-starter/README-FIRST.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
YOU HAVE A CHOICE!

If you want a slightly more challenging assignment, use the code in the “harder”
folder as your starting point. If you want a slightly less challenging
assignment, use the code in the “easier” folder as your starting point.

The difference between the two starting points is that in the “easier”
starting point, there are a few steps that are already completed for you.

Harder:
If you want a slightly more challenging assignment, copy all the contents of
the ‘harder’ folder into your newly created solutions container folder for
this assignment, e.g., ‘module4-solution’.

Easier:
If you want a slightly less challenging assignment, copy all the contents of
the ‘easier’ folder into your newly created solutions container folder for
this assignment, e.g., ‘module4-solution’.
25 changes: 25 additions & 0 deletions assignment4-solution-starter/easier/SpeakGoodBye.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// NOTE! The steps in this file are basically identical to the ones you
// performed in the SpeakHello.js file.

// STEP 6: Wrap the entire contents of SpeakGoodBye.js inside of an IIFE
// See Lecture 52, part 2


// STEP 7: Create an object, called 'byeSpeaker' to which you will attach
// the "speak" method and which you will expose to the global context
// See Lecture 52, part 1
// var byeSpeaker =

// DO NOT attach the speakWord variable to the 'byeSpeaker' object.
var speakWord = "Good Bye";

// STEP 8: Rewrite the 'speak' function such that it is attached to the
// byeSpeaker object instead of being a standalone function.
// See Lecture 52, part 2
function speak(name) {
console.log(speakWord + " " + name);
}

// STEP 9: Expose the 'byeSpeaker' object to the global scope. Name it
// 'byeSpeaker' on the global scope as well.
// xxxx.xxxx = byeSpeaker;
24 changes: 24 additions & 0 deletions assignment4-solution-starter/easier/SpeakHello.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// STEP 2: Wrap the entire contents of SpeakHello.js inside of an IIFE
// See Lecture 52, part 2


// STEP 3: Create an object, called 'helloSpeaker' to which you will attach
// the "speak" method and which you will expose to the global context
// See Lecture 52, part 1
// var helloSpeaker =

// DO NOT attach the speakWord variable to the 'helloSpeaker' object.
var speakWord = "Hello";

// STEP 4: Rewrite the 'speak' function such that it is attached to the
// helloSpeaker object instead of being a standalone function.
// See Lecture 52, part 2
function speak(name) {
console.log(speakWord + " " + name);
}

// STEP 5: Expose the 'helloSpeaker' object to the global scope. Name it
// 'helloSpeaker' on the global scope as well.
// See Lecture 52, part 2
// (Note, Step 6 will be done in the SpeakGoodBye.js file.)
// xxxx.xxxx = helloSpeaker;
13 changes: 13 additions & 0 deletions assignment4-solution-starter/easier/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Module 4 Solution Starter</title>
<script src="SpeakHello.js"></script>
<script src="SpeakGoodBye.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1>Module 4 Solution Starter</h1>
</body>
</html>
68 changes: 68 additions & 0 deletions assignment4-solution-starter/easier/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// *******************************
// START HERE IF YOU WANT AN EASIER STARTING POINT FOR THIS ASSIGNMENT
// *******************************
//
// Module 4 Assignment Instructions.
//
// The idea of this assignment is to take an existing array of names
// and then output either Hello 'Name' or Good Bye 'Name' to the console.
// The program should say "Hello" to any name except names that start with a "J"
// or "j", otherwise, the program should say "Good Bye". So, the final output
// on the console should look like this:
/*
Hello Yaakov
Good Bye John
Good Bye Jen
Good Bye Jason
Hello Paul
Hello Frank
Hello Larry
Hello Paula
Hello Laura
Good Bye Jim

WARNING!!! WARNING!!!
The code does NOT currently work! It is YOUR job to make it work
as described in the requirements and the steps in order to complete this
assignment.
WARNING!!! WARNING!!!

*/

// STEP 1: (NOTHING TO DO. ALREADY DONE FOR YOU)
// Wrap the entire contents of script.js inside of an IIFE
// See Lecture 52, part 2
// (Note, Step 2 will be done in the SpeakHello.js file.)
(function () {

var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];

// STEP 10: (NOTHING TO DO. ALREADY DONE FOR YOU)
// Loop over the names array and say either 'Hello' or "Good Bye"
// using the 'speak' method or either helloSpeaker's or byeSpeaker's
// 'speak' method.
// See Lecture 50, part 1
for (var i = 0; i < names.length; i++) {

// STEP 11: (NOTHING TO DO. ALREADY DONE FOR YOU)
// Retrieve the first letter of the current name in the loop.
// Use the string object's 'charAt' function. Since we are looking for
// names that start with either upper case or lower case 'J'/'j', call
// string object's 'toLowerCase' method on the result so we can compare
// to lower case character 'j' afterwards.
// Look up these methods on Mozilla Developer Network web site if needed.
var firstLetter = names[i].charAt(0).toLowerCase();

// STEP 12: (NOTHING TO DO. ALREADY DONE FOR YOU)
// Compare the 'firstLetter' retrieved in STEP 11 to lower case
// 'j'. If the same, call byeSpeaker's 'speak' method with the current name
// in the loop. Otherwise, call helloSpeaker's 'speak' method with the current
// name in the loop.
if (firstLetter === 'j') {
byeSpeaker.speak(names[i]);
} else {
helloSpeaker.speak(names[i]);
}
}

})();
31 changes: 31 additions & 0 deletions assignment4-solution-starter/harder/SpeakGoodBye.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// NOTE! The steps in this file are basically identical to the ones you
// performed in the SpeakHello.js file.

// STEP 6: Wrap the entire contents of SpeakGoodBye.js inside of an IIFE
// See Lecture 52, part 2

(function(window) {


// STEP 7: Create an object, called 'byeSpeaker' to which you will attach
// the "speak" method and which you will expose to the global context
// See Lecture 52, part 1
// var byeSpeaker =
var byeSpeaker = {};

// DO NOT attach the speakWord variable to the 'byeSpeaker' object.
var speakWord = "Good Bye";

// STEP 8: Rewrite the 'speak' function such that it is attached to the
// byeSpeaker object instead of being a standalone function.
// See Lecture 52, part 2
byeSpeaker.speak = function(name) {
console.log(speakWord + " " + name);
}

// STEP 9: Expose the 'byeSpeaker' object to the global scope. Name it
// 'byeSpeaker' on the global scope as well.
// xxxx.xxxx = byeSpeaker;
window.byeSpeaker = byeSpeaker;

})(window);
32 changes: 32 additions & 0 deletions assignment4-solution-starter/harder/SpeakHello.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// STEP 2: Wrap the entire contents of SpeakHello.js inside of an IIFE
// See Lecture 52, part 2
(function(window) {var speakWord = "Hello";

// STEP 3: Create an object, called 'helloSpeaker' to which you will attach
// the "speak" method and which you will expose to the global context
// See Lecture 52, part 1
// var helloSpeaker =
var helloSpeaker = {};

// DO NOT attach the speakWord variable to the 'helloSpeaker' object.


// STEP 4: Rewrite the 'speak' function such that it is attached to the
// helloSpeaker object instead of being a standalone function.
// See Lecture 52, part 2
helloSpeaker.speak = function(name) {
console.log(speakWord + " " + name);
}




// STEP 5: Expose the 'helloSpeaker' object to the global scope. Name it
// 'helloSpeaker' on the global scope as well.
// See Lecture 52, part 2

window.helloSpeaker = helloSpeaker;

}) (window);
// (Note, Step 6 will be done in the SpeakGoodBye.js file.)
// xxxx.xxxx = helloSpeaker;
16 changes: 16 additions & 0 deletions assignment4-solution-starter/harder/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Module 4 Solution Starter</title>
<script>
var names = []; // DO NOT REMOVE
</script>
<script src="SpeakHello.js"></script>
<script src="SpeakGoodBye.js"></script>
<script src="script.js"></script>
</head>
<body>
<h1>Module 4 Solution Starter</h1>
</body>
</html>
72 changes: 72 additions & 0 deletions assignment4-solution-starter/harder/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// *******************************
// START HERE IF YOU WANT A MORE CHALLENGING STARTING POINT FOR THIS ASSIGNMENT
// *******************************
//
// Module 4 Assignment Instructions.
//
// The idea of this assignment is to take an existing array of names
// and then output either Hello 'Name' or Good Bye 'Name' to the console.
// The program should say "Hello" to any name except names that start with a "J"
// or "j", otherwise, the program should say "Good Bye". So, the final output
// on the console should look like this:
/*
Hello Yaakov
Good Bye John
Good Bye Jen
Good Bye Jason
Hello Paul
Hello Frank
Hello Larry
Hello Paula
Hello Laura
Good Bye Jim

WARNING!!! WARNING!!!
The code does NOT currently work! It is YOUR job to make it work
as described in the requirements and the steps in order to complete this
assignment.
WARNING!!! WARNING!!!

*/

// STEP 1:
// Wrap the entire contents of script.js inside of an IIFE
// See Lecture 52, part 2
// (Note, Step 2 will be done in the SpeakHello.js file.)

(function() { var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];

// STEP 10:
// Loop over the names array and say either 'Hello' or "Good Bye"
// using the 'speak' method or either helloSpeaker's or byeSpeaker's
// 'speak' method.
// See Lecture 50, part 1
for (name in names /* fill in parts of the 'for' loop to loop over names array */) {

// STEP 11:
// Retrieve the first letter of the current name in the loop.
// Use the string object's 'charAt' function. Since we are looking for
// names that start with either upper case or lower case 'J'/'j', call
// string object's 'toLowerCase' method on the result so we can compare
// to lower case character 'j' afterwards.
// Look up these methods on Mozilla Developer Network web site if needed.
// var firstLetter =

var firstLetter = names[name].charAt(0);

flLower = firstLetter.toLowerCase();

// STEP 12:
// Compare the 'firstLetter' retrieved in STEP 11 to lower case
// 'j'. If the same, call byeSpeaker's 'speak' method with the current name
// in the loop. Otherwise, call helloSpeaker's 'speak' method with the current
// name in the loop.
if (flLower == 'j'/* fill in condition here */) {
byeSpeaker.speak(names[name]);
// byeSpeaker.xxxx
} else {
helloSpeaker.speak(names[name]);
// helloSpeaker.xxxx
}
}
})();