CHALLENGE
const target = { name: 'John', age: 30 };
const handler = {
get(obj, prop) {
if (prop in obj) {
return `[${obj[prop]}]`;
}
return `missing: ${prop}`;
},
set(obj, prop, value) {
obj[prop] = value.toUpperCase();
return true;
}
};
const proxy = new Proxy(target, handler);
proxy.city = 'paris';
console.log(proxy.name);
console.log(proxy.city);
console.log(proxy.country);โค6๐4๐ฅ1
What is the output?
Anonymous Quiz
23%
John PARIS undefined
29%
[John] [PARIS] undefined
21%
[John] [paris] missing: country
27%
[John] [PARIS] missing: country
JavaScript
They deleted the repo, but you can simply use wayback ๐
GitHub
GitHub - rxliuli/apps.apple.com: App Store web version
App Store web version. Contribute to rxliuli/apps.apple.com development by creating an account on GitHub.
โค7
CHALLENGE
const user = {
profile: {
settings: {
theme: 'dark'
}
}
};
const getTheme = (obj) => obj?.profile?.settings?.theme ?? 'light';
const getLanguage = (obj) => obj?.profile?.settings?.language ?? 'en';
const getNotifications = (obj) => obj?.profile?.notifications?.enabled ?? true;
console.log(getTheme(user));
console.log(getLanguage(user));
console.log(getNotifications(user));
console.log(getTheme(null));โค4
What is the output?
Anonymous Quiz
22%
dark, en, true, undefined
46%
dark, en, true, light
24%
dark, undefined, true, undefined
9%
dark, en, undefined, light
โค3๐ฅ3๐คฃ1
CHALLENGE
const moduleMap = new Map();
async function loadModule(name) {
if (moduleMap.has(name)) {
return moduleMap.get(name);
}
const module = await Promise.resolve({
default: () => `Module ${name} loaded`,
version: '1.0.0'
});
moduleMap.set(name, module);
return module;
}
loadModule('auth').then(m => console.log(m.default()));
loadModule('auth').then(m => console.log(m.version));
loadModule('db').then(m => console.log(m.default()));
โค4๐2
CHALLENGE
function createCounter() {
let count = 0;
return {
increment: () => ++count,
decrement: () => --count,
getValue: () => count
};
}
const counter1 = createCounter();
const counter2 = createCounter();
counter1.increment();
counter1.increment();
counter2.increment();
console.log(counter1.getValue(), counter2.getValue());
counter1.decrement();
console.log(counter1.getValue(), counter2.getValue());โค5๐3๐คฉ1
โค9๐ฅ3
CHALLENGE
const wm = new WeakMap();
const obj1 = { name: 'first' };
const obj2 = { name: 'second' };
const obj3 = obj1;
wm.set(obj1, 'value1');
wm.set(obj2, 'value2');
wm.set(obj3, 'value3');
console.log(wm.get(obj1));
console.log(wm.get(obj2));
console.log(wm.get(obj3));
console.log(wm.has(obj1));
console.log(wm.size);
โค3๐2
What is the output?
Anonymous Quiz
21%
value3 value2 value3 true 3
32%
value3 value2 value3 true undefined
33%
value1 value2 value1 true undefined
14%
value1 value2 value3 true 2
๐6๐ฅ3
CHALLENGE
class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}
try {
throw new CustomError('Something went wrong');
} catch (e) {
console.log(e instanceof Error);
console.log(e instanceof CustomError);
console.log(e.constructor.name);
console.log(e.name);
}๐1
What is the output?
Anonymous Quiz
23%
true, false, Error, CustomError
31%
false, true, CustomError, Error
40%
true, true, CustomError, CustomError
6%
true, true, Error, Error
๐6โค3๐ฅ2
CHALLENGE
class EventEmitter {
constructor() {
this.events = {};
}
on(event, callback) {
this.events[event] = this.events[event] || [];
this.events[event].push(callback);
return this;
}
emit(event, data) {
if (this.events[event]) {
this.events[event].forEach(cb => cb(data));
}
return this;
}
}
class Logger {
log(msg) { console.log(`[LOG]: ${msg}`); }
}
class DataProcessor {
constructor(emitter, logger) {
this.emitter = emitter;
this.logger = logger;
this.emitter.on('process', (data) => {
this.logger.log(data.toUpperCase());
});
}
process(data) {
this.emitter.emit('process', data);
}
}
const emitter = new EventEmitter();
const logger = new Logger();
const processor = new DataProcessor(emitter, logger);
processor.process('hello world');
emitter.emit('process', 'composition rocks');1๐4โค1
What is the output?
Anonymous Quiz
40%
[LOG]: HELLO WORLD [LOG]: COMPOSITION ROCKS
33%
[LOG]: COMPOSITION ROCKS [LOG]: hello world
17%
[LOG]: composition rocks [LOG]: HELLO WORLD
10%
[LOG]: hello world [LOG]: composition rocks
๐3โค1๐ฅ1
Did you know the Node.js project maintains a page about security best practices organized around how to mitigate ten of the most significant vectors? Topics include networking weaknesses, timing attacks, supply chain attacks, and the monkey patching of intrinsics.
Node Documentation
Please open Telegram to view this post
VIEW IN TELEGRAM
โค3๐1๐ฅ1
CHALLENGE
const obj = { count: 0 };
const arr = [obj, obj, obj];
function increment(item) {
item.count++;
return item;
}
const results = arr.map(increment);
console.log(obj.count);
console.log(results[0] === results[1]);
console.log(results.length);
console.log(arr[0].count);3โค6
โค8๐3๐ค3
Think something like Plausible or Google Analytics, but built in Node and ready for you to host yourself. Hereโs the full feature list. MIT licensed but also available as a paid hosted service.
Umami Software, Inc.
Please open Telegram to view this post
VIEW IN TELEGRAM
โค8๐ฅ1