Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки
Связь: @devmangx
Post #1092
1.67K
WE @webdev_plus
Showing posts older than #1093 · Back to latest


onst getMessage = (users) => {
const formatter = new Intl.ListFormat("en-US", {
style: "long",
// long (по умолчанию), short, narrow
type: "conjunction"
// conjunction (and), disjunction (or), unit
});
return `Hello ${formatter.format(users)}!`;
};
// Автоматически подстраивает грамматику
console.log(getMessage(["Alice"]));
// → "Hello Alice!"
console.log(getMessage(["Alice", "Bob"]));
// → "Hello Alice and Bob!"
console.log(getMessage(["Alice", "Bob", "Charlie"]));
// → "Hello Alice, Bob, and Charlie!"


class UserProfile {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.loginCount = 0;
}
// GETTER: используй для простых вычисляемых свойств без аргументов.
// Читается как существительное: "Какое полное имя?"
get fullName() {
return ${this.firstName} ${this.lastName};
}
// METHOD: используй для тяжелых вычислений, действий
// или когда нужны аргументы.
// Читается как глагол: "Дай форматированное имя."
getFormattedName(includeTitle = false) {
const name = ${this.firstName} ${this.lastName};
return includeTitle ? Mx. ${name} : name;
}
}
// Пример использования
const user = new UserProfile("Alex", "Rivera");
// Getter: лаконичный синтаксис (без скобок) — удобно для доступа к данным
// Не принимает аргументы
console.log(user.fullName); // "Alex Rivera"
// Метод: синтаксис явный (со скобками) — позволяет передавать аргументы
console.log(user.getFormattedName(true)); // "Mx. Alex Rivera"