JavaScript

241211 JavaScript 04 - 객체

suerte10 2024. 12. 11. 17:44

1. 객체(Object)

1) JSON

브라우저 콘솔 화면

 

2) 객체 프로퍼티 접근/변경

브라우저 콘솔 화면

 

3) 메서드를 갖는 객체

브라우저 콘솔 화면

 

4) 생성자 함수

브라우저 콘솔 화면

만약에 똑같은 형태의 객체를 여러개 만들어야한다면, 객체의 메서드를 일일이 다시 작성하는 번거로움이 있을 수 있다.

그래서 JS에서는 똑같은 프로퍼티와 메서드들을 갖는 객체를 생성하는 방법을 여러가지 제공하는데, 그 중 하나가 생성자 함수이다.

  * 생성자 함수에서 필드를 선언할 때는 반드시 앞에 this를 붙여야 함.

  * 메서드를 선언할 때도 반드시 앞에 this를 붙어야 함.

 

 

(1) 파라미터가 있는 생성자 함수를 아규먼트 없이 호출할 경우 파라미터값에는 undefined가 할당된다.

브라우저 콘솔 화면

 

(2) default parameter를 활용하면 파라미터에 undefined가 들어가는 것을 방지할 수 있다.

브라우저 콘솔 화면

 

5) 객체에서 for-in 구문 사용

브라우저 콘솔 화면

 

6) 객체의 destructuring assignment(구조분해 할당)

브라우저 콘솔 화면

 

7) 클래스 선언과 객체 생성

브라우저 콘솔 화면

 

 

2. 객체의 구조분해 할당 응용

(1) 배열과 다르게 중괄호를 사용한다!

(2) 배열의 아이템들보다 구조분해 할당 변수의 개수가 적은 경우 : 순서대로 아이템들이 할당됨

(3) 배열의 아이템들보다 구조분해 할당 변수의 개수가 더 많은 경우 : 순서대로 아이템들이 할당되고 할당되지 않은 변수에는 undefined가 저장됨

(4) rest 연산자(...) 를 객체의 구조분해 할당에서도 사용할 수 있다.

  * rest 연산 결과는 새로운 객체로 저장된다.

(5) 구조분해 할당을 이용하면 지역변수 선언하는 코드를 줄일 수 있고, 코드를 좀 더 간결하게 만들 수 있다.

 

브라우저 콘솔 화면

 

 

 

※ 자바에는 오버로딩이라는 개념이 있지만 자바스크립트에는 없다. 자바스크립트에서는 같은 이름으로 함수를 여러개 만들면 제일 마지막에 작성한 함수가 호출된다.

 

※ 파라미터보다 더 많은 아규먼트를 입력하면 파라미터 값으로 사용되지 않은 아규먼트들은 arguments 프로퍼티에 저장된다.

 

※ 앰퍼샌드는 HTML에서 특정 용도로도 사용하기 때문에 화면 출력용으로 &을 입력할 경우 전통적으로 & 로 입력함.

요즘 브라우저는 알아서 잘 해석하긴 하지만 Eclipse 프로그램에서는 에러가 표시됨.

  * (참고) &lt; → ' < ', &gt; → ' > '

 

-----------------------------------------

자바스크립트가 자바와 다른 점

함수가 객체여서 함수마다 property 를 가질 수 있따. 함수를 변수에 할당할 수 있다.

함수 이름만 쓰면 함수 객체, 함수 이름 다음에 괄호를 쓰면 함수의 결과를 저장하는 것임에 주의!

변수에 함수를 저장할 수 있기 때문에 아규먼트로 함수를 주는 것도 가능하다.

함수는 함수를 리턴할 수도 있다. 리턴값이 함수가 될 수 있음.

가장 큰 특징 중 하나는 함수 내부에서 다른 함수를 선언할 수 있다는 것(내부 함수).

자바에서는 메서드 안에 메서드를 만들 수 없음.