반응형
Constructor function(생성자 함수)
객체 리터럴
- 다음과 같이 객체를 생성하는 방법
let user={ name: 'mike', age : 32, }
- 회원, 상품 등 같은 객체를 여러개 만들어야 할 때 불편하다.
생성자 함수
- 객체의 요소를 전달받아 객체를 생성한다. 보통 첫 글자는 대문자.
- 객체 리터럴보다 빠르고 간편하게 일관성있는 객체를 생산할 수 있다. 생성자 함수만 수정하면 수많은 객체를 다르게 만들 수 있다.
-
new 연산자 로 함수를 호출한다.function User(name, age){ //this={}; this.name=name; this.age=age; this.sayName=function(){ console.log(this.name); } //return this; } let user1=new User('mike',32); let user2=new User('sujan',27); user1.sayName();
- 동작 원리
- new 함수명()이 호출된다.
- 함수 내에서 우선 this = {} 로 빈 객체를 this에 할당한다.
- 함수의 본문을 실행하며 this의 프로퍼티들을 추가한다.
- 본문이 끝나면 this를 반환하게 된다.
Object methods
- Object.assign()
const user={ name: 'mike', age : 32, } const cloneUser=user;
- 변수 user에는 객체 데이터가 아닌, 객체가 저장된 메모리 주소가 저장되어 있다.
- 즉, 새로운 변수에 할당하면 하나의 메모리 주소에 두개의 변수가 접근하게 된다.
const user={ name: 'mike', age : 32, } const cloneUser=Object.assign({}, user);
- assign() 을 사용하여 user객체의 데이터를 복사하여 새로운 변수에 저장한다.
const cloneUser=Object.assign({'gender':'male'}, user);
- 앞의 { } 객체에 user객체를 병합한 객체가 반환된다.
- key가 같은 정보를 넣어주면, user객체의 데이터가 덮어씌어진다.
const user={ name: 'mike'} const info1={ age: 30} const info2={ gender: 'male'} Object.assign(user,info1, info2)
- 여러 객체를 입력해도 똑같이 동작한다.
- user객체에 info1이 추가됨. 추가된 객체에 info2이 추가됨.
2. Object.keys(), Object.values()
- Object.keys(user) : user객체의 키를 배열로 반환
- Object.values(user): user객체의 값을 배열로 반환
3. Object.entries()
- 객체를 [키,값] 을 배열로 묶은 2차원 배열로 반환.
const user={ name: 'mike', age : 32, }
Object.entries(user);
// [["name","mike"], ["age":32]]
4. Object.fromEntries()
- [키,값] 을 배열로 묶은 2차원 배열을 객체로 반환.
const arr=[["name","mike"], ["age":32]];
Object.fromEntries(arr)
// const user={
// name: 'mike',
// age : 32,
// }
반응형
'Web Development' 카테고리의 다른 글
자바스크립트의 특징; 인터프리터, 명령형, 함수형, 프로토타입 기반 객체지향 언어 ? (0) | 2022.01.03 |
---|---|
align-content vs align-items 차이 (0) | 2021.08.23 |
스파르타코딩클럽 완주! 기념 회고록, 후기! | 국비지원, 웹개발 풀스택, 온라인 강의 (0) | 2021.08.13 |
[JS] var의 단점은? / 변수와 호이스팅, TDZ(Temporal Dead Zone) (0) | 2021.08.10 |
[자바스크립트] 함수 splice vs slice 차이점 (0) | 2021.08.10 |