Javascript

#Object 객체 메서드

김코린이 2023. 2. 28. 14:30

●Object.create()

- 주어진 프로토타입의 객체와 속성들을 갖고 있는 새 객체를 생성한다. 각각 프로퍼티의 속성들까지 넣어줄 수 있다. 

let coffee = Object.create(Object.prototype, {
    name: { 
        value: 'Americano',
        writable: true,
        configurable: true,
        enumerable: true,
    },
    price: { 
        value: 4100,
        writable: true,
        configurable: true,
        enumerable: true,
    },
    get: {
        value: function() {
            return this.name;
        }
    },
    set: {
        value: function(name) {
            this.name = name
        }
    }
})

console.log(coffee)
// { name: 'Americano', price: 4100 }

 

●Object.assign()

- 하나 이상의 원본 객체들로부터 모든 열거가능한 속성들을 대상 객체로 복사한다. 아래와 같이 그냥 변수에 다른 객체를 할당하면 복제되어 원본 객체가 수정되면, 참조을 복사한 변수도 같이 수정된다. 즉 같은 메모리 주소를 참조하고 있기 때문에 그냥 같다고 볼 수 있다.

var user ={
  name : "mike",
  age : 30
}

var cloneUser = user; // 객체주소 참조값이 복사된다. -> 서로 공유한다. 진정한 복사 X

// gender 라는 프로퍼티를 추가한다.
user.gender = "male"

console.log(user)
// {name: 'mike', age: 30, gender: 'male'}

console.log(cloneUser)
{name: 'mike', age: 30, gender: 'male'}

- 아래는 assign 메서드를 활용한 예시를 볼 수 있다.

var user ={
  name : "mike",
  age : 30
}

// 참조값이 다르게 복사하기 (빈 객체를 열고, 뒤에오는 인수에 복제할 객체를 넣어준다.)
var cloneUser2 = Object.assign({}, user);

console.log(cloneUser2);
// { name: 'mike', age: 30 }


// 다른 프로퍼티를 추가해 복사할 객체와 합쳐주기
var cloneUser3 = Object.assign({gender: 'male'}, user);

console.log(cloneUser3)
// { gender: 'male', name: 'mike', age: 30 }

// 복사할 객체에 다른 값 대체해서 합쳐주기
var cloneUser4 = Object.assign({name: 'James'}, user);

console.log(cloneUser4);
// { name: 'James', age: 30 }

 

const user = { name : "Mike" }
const age_info = { age : 30 }
const gender_info = { gender : "male" }
//여러가지 객체들을 모두 합쳐서 한 객체로 만들기
var cloneUser5 = Object.assign(user, age_info, gender_info);

console.log(cloneUser5);
// { name: 'Mike', age: 30, gender: 'male' }

 

●Object.keys()

- 객체의 키만 담은 배열을 반환해준다.

const numbers = {
  a : 1,
  b : 2,
  c: 3,
}

let array = Object.keys(numbers);
console.log(array)
// 배열로 반환
// [ 'a', 'b', 'c' ]

 

●Object.values()

- 객체의 값만 담은 배열을 반환해준다.

const numbers = {
  a : 1,
  b : 2,
  c: 3,
}

let array = Object.values(numbers);
console.log(array)
// 배열로 반환
// [ 1, 2, 3 ]

 

●Object.entries()

- 객체의 키와 값을 담은 배열을 반환해준다.

const numbers = {
  a : 1,
  b : 2,
  c: 3,
}

let array = Object.entries(numbers);
console.log(array)
// 배열로 반환
// [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]

 

●Object.fromEntries()

- [키, 값] 형태의 배열을 객체로 반환해준다.

const numbers = {
  a : 1,
  b : 2,
  c: 3,
}

let array = Object.entries(numbers);
console.log(array)
// 배열로 반환
// [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]

let returnArray = Object.fromEntries(array);
console.log(returnArray);
// { a: 1, b: 2, c: 3 }