일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Coroutines
- Kotlin
- appbar
- LifeCycle
- 앱
- viewmodel
- 계측
- Button
- activity
- tabbar
- Navigation
- Dialog
- DART
- binding
- 안드로이드
- 앱바
- intent
- CustomScrollView
- TEST
- livedata
- textview
- 테스트
- Flutter
- ScrollView
- android
- drift
- data
- scroll
- Compose
- textfield
- Today
- Total
Study Record
[JavaScript] 객체 본문
객체
자바스크립트의 객체란 키로 접근하는 요소가 배열형태로 늘어선 것을 말한다. 객체의 주체는 개개의 요소가 아닌 개체 그 자체에 초점을 맞춘다. 프로그램상에서 취급하는 대상을 객체로 생각해서 그렇게 만들어진 객체를 중심으로 코드를 조립해 나가는 수법을 객체지향이라고 부른다.
객체 = 프로퍼티 + 메소드
객체는 프로퍼티와 메소드로 이루어져 있다. 프로퍼티란 객체의 상태나 특성을 나타내기 위한 정보를 말한다. 이에 반하여 메소드는 객체(개체)를 조작하기 위한 도구이다.
new 연산자로 객체 인스턴스화
객체는 자기 자신 안에서 데이터를 보존할 수 있다는 성질을 가지고 있다. 하나의 객체를 여러 애플리케이션이 특정 객체에 대해 프로퍼티 값을 변경해버리면 데이터가 충돌하여 애플리케이션이 올바르게 동작하지 못한다. 따라서 객체의 원본에는 손을 대지 않고 원본을 복제한 복사본을 만들어 각자 조작함으로써 데이터의 경합을 방지한다.
객체의 복제를 만드는 것을 인스턴스화라고 하여 인스턴스화에 의해 만들어진 복제본을 인스턴스라고 부른다. 각각 개별의 개체(객체)이므로 조작상의 충돌이 일어나지 않는다. 객체를 인스턴스화하는데 new 연산자를 사용한다.
var 변수명 = new 객체명([인수, ...]);
객체에는 객체를 초기화하기 위해 객체와 동일한 이름의 메소드가 준비되어 있다. 이 초기화 메소드를 생성자라고 부른다. 생성된 인스턴스는 변수에 보관되어 그 변수를 객체로 취급할 수 있다. 인스턴스가 저장된 변수를 인스턴스 변수 또는 객체 변수라고 부른다.
인스턴스 변수에서 프로퍼티/메서드 호출하기
var 변수명 = new 객체명([인수, ...]);
변수명.프로퍼티명 [= 설정값];
변수명.메소드명([인수, [, ...]]);
정적 프로퍼티/정적 메소드
객체를 인스턴스화하여 인스턴스를 생성하지 않고 바로 프로퍼티와 메소드를 바로 이용가능한 것도 있다. 이러한 프로퍼티/메소드를 정적(클래스) 프로퍼티/정적(클래스) 메소드라고 부른다. 호출 방법은 다음과 같다.
객체명.프로퍼티명 [= 설정값];
객체명.메소드명([인수, [,...]]);
정적 메소드의 경우 인스턴스 변수로부터 호출하려고 하면 에러가 발생한다. 정적 프로퍼티/정적 메소드와 달리 인스턴스를 경유하여 호출하는 프로퍼티/메소드를 인스턴스 프로퍼티/인스턴스 메소드라고 부른다.
내장형 객체
자바스크립트에는 많은 객체가 제공되어 있는데 가장 기본적인 것이 내장형 객체(Built-in Object) 이다. 내장형은 미리 내장되어 있다는 의미로 자바스크립트가 동작하는 모든 배경에서 이용할 수 있다. 내장형 객체는 특별한 선언이나 정의를 하지 않고 바로 이용이 가능하다.
String 객체의 length프로퍼티를 이용하기
객체를 이용하려면 인스턴스화의 절차를 거쳐야 한다. 그러나 자바스크립트에서는 리터럴을 그대로 대응하는 내장형 객체로 이용할 수 있으므로 인스턴스화를 거의 의식할 필요가 없다.
var str = "안녕하세요";
console.log(str.length);
기본형 데이터의 경우 new 연산자를 사용하지 않는다.
기본 데이터형이라도 new 연산자를 사용하여 명시적으로 객체를 생성할 수 있다.
var str = new String('안녕하세요');
var flag = new Boolean(false);
if(flag) {
console.log('flag is true');
}
하지만 자바스크립트가 null 이외의 객체는 true 로 간주하기 때문에 의도한 것과 다른 결과가 나올 수 있다. 따라서 기본 데이터형을 new 연산자를 사용하여 인스턴스화하는 것은 원칙적으로 피해야한다.
+ 래퍼 객체 : 단순히 값을 포장(래핑)해서 값을 조작하는 기능(메소드)를 부여하기 위한 역할을 지닌 객체이다.
'웹 > Javascript' 카테고리의 다른 글
[JavaScript] 심볼 작성하기 (Symbol 객체) (1) | 2025.03.11 |
---|---|
[JavaScript] 기본 데이터 취급을 위한 객체(string, number, math) (1) | 2025.03.11 |
[JavaScript] 제어구문과 예외처리와 Strict 모드 (1) | 2025.03.05 |
[JavaScript] 연산자 (0) | 2025.02.26 |
[JavaScript] 기본적인 변수 선언과 데이터형 (0) | 2025.02.25 |