<aside> 🔥 객체를 생성할 때 사용하는 함수

</aside>

const user1 = {
	name: "John",
	age: 30,
	gender: "male",
}

const user2 = {
	name: "Anna",
	age: 20,
	gender: "female",
}

const user3 = {
	name: "Alex",
	age: 25,
	gender: "male",
}

⇒ 객체의 속성이 동일하다는 공통점이 이음

<aside> 💡 객체의 속성이 같고 값이 다른 경우에 객체를 생성할 수 있는 생성자 함수를 제공

</aside>

function User(name, age, gender) {
	// this = {}
	this.name = name;
	this.age = age;
	this.gender = gender;
	this.introduce = function () {
		console.log(
			`이름: ${this.name}, 나이: ${this.age}, 성별: ${this.gender}`
		)
	}
	// return this
}
// new라는 키워드를 붙이면 주석같은 코드가 샐행된다고 생각하면 될 듯

const user1 = new User("Jhone", 30, "male");
const user1 = new User("Anna", 20, "female");
const user1 = new User("Alex", 25, "male");

user1.introduce() // 호출한 객체가 user1이기 때문에 this가 user1이 돼어 해당 속성 값으로 출력

<aside> 💡 생성자의 속성만 수정하면 되기 때문에 유지보수가 쉬워짐

</aside>

Prototype

객체를 출력할 때 나오는 Protoype은 뭘까?

<aside> 🔥 모든 함수(생성자)는 자신과 1 : 1로 매칭되는 프로토타입을 가짐

</aside>

함수에서 프로토타입 공간으로 어떻게 접근함?

func → prototype: 함수의 prototype속성 참조 prototype → func: constructor 참조

⇒ 객체와 프로토타입은 상호 참조 가능