Print
카테고리: [ Java ]
조회수: 2696

1. 객체, 클래스

자바는 클래스로 표현하고 클래스는 생성자, 필드, 메소드 등을 가지고 있다. 객체를 인스턴스화하기 위해서는 생성자를 활용한다.

자바스크립트에서 객체를 생성하는 방법은 다음과 같다.


2. 런타임 중 수정

자바는 동적언어가 아니기 때문에 객체가 생성되면 런타임 중에 메소드를 수정하기 거의 어렵다고 할 수 있다. 

자바스크립트는 서로운 프로퍼티를 수추가하고 메소드를 교체하는 것과 같은 런타임 중에 객체 생성 및 수정이 가능하다. (동적언어라면 다 된다)


3. 프로퍼티

자바의 객체에는 필드와 메소드가 있다.

자바스크립트는 논리적으로 프로퍼티의 집합이고 프로퍼티는 Stirng 타임의 이름과 속성을 가지고 있다. 자바스크립트의 속성, 즉 Attribute는 프로퍼티 상태를 정의하고 설명하는데 사용된다. 그리고 프로퍼티에는 데이터 프로퍼티와 접근 프로퍼티의 형태가 있다.

3.1. 속성

3.1.1. 데이터 프로퍼티 속성

3.1.2. 접근 프로퍼티 속성

객체의 프로퍼티에 접근하기 위해선 점 표기법, 대괄호 표기법을 사용한다. 

3.2. 프로퍼티 수정

자바스크립트에서 Object.defineProperty, Object.defineProperty를 통해 객체 프로퍼티를 수정할 수 있다.


4. 함수, 메소드

자바의 메소드와 달리 자바스크립트의 함수는 내장 객체인 Function 생성자로 생성된 객체이다. 즉 또다른 객체이다. 

자바스크립트의 메소드는, 함수가 객체의 프로퍼티일 때 메소드라 한다. 이런 관계로 볼 때 자바스크립트에서 메소드는 함수지만, 모든 함수가 메소드인건 아니다.

함수는 객체니까 프로퍼티와 메소드를 가질 수 있다. 객체가 함수인지 아닌지는 instanceof 명령어로 확인할 수 있다.

var myvar = function() {};
console.log(myvar instanceof Function);

자바스크립트의 함수는 Function 생성자에 의해 생성된다는 차이점 외에 함수와 다른 객체의 차이점이  또 있다. 함수는 호출할 수 있지만 다른 객체는 호출할 수 없다. 그리고 함수는 prototype 프로퍼티를 가지고 있지만 다른 객체는 아니다. 

자바스크립트에서 함수 생성 방법은 다음과 같다.