class Address {
constructor(street = "", city = "", zip = 0) {
this.street = street;
this.city = city;
this.zip = zip;
}
}
const Status = {
Active: "Active",
Inactive: "Inactive",
Unknown: "Unknown"
};
class Person {
constructor() {
this.homeAddress = new Address();
this.favoriteNumbers = [0, 0, 0, 0, 0];
this.nickname = null;
this.birthDate = new Date(1990, 0, 1); // JS months are 0-based
this.notes = "No notes";
this.middleName = null;
this.hobbies = [];
this.status = Status.Unknown;
}
}
function printPerson(p) {
console.log(`Address: ${p.homeAddress.street}, ${p.homeAddress.city} ${p.homeAddress.zip}`);
console.log("Favorite Numbers:", p.favoriteNumbers.join(" "));
console.log("Nickname:", p.nickname ?? "(none)");
const y = p.birthDate.getFullYear();
const m = String(p.birthDate.getMonth() + 1).padStart(2, "0");
const d = String(p.birthDate.getDate()).padStart(2, "0");
console.log(`Birth Date: ${y}-${m}-${d}`);
console.log("Notes:", p.notes);
console.log("Middle Name:", p.middleName ?? "(none)");
console.log("Hobbies:", p.hobbies.length > 0 ? p.hobbies.join(", ") + ", " : "(none)");
console.log("Status:", p.status);
}
// --- Usage example ---
const p = new Person();
p.homeAddress.street = "Fifth Avenue";
p.homeAddress.city = "New York";
p.homeAddress.zip = 423900;
p.favoriteNumbers = [7, 13, 21, 42, 99];
p.nickname = "Orion";
p.birthDate = new Date(1026, 5, 15); // June = 5
p.notes = "Voss likes C/C++ and structs";
p.middleName = "Pulse‑9";
p.hobbies = ["Coding", "Dreaming", "Walking", "Sci-Fi Movies"];
p.status = Status.Active;
printPerson(p);
/*
run:
Address: Fifth Avenue, New York 423900
Favorite Numbers: 7 13 21 42 9
Nickname: Orion
Birth Date: 1026-06-15
Notes: Voss likes C/C++ and structs
Middle Name: Pulse‑9
Hobbies: Coding, Dreaming, Walking, Sci-Fi Movies,
Status: Active
*/