본문 바로가기

Development /JavaScript

[자바스크립트] OOP

OOP

클래스 정의

1

function MyClass(){

}

2

var MyClass = function(){

}

  • 2번방식이 가독성이 좋다

 

접근제어자

변수의 지정자에 따라 접근이 제어됨 (메소드도 동일하다)

클래스내부에서의 var

private 같다

this.키워드

외부접근가능

 

정적클래스

자바스크립트에서 정적 클래스는 별도로 인스턴스를 생성하지 않는다. (선언과 동시에 정의가 )

유틸리티 형태의 기능 구현을 주로 사용된다.

var MyStaticClass - new Function(){

this.show = function(){

return "show";

}

}

alert("MyStaticClass.show()");

 

외부에서도 접근이 가능하고 클래스 안에'private' 정의된 요소들을 접근 있는 메소드를

'privileged' 라고 한다.

 

변수(or 프로퍼티)

private

'var' 키워드 사용

오직 'private/privileged 함수'에서만 접근

public

클래스 안에서 'this.propertyName' 형태로 선언

외부에서 읽기/쓰기가능

prototype

클래스 외부에서 'Classname.propertytype.propertyName = sameValue'

동일한 이름의 public 프로퍼티가 존재하지 않을 경우에 정의 가능

static

'Classname.propertyName' 형태로 정의

인스턴스의 생성과는 별개의 영역에 존재

 

함수(or 메소드)

private

'funtion funtionName(){…}' or 'var functionName=function(){…}' 형태로 선언

생성자와 privileged 메소드를 통해서만 호출

privileged

클래스 안에서 'this.methodName = function(){...}' 형태로 선언

클래스 외부에서 실행 'prototype' 이용한 재정의 필요

public

클래스 외부에서 'Classname.propertytype.methodName = function(){…}' 형태로 정의

동일한 이름의 privileged 메소드가 존재하지 않을 경우에 정의 가능

static

'Classname.propertyName' 형태로 정의 인스턴스의 생성과는 별개의 영역에 존재

 

  • 정의 = 클래스가 구체화되어 인스턴스가 생성 되는것

 

* 출처 : 문학청년님의 강의 정리