문자열, 숫자, 배열, 함수 등 JavaScript의 모든 것은 객체입니다.
또한 JavaScript는 사용자 정의 개체를 허용합니다.
모든 것은 객체이다
JavaScript는 문자열, 날짜, 배열 등과 같은 여러 내장 객체를 제공합니다. 객체는 속성과 메소드를 가진 특별한 데이터 유형입니다.
자바스크립트 객체
객체는 특별한 종류의 데이터일 뿐입니다. 객체에는 속성과 메서드가 있습니다.
객체 속성에 액세스
속성은 객체와 관련된 값입니다.
객체 속성에 액세스하는 구문은 다음과 같습니다.
objectName.propertyName
이 예에서는 String 객체의 length 속성을 사용하여 문자열의 길이를 얻습니다.
var message="Hello World!"; var x=message.length;
위 코드가 실행되면 x 값은 다음과 같습니다.
12
객체에 액세스하는 방법
메소드는 객체에 대해 수행할 수 있는 작업입니다.
다음 구문을 사용하여 메서드를 호출할 수 있습니다.
objectName.methodName()
이 예에서는 String 객체의 toUpperCase() 메서드를 사용하여 텍스트를 대문자로 변환합니다.
var message="Hello world!"; var x=message.toUpperCase();
위 코드가 실행되면 x 값은 다음과 같습니다.
HELLO WORLD!
자바스크립트 객체 생성
JavaScript를 사용하면 자신만의 개체를 정의하고 만들 수 있습니다.
새 개체를 만드는 방법에는 두 가지가 있습니다.
직접 인스턴스 만들기
이 예에서는 객체의 새 인스턴스를 만들고 여기에 네 가지 속성을 추가합니다.
예시
person=new Object(); person.firstname="John"; person.lastname="Doe"; person.age=50; person.eyecolor="blue";
대체 구문(객체 리터럴 사용):
예시
person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};
객체 생성자 사용
이 예에서는 함수를 사용하여 객체를 구성합니다.
예시
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }
JavaScript에서 이는 일반적으로 실행 중인 함수 자체를 가리키거나 함수가 속한 개체(런타임)를 가리킵니다.
JavaScript 객체 인스턴스 생성
객체 생성자가 있으면 다음과 같이 새 객체 인스턴스를 생성할 수 있습니다.
var myFather=new person("John","Doe",50,"blue"); var myMother=new person("Sally","Rally",48,"green");
JavaScript 객체에 속성 추가
객체에 값을 할당하여 기존 객체에 새 속성을 추가할 수 있습니다.
personObj가 이미 존재한다고 가정하면 여기에 이름, 성, 나이, 눈색 등 새로운 속성을 추가할 수 있습니다.
person.firstname="John"; person.lastname="Doe"; person.age=30; person.eyecolor="blue"; x=person.firstname;
위 코드가 실행되면 x 값은 다음과 같습니다.
John
JavaScript 객체에 메소드 추가
메소드는 객체에 첨부된 함수에 지나지 않습니다.
생성자 함수 내에서 객체 메서드를 정의합니다.
function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; this.changeName=changeName; function changeName(name) { this.lastname=name; } }
changeName() 함수 이름의 값은 사람의 성 속성에 할당됩니다.
이제 시도해 볼 수 있습니다.
myMother.changeName("Doe");