1. 일반적인 객체 생성 방법
// 객체 생성자 함수를 사용하여 객체 생성
function Person(name, age) {
this.name = name;
this.age = age;
}
// 새로운 객체 생성
let person1 = new Person("gyodam", 21);
console.log(person1); // 출력: Person { name: 'gyodam', age: 21 }
// 프로토타입을 사용한 메서드 추가
Person.prototype.greet = function() {
console.log("Hello, my name is " + this.name);
};
person1.greet(); // 출력: Hello, my name is Gyodam
객체 생성자 함수를 사용하여 객체를 생성함.
객체 생성자 함수는 new 키워드와 함께 호출되고, 함수 내부에서 this 키워드를 사용하여 객체의 속성을 정의함
또한, Prototype 를 사용하여 객체의 메서드를 추가할 수 있음
2. 객체 리터럴을 사용하여 객체 생성
// 객체 리터럴을 사용하여 객체 생성
let person2 = {
name: "seongbin",
age: 25,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
console.log(person2); // 출력: { name: 'seongbin', age: 25, greet: [Function: greet] }
person2.greet(); // 출력: Hello, my name is seongbin
중괄호 {} 내의 속성과 해당 속성의 값을 정의
메서드도 속성으로 추가할 수 있음
이는 함수 표현식이나 어레이 함수 사용 가능
3. Object.create() 를 사용한 객체 생성 :
// 프로토타입을 기반으로 새로운 객체 생성
let personPrototype = {
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
let person = Object.create(personPrototype);
person.name = "gyodam";
person.age = 21;
console.log(person); // 출력: { name: 'gyodam', age: 21 }
person.greet(); // 출력: Hello, my name is gyodam
지정된 프로토타입 객체를 기반으로 새로운 객체를 생성
프로토타입 객체의 속성과 메서드를 상속받아 새로운 객체를 구성함
4. 클래스를 이용한 객체 생성
// 프로토타입을 기반으로 새로운 객체 생성
let personPrototype = {
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
let person = Object.create(personPrototype);
person.name = "gyodam";
person.age = 21;
console.log(person); // 출력: { name: 'gyodam', age: 21 }
person.greet(); // 출력: Hello, my name is gyodam
class 키워드를 사용하여 클래스를 정의하고, constructor 메서드를 사용하여 객체를 초기화한다.
클래스 내의 정의단 다른 메서드들은 클래스의 프로토타입에 할당된다
위의 예시 코드에서는 Person 클래스를 정의하고 new 키워드를 사용하여 객체를 생성한다.
클래스를 사용하여 객체를 생성하면 자동으로 생성자 함수와 프로토타입 객체가 만들어지며, 인스턴스화된 객체를 사용할 수 있다
이는 객체 생성에 유연성을 더한다
5. 팩토리 함수를 사용한 객체 생성
function createPerson(name, age) {
return {
name: name,
age: age,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
}
let person = createPerson("gyodam", 21);
console.log(person); // 출력: { name: 'gyodam', age: 21 }
person.greet(); // 출력: Hello, my name is gyodam
팩토리 함수는 객체를 생성하여 변환하는 함수이다.
원하는 속성과 메서드를 가진 객체를 생성하고 반환한다
6. object.assign()을 사용한 객체 생성
let person = {
name: "gyodam",
age: 21
};
let extendedPerson = Object.assign({}, person, { city: "busan" });
console.log(extendedPerson);
출력: {name: 'gyodam', age :21 , city: 'busan')
Object.assign() 메서드를 사용하면 기존 객체를 확장하거나 병합하여 새로운 객체를 생성할 수 있다.
7. 프로토타입 상속을 사용한 객체 생성
let personPrototype = {
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
let person = Object.create(personPrototype, {
name: { value: "gyodam" },
age: { value: 21 }
});
console.log(person); // 출력: { name: 'gyodam', age: 21 }
person.greet(); // 출력: Hello, my name is gyodam
Object.create() 메서드를 사용하여 프로토타입 객체와 속성을 지정하여 객체를 생성하는 방식
8. ES6의 구조 분해 할당을 사용한 객체 생성
let name = "Gyodam";
let age = 21;
let person = { name, age };
console.log(person); // 출력: { name: 'gyodam', age: 21 }
변수로부터 속성 이름과 값이 추출되어 객체를 생성할 수 있음
이 외에도 정말 많은 방법이 있지만 여기까지 포스팅해보도록 하겠음
'2023 공부한것들' 카테고리의 다른 글
[node.js] javascript의 역사 (0) | 2023.06.13 |
---|---|
런타임이란? (런타임 시점) (0) | 2023.06.13 |
[github] 개인 레포지토리에서 원본 레포지토리로 Pr 보내기 (git CLI) (0) | 2023.06.12 |
[Github pr/merge/Conflict 해결] github CLI 사용(터미널 위주) (0) | 2023.06.12 |
[python] [야구시뮬레이터] [결과] 스크래핑한 타자들의 성적 몽고db에 저장하기 (bs4. pymongo 등) (0) | 2023.06.05 |