js 생성자를 통한 객체 생성과 조작
객체
선언과 조작
- JS의 객체 선언은 매우 간단하다.
let kim = new Object();
kim.age = 12;
kim.name = '김길동'
console.log(kim);
- 아래는 더 쉽다.
let kim = {
name:'김길동',
age:20
}
console.log(kim);
- 객체의 각각의 값을 properties라고 한다. properties의 입력과 삭제, 수정은 다음과 같다.
kim.city = '서울';
kim.age = 15;
delete kim.age;
console.log(kim)
매서드
- 객체의 함수를 매서드라 한다.
- 객체의 프로퍼티스를 사용하기 위해서는 반드시 this 를 사용해야 한다. this를 사용하지 않는 경우 전역변수를 사용한다.
let kim = {
name:'김길동',
age:20,
print : function(){
console.log(`저의 이름은 ${this.name}이며 나이는 ${this.age}입니다.`)
}
}
kim.print()
const kim = {
name:'김길동',
age:20,
print : function(){
console.log('저의 이름은 '+ name +'입니다.') // "저의 이름은 JS Bin Output 입니다." // jsbin.com 을 사용중이며 name 이 전역변수로 있는 것 같다.
console.log('나이는 ' + age + '입니다.') // ReferenceError: age is not defined
}
}
kim.print()
생성자와 객체
생성자 함수의 구현
- 자바의 생성자처럼 객체를 생성하기 위한 일종의 틀을 만들 수 있다.
function User(name, age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(`Hello, ${this.name}`)
}
}
const user1 = new User("kim", 12);
const user2 = new User("lee", 15);
console.log(user1, user2);
user1.sayName();
user2.sayName();
객채 복제
- 참조변수의 복사는 객체 복사가 아니다.
function User(name, age){
this.name = name;
this.age = age;
}
let user = new User("kim", 12);
let copyRef = user;
copyRef.age = 15;
console.log(user)
console.log(copyRef)
- 실제 데이타를 복제하려면 Object.assign 을 사용한다.
- 필드값을 넣을 수 있다.
function User(name, age){
this.name = name;
this.age = age;
}
let user = new User("kim", 12);
let cloneUser = Object.assign({}, user);
cloneUser.age = 15;
console.log(user)
console.log(cloneUser)
let cloneUser2 = Object.assign({birthday : '1999-01-01'}, user);
cloneUser2.age = 15;
console.log(user)
console.log(cloneUser2)
객체 합치기
- 첫 번째 매개변수로 다른 객체의 프로퍼티스가 붙는다.
const user = {
name : 'Mike'
}
const info1 = {
age : 12
}
const info2 = {
birthday : '1999-01-01'
}
Object.assign(user, info1, info2)
console.log(user)
객체의 keys 와 values 추출
- keys와 values를 추출한다.
- entries는 key와 value를 배열로 반환한다.
function User(name, age){
this.name = name;
this.age = age;
}
const user = new User('Kim', 12);
const keys = Object.keys(user);
console.log(keys)
const values = Object.values(user);
console.log(values)
const entries = Object.entries(user);
console.log(entries)
const user = {
name : 'kim',
age : 12,
}
const entries = Object.entries(user);
console.log(entries)
// 리스트 형태로 변경
// [["name", "kim"], ["age", 12]]
const fromEntries = Object.fromEntries(entries);
console.log(fromEntries)
// 리스트를 객체로 변경
// [object Object] {
// age: 12,
// name: "kim"
// }