JavaScript

객체

오류확인자 2023. 6. 30. 21:13

객체의 생성 방식

1. let person = new Object();

2. let person = {}; // 객체 리터럴 방식

 

let person = {
  key: "value", // 프로퍼티(객체 프로퍼티))
  key1: "value",
  key2: true,
  key3: undefined,
  key4: [1, 2],
  key5: function () {}
}; // 객체 리터럴 방식

console.log(person);
//
key: "value"
key1: "value"
key2: true
key3: undefined
key4: Array(2)
key5: ƒ key5() {}

키 :  밸류 방식으로 생성해야함.

키는 무조건 문자로 작성

키 끼리 중복은 최대한 안되게 해야한다.

 

표기법

let person = {
  key: "value", // 프로퍼티(객체 프로퍼티))
  key1: "value",
  key2: true,
  key3: undefined,
  key4: [1, 2],
  key5: function () {}
}; // 객체 리터럴 방식

console.log(person.key1) // 점 표기법

위와 같이 Key1의 값을 꺼내고자 할 때 person.key1 이런식으로 함.

 

두번째 표기법

let person = {
  name: '이도영',
  age: 25
}; // 객체 리터럴 방식

console.log(person["name"]); // 괄호표기법

안에 괄호안에 사용하려면 무조건 문자열로 만들어서 사용해야함.

문자열이 아닌 경우 아래와 같이 문자열로 만들어야함

let person = {
  name: '이도영',
  age: 25
}; // 객체 리터럴 방식
const name='name';
console.log(person[name]);

동적인 파라미터를 전달받는 경우에 사용한다.

키가 고정되어있지 않는 경우에 괄호 표기법을 사용한다.

let person = {
  name: '이도영',
  age: 25
}; // 객체 리터럴 방식

console.log(getPropertyValue("name"));

function getPropertyValue (key) {
  return person[key];
}

 

객체 안에 값을 추가할 때

1.

let person = {
  name: '이도영',
  age: 25
}

person.location = "한국";
console.log(person); // {name: "이도영", age: 25, location: "한국"}

2.

let person = {
  name: '이도영',
  age: 25
}

person.location = "한국";
person["gender"] ="남성";
console.log(person); // {name: "이도영", age: 25, location: "한국", gender: "남성"}

 

객체안에 수정하기

let person = {
  name: '이도영',
  age: 25
}

person.location = "한국";
person["gender"] ="남성";

person.name='이도영 A';
person["age"]= 40;
console.log(person); // {name: "이도영 A", age: 40, location: "한국", gender: "남성"}

상수로 선언한 자체 대입연산을 하지 않는 이상 const로 선언으로 해도 추가 수정하는데 오류가 안뜸.

 

객체 안에 프로퍼티 삭제하기

let person = {
  name: '이도영',
  age: 25
}

delete person.age;

console.log(person); // {name: "이도영"}

2.

let person = {
  name: '이도영',
  age: 25
}

delete person.age;
delete person['name'];
console.log(person);// {}

이 위에 방법들은 메모리를 그대로 나두기 때문에 아래와 같은 방법으로 삭제하는게 좋음

아래 방법은 메모리까지 없애줌

let person = {
  name: '이도영',
  age: 25
}

person.name = null;

console.log(person); // {name: null, age: 25}

안에 객체를 부를때

let person = {
  name: "이도영", // 멤버
  age: 25, // 멤버
  say: function () {
    console.log("안녕");
  } // 메서드 -> 방법
};

person.say(); // 안녕
person['say'](); // 안녕

객체 안에 있는 함수를 메서드라고 부름

say: function () {
    console.log("안녕");
  } // 메서드 -> 방법
};

this. 자기 자신의 객체

this 가 예를 들면 person이라고 생각해야함

let person = {
  name: "이도영",
  age: 25,
  say: function () {
    console.log(`안녕 나는 ${this.name}`);
  }
};

person.say();
person['say'](); // 안녕 나는 이도영

존재하지 않는 프로퍼티는 추가할 것 아니면 접근을 안하는게 좋음

let person = {
  name: "이도영",
  age: 25,
  say: function () {
    console.log(`안녕 나는 ${this.name}`);
  }
};

console.log(person.gender); // undefined

객체 안에 해당 프로퍼티가 존재하는 지 확인하려면

let person = {
  name: "이도영",
  age: 25,
  say: function () {
    console.log(`안녕 나는 ${this.name}`);
  }
};

console.log(`name : ${'name' in person}`)// name : true
console.log(`age : ${'age' in person}`)// age : true
console.log(`gender : ${'gender' in person}`)// gender : false

위와 같이 name가 person 안에 존재여부를 불리언으로 표현할 수 있다.