CHALLENGE
const handler = {
get(target, prop, receiver) {
if (prop in target) {
const value = Reflect.get(target, prop, receiver);
return typeof value === "number" ? value * 2 : value;
}
return `Property "${prop}" not found`;
},
set(target, prop, value) {
if (typeof value !== "number") {
throw new TypeError("Only numbers allowed");
}
Reflect.set(target, prop, value ** 2);
return true;
},
has(target, prop) {
return prop.startsWith("_") ? false : prop in target;
},
};
const store = new Proxy({ _secret: 99, score: 5 }, handler);
store.level = 3;
console.log(store.score);
console.log(store.level);
console.log("_secret" in store);
console.log("score" in store);
console.log(store._secret);🔥1
What is the output?
Anonymous Quiz
33%
10 18 false true 198
35%
5 9 false true 198
28%
10 9 false true Property "_secret" not found
4%
10 9 true false 198
CHALLENGE
class Range {
constructor(start, end, step = 1) {
this.start = start;
this.end = end;
this.step = step;
}
[Symbol.iterator]() {
let current = this.start;
const { end, step } = this;
return {
next() {
if (current <= end) {
const value = current;
current += step;
return { value, done: false };
}
return { value: undefined, done: true };
}
};
}
}
const range = new Range(1, 10, 3);
const result = [...range].map(n => n ** 2);
console.log(result);
❤3
What is the output?
Anonymous Quiz
20%
[ 1, 9, 25, 49 ]
55%
[ 1, 16, 49, 100 ]
16%
[ 1, 9, 49 ]
8%
[ 1, 9, 25, 49, 81 ]
❤2
CHALLENGE
const p1 = new Promise((resolve) => {
console.log("A");
resolve("B");
});
const p2 = p1.then((val) => {
console.log(val);
return "C";
});
p2.then((val) => console.log(val));
console.log("D");
❤3🤔1