Modules and Namespaces
Namespace Lookup
Choose a namespaced operation by key.
namespace-lookup
When operations are grouped by name, bracket lookup can choose one operation from a small table of functions.
Namespace Lookup
namespace_lookup.js
Replay: real traced execution (multi-file project)
const operation = "double";
const result = {
double(value) {
return value * 2;
},
triple(value) {
return value * 3;
},
square(value) {
return value * value;
},
}[operation](5);
console.log("operation=" + operation);
console.log("result=" + result);
const operation = "triple";
const result = {
double(value) {
return value * 2;
},
triple(value) {
return value * 3;
},
square(value) {
return value * value;
},
}[operation](5);
console.log("operation=" + operation);
console.log("result=" + result);
const operation = "square";
const result = {
double(value) {
return value * 2;
},
triple(value) {
return value * 3;
},
square(value) {
return value * value;
},
}[operation](5);
console.log("operation=" + operation);
console.log("result=" + result);
operation ← double, result ← 10
1const operation→ double = "double"; //@operation="triple", "square"2const result→ 10 = {3 double(value) {4 return value * 2;5 },6 triple(value) {7 return value * 3;8 },9 square(value) {10 return value * value;11 },12}[operationdouble](5);1314console.log("operation=" + operationdouble);15console.log("result=" + result10);outputoperation=double result=10
operation ← triple, result ← 15
1const operation→ triple = "triple";2const result→ 15 = {3 double(value) {4 return value * 2;5 },6 triple(value) {7 return value * 3;8 },9 square(value) {10 return value * value;11 },12}[operationtriple](5);1314console.log("operation=" + operationtriple);15console.log("result=" + result15);outputoperation=triple result=15
operation ← square, result ← 25
1const operation→ square = "square";2const result→ 25 = {3 double(value) {4 return value * 2;5 },6 triple(value) {7 return value * 3;8 },9 square(value) {10 return value * value;11 },12}[operationsquare](5);1314console.log("operation=" + operationsquare);15console.log("result=" + result25);outputoperation=square result=25
Follow the Operation
operationstarts asdouble.- The lookup object stores three functions:
double,triple, andsquare. - Bracket lookup selects the
doublefunction. - The selected function receives
5. double(5)returns10, so the program printsresult=10. | operation | function called | input | result | | --- | --- | ---: | ---: | | double | value * 2 | 5 | 10 | | triple | value * 3 | 5 | 15 | | square | value * value | 5 | 25 |
Exercise: namespace_lookup.js
Reproduce operation=double and result=10, then use operations triple and square to predict result=15 and result=25.