객체

GunYong·2023년 7월 8일
0

객체

생성자 함수에 의한 객체 생성 - Object 생성자 함수

new 연산자로 Object 생성자 함수를 호출하면 빈 객체를 생성한다.

const person = new Object();

person.name = 'gunyong';
person.sayHi = function() {
  console.log('hi! Im' + this.name);
}

생성자 함수는 new 연산자와 함께 호출하여 객체를 생성하는 함수이다. 이때 생성자 함수(constructor)에 의해 생성된 객체를 인스턴스라고 한다.

생성자 함수

  • 객체 리터럴에 의해 객체 생성시 문제 -> 생성자 함수에 의한 객체 생성 방식으로 커버

직관적이고 편하지만 중복적인 객체가 반복될때 비효율적이다. -> 생성자 함수로 템플릿을 만들어놓고 필요할때 사용 가능.

this

this는 객체 자신의 프로퍼티나 메서드를 참조하기 위해 자기 참조 변수이다. this 가 가리키는 값은 함수 호출 방식에 따라 결정된다.

일반 함수로서 호출 -> 전역 객체

function prac() {
  console.log(this);
}
prac();

메서드로서 호출 -> 메서드를 호출한 객체

const obj  = {prac};
obj.prac();

생성자 함수로서 호출 -> 생성자 함수가 생성할 인스턴스

const inst = new prac();

생성자 함수와 인스턴스 생성 과정

// 생성자 함수
function Circle(radius) {
  // 인스턴스 초기화
  this.radius = radius;
  this.practice = function() {
    return 2 * this.radius;
  }
}

// 인스턴스 생성
const circle1 = new Circle(1);

우리는 생성자 함수를 통해서 템플릿을 만드는 것이다.

그럼 인스턴스는 왜 초기화 하는것일까? 생성자 함수에서 인스턴스를 초기화하면 개체의 초기 상태 또는 속성을 정의해서 각 인스턴스가 고유한 값을 가질 수 있게 해준다. 초기값으로 고정값을 설정해주는 것이다.

new 연산자

일반 함수와 생성자 함수의 차이는 new 연산자와 함께 함수를 호출하면 생성자 함수로 동작하는 것이다. 함수 객체의 내부 메서드 call 이 호출되는 것이 아니고 constuctor 가 호출된다.

프로퍼티 다루기

  • 프로퍼티 존재 확인
const person = {
  name : 'Lee',
  address "Seoul",
}

console.log('name' in person); // true;
console.log('age' in person) //false;
  • 프로퍼티 열거

객체의 모든 프로퍼티를 순회하며 열거하려면 for ... in 사용

배열 돌때 for...of문과 비슷한 성질을 가지고 있지만 in 은 객체를 순회할때 사용한다는 차이점이 있다.

따라서 배열을 돌때는 for / for..of / forEach 문을 사용한다.

0개의 댓글