일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- 실용주의프로그래밍
- 11399번문제
- 이벤트위임
- 노마드북클럽
- 캐럿마켓클론
- 이펙티브타입스크립트
- 개발자필독서?
- 실용주의프로그래머
- 개발자필독서
- 코딩
- 클린코드
- 북클럽
- 1931번문제
- 개발자
- JS비동기처리
- 이벤트위임예제
- 리액트의탄생
- 2월기념일을위해서달리자
- JavaScript
- 백준문제풀이
- 노마드코더
- 취업준비중..
- 취업준비중
- 시작
- CSS
- 프론트엔드 개발을 위한 자바스크립트 (feat. VanillaJS)
- 노개북
- 그리디알고리즘
- 자바스크립트스터디
Archives
- Today
- Total
파카
객체 (2) 본문
계속 머릿속에서만 생각하니 더 복잡해져만 가는 기분이 들어
역시 남겨놓고 수정해야지 하면서 계속 기록에 남겨놓으려고 한다.
객체안에는 함수를 넣어서 사용할 수 있다.
자연스럽게 Getter와 Setter에 대해 알아보자.
그 전에 JS의 정의를 보면 아래와 같다.
Javascript는 프로토타입 기반 객체 생성을 지원하는 동적 스크립트 언어이다.
이게 무슨 소리일까.. 간단히 정리해보자
- 자바스크립트는 객체지향언어이다.
- 일반적인 다른 언어(C++, JAVA)와는 다르다.
객체 지향 언어에는 2가지 큰 틀이 있다
- 클래스 기반
- 프로토타입 기반
(객체의 원형인 프로토타입을 이용하여 새로운 객체를 만들어내는 프로그래밍 기법이다. 이렇게 만들어진 객체 역시 자기자신의 프로토타입을 갖는다. 이 새로운 객체의 원형을 이용하면 또 다른 새로운 객체를 만들어 낼수도 있으며 이런 구조로 객체를 확장하는 방식을 프로토타입 기반 프로그래밍이라고 한다.)
이것도 정리하면 JavaScript에는 클래스라는 개념이 없다.
사실상 추후에 다룰 class가 추가되긴 했지만 클래스 기반 언어와는 다르다.
기본적으로 클래스 기반언어는 이전에 얘기했던 것처럼 어떤 객체의 틀이된다.
프로토타입 기반 언어는 객체들을 prototype으로 연결 시킨다.
또한 상속 받은 객체의 내용을 동적으로 추가 및 삭제할 수 있다.
JS에서는 함수도 하나의 값이라는 말을 듣게 되는데
위의 개념을 정리하면 자연스럽게 이해가 될 거 같다.
말이 너무 길었다.. 쓰면서도 뭔가 싶다..
한번 문법과 구조를 코드로 작성해보자
객체 내에 메서드를 추가할 수 있다.
한번 더 정리
// 메소드는 3가지 방법이 있다.
// 아래의 선언된 메소드를 참고
const obj = {
name: "Seong Chan",
age : 30,
getFamilyName: function() {
return "An";
},
// arrow function
getLastName: () => "An",
getBloodType() {
return "B";
},
};
JS는 객체 지향 언어이다.
객체의 보호를 위해 캡슐화 개념을 지원하는데 그게 Getter와 Setter이다.
// 아래의 선언된 메소드를 참고
const obj = {
name: "Seong Chan",
age : 30,
getFamilyName: function() {
return "An";
},
// arrow function
getLastName: () => "An",
getBloodType() {
return "B";
},
get fullName() {
return `${obj.name} ${obj.getLastName()}`;
},
set setAge(value){
if(value >=0 && value < 120) {
this.age = value;
} else {
this.age = 0;
}
},
};
// Getter와 Setter
/*
문제가 있는 값을 세팅하는 것을 막고싶을 때
객체의 내부적으로는 실제 함수인데 객체 외부에서는 속성처럼 보이게 하는 방법
*/
obj.setAge = 131; // setAge: [Setter]
console.log(obj.fullName); // fullName: [Getter]
console.log(obj);
console.log(obj.getFamilyName); // [Function: getFamilyName]
console.log(obj.getFamilyName());
근데 JS는 동적프로그래밍 언어이다 보니
객체의 속성을 막 지울 수 있다. 허허..
추후 클래스를 정리하면서 관련된 내용을 더 알아보도록 하자.
'프로그래밍 > Javascript' 카테고리의 다른 글
일급함수, 일급객체란 ? (0) | 2021.12.08 |
---|---|
클래스 그리고 prototype (0) | 2021.11.10 |
객체 (1) (0) | 2021.11.09 |
호이스팅이란? (0) | 2021.11.08 |
JS, 함수 (2) (0) | 2021.11.01 |
Comments