All quizzesHard
Architectural Patterns — Series 2
Preview — 3 of 10 questions
What is logged?
javascript
class ViewModel {
#listeners = [];
#name = '';
get name() {
return this.#name;
}
set name(value) {
this.#name = value;
this.#listeners.forEach((fn) => fn(value));
}
onChange(fn) {
this.#listeners.push(fn);
}
}
const vm = new ViewModel();
let renderedText = '';
vm.onChange((value) => {
renderedText = `Hello, ${value}`;
});
vm.name = 'Alice';
console.log(renderedText);
vm.name = 'Bob';
console.log(renderedText);A"", ""
B"Hello, Alice", "Hello, Bob"
C"Hello, Alice", "Hello, Alice"
D"Hello, undefined", "Hello, Bob"
What is logged?
javascript
function createStore(reducer, initialState) {
let state = initialState;
const listeners = [];
return {
getState: () => state,
dispatch(action) {
state = reducer(state, action);
listeners.forEach((l) => l(state));
},
subscribe(listener) {
listeners.push(listener);
},
};
}
function counterReducer(state, action) {
switch (action.type) {
case 'INCREMENT':
return { count: state.count + 1 };
case 'DECREMENT':
return { count: state.count - 1 };
default:
return state;
}
}
const store = createStore(counterReducer, { count: 0 });
const history = [];
store.subscribe((state) => history.push(state.count));
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'INCREMENT' });
store.dispatch({ type: 'DECREMENT' });
console.log(history);
console.log(store.getState().count);A[0, 1, 2], 1
B[1, 2, 1], 2
C[1, 2, 3], 3
D[1, 2, 1], 1
What is logged?
javascript
class InMemoryUserRepository {
#users = new Map();
save(user) {
this.#users.set(user.id, user);
}
findById(id) {
return this.#users.get(id) ?? null;
}
findAll() {
return [...this.#users.values()];
}
}
class UserService {
constructor(repository) {
this.repository = repository;
}
registerUser(user) {
this.repository.save(user);
return this.repository.findById(user.id);
}
}
const service = new UserService(new InMemoryUserRepository());
const registered = service.registerUser({ id: 1, name: 'Alice' });
console.log(registered.name);
console.log(service.repository.findAll().length);A"Alice", 1
Bundefined, 1
C"Alice", 0
DTypeError: this.repository.save is not a function
Sign up free to play
Answer all 10 questions (7 more), see explanations for every answer, and track your score.