Please open Telegram to view this post
VIEW IN TELEGRAM
π€£11β€5π1
CHALLENGE
class EventEmitter {
constructor() { this.events = {}; }
on(event, fn) { (this.events[event] ||= []).push(fn); }
emit(event, data) { this.events[event]?.forEach(fn => fn(data)); }
}
class Logger {
log(msg) { console.log(`LOG: ${msg}`); }
}
class Counter {
constructor() { this.count = 0; }
increment() { this.count++; console.log(this.count); }
}
function withLogging(target) {
const logger = new Logger();
return new Proxy(target, {
get(obj, prop) {
if (typeof obj[prop] === 'function') {
return function(...args) {
logger.log(`calling ${prop}`);
return obj[prop].apply(obj, args);
};
}
return obj[prop];
}
});
}
const emitter = withLogging(new EventEmitter());
const counter = new Counter();
emitter.on('tick', () => counter.increment());
emitter.emit('tick');
emitter.emit('tick');
π€6
What is the output?
Anonymous Quiz
18%
LOG: on LOG: emit 1 LOG: emit 2
46%
LOG: calling on 1 2 LOG: calling emit LOG: calling emit
21%
calling on calling emit 1 calling emit 2
15%
LOG: calling on LOG: calling emit 1 LOG: calling emit 2
π₯3β€2π1
CHALLENGE
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}
class Dog extends Animal {
speak() {
return super.speak() + ' and barks';
}
}
const pet = new Dog('Rex');
console.log(pet.speak());
console.log(pet instanceof Animal);
console.log(pet.constructor.name);
β€5π1
What is the output?
Anonymous Quiz
44%
Rex makes a sound and barks true Dog
21%
Rex barks false Dog
26%
Rex makes a sound and barks true Animal
10%
Rex makes a sound true Dog
π10π€1
Each year, Devographics runs an epic survey of as many JavaScript community members as it can and turns the results into an interesting report on the state of the ecosystem β hereβs the results from 2024. If you have the time, fill it in, especially as they format it in a way where you can actually learn about stuff as you go.
Devographics
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π€2π₯1
CHALLENGE
class DataProcessor {
constructor(value) {
this.value = value;
}
transform(fn) {
return new DataProcessor(fn(this.value));
}
getValue() {
return this.value;
}
}
const multiply = x => x * 2;
const add = x => x + 10;
const square = x => x * x;
const result = new DataProcessor(5)
.transform(multiply)
.transform(add)
.transform(square)
.getValue();
console.log(result);
β€2
β€8π3π₯1
CHALLENGE
const Flyable = {
fly() { return 'flying'; }
};
const Swimmable = {
swim() { return 'swimming'; }
};
function mixin(Base, ...mixins) {
mixins.forEach(mixin => Object.assign(Base.prototype, mixin));
return Base;
}
class Bird {}
class Fish {}
const FlyingFish = mixin(class extends Fish {}, Flyable, Swimmable);
const instance = new FlyingFish();
console.log(instance.swim());
console.log(instance.fly());
console.log(instance instanceof Fish);
What is the output?
Anonymous Quiz
20%
flying, swimming, false
48%
swimming, flying, true
24%
undefined, undefined, true
9%
swimming, flying, false
β€2π€1
CHALLENGE
function createCounter() {
let count = 0;
return function(increment = 1) {
count += increment;
return count;
};
}
const counter1 = createCounter();
const counter2 = createCounter();
console.log(counter1());
console.log(counter1(5));
console.log(counter2(3));
console.log(counter1());
console.log(counter2());
β€11π€5
CHALLENGE
const arr = [1, 2, 3, 4, 5];
const obj = { a: 1, b: 2, c: 3 };
const result1 = Object.keys(obj).length;
const result2 = arr.length;
delete obj.b;
obj.d = 4;
const result3 = Object.keys(obj).length;
const result4 = arr.push(6);
arr.length = 3;
const result5 = arr.length;
const result6 = Object.keys(obj).join('');
console.log(result1, result2, result3, result4, result5, result6);
π€2
What is the output?
Anonymous Quiz
18%
2 5 3 6 3 acd
30%
3 5 2 6 3 adc
17%
3 5 3 7 3 acd
35%
3 5 3 6 3 acd
β€6π1π₯1
The maintainers of the Deno runtime reflect on the recent npm ecosystem security issues and show off how Denoβs non-permissive explicit βsecure by defaultβ model can help.
Andy Jiang
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π₯3π2π€©2
CHALLENGE
const multiply = (a) => (b) => (c) => a * b * c;
const step1 = multiply(2);
const step2 = step1(3);
const result1 = step2(4);
const partialMult = multiply(5)(6);
const result2 = partialMult(7);
const directResult = multiply(1)(8)(9);
console.log(result1);
console.log(result2);
console.log(directResult);
console.log(typeof step1);
console.log(typeof partialMult);
β€1
What is the output?
Anonymous Quiz
24%
24 210 72 object object
23%
6 18 9 function function
23%
NaN NaN NaN function function
29%
24 210 72 function function
π€£5π3β€1
Many features that once required third-party packages are now built into the runtime itself. Hereβs a look at some of the most notable that you may want to experiment with, prior to reducing unnecessary dependencies.
Lizz Parody
Please open Telegram to view this post
VIEW IN TELEGRAM
β€8π₯4π2π€©1
CHALLENGE
function mystery(arr, depth = 0) {
if (arr.length <= 1) return arr;
const mid = Math.floor(arr.length / 2);
const left = mystery(arr.slice(0, mid), depth + 1);
const right = mystery(arr.slice(mid), depth + 1);
const result = [];
let i = 0, j = 0;
while (i < left.length && j < right.length) {
result.push(left[i] <= right[j] ? left[i++] : right[j++]);
}
return result.concat(left.slice(i)).concat(right.slice(j));
}
const arr = [3, 1, 4, 1, 5];
console.log(mystery(arr));
β€4
What is the output?
Anonymous Quiz
24%
[5, 4, 3, 1, 1]
42%
[1, 1, 3, 4, 5]
16%
[1, 3, 1, 4, 5]
18%
[3, 1, 4, 1, 5]
π₯3β€2π2