본문 바로가기

Web/Javascript

CLASS

Class : 공통적인 속성을 모아 한데 묶은 덩어리 또는 명세

Instance : 해당 클래스의 속성을 지닌 구체적인 객체




예시(실생활)

과일을 예로 들면

배, 사과, 바나나, 감, 오렌지 등은 과일이라는 분류, 집합, 집단에 속함


여기서 과일은 클래스이고

배, 사과, 바나나 등은 과일이라는 클래스에 속한 인스턴스 이다


또한 과일은 음식이라는 범주에 속하기 때문에

과일 클래스는 음식클래스의 하위클래스가 된다


배, 사과, 바나나 등은 과일이면서 음식이기도 한데

과일과 음식은 추상적이고 배, 사과, 바나나 등은 눈으로 볼 수 있고 만질 수 있는 구체적인 물체이다


이렇게 공통된 속성을 지닌 구체적인 대상을 인스턴스라고 한다

인스턴스들의 공통속성을 모은 추상적인 개념이 클래스이다

음식 : super class

과일 : sub class




예시(배열)

배열 리터럴 [1 ,2 3] 을 예로 들면

배열 리터럴은 사실 Array라는 생성자 함수로 new연산자와 함께 호출한 결과물과 같다

그 중 Array 생성자 함수만 분리해서 보면 이 부분이 바로 일반적인 개념상의 Class 역할을 담당한다

Array 생성자 함수는 그 자체로 어떤 특별한 역할을 수행하기 보다는

주로 new 연산자를 통해 생성한 배열객체들의 기능을 정의하는데 주력하고 있기 때문이다

배열에서만 쓰이는 메소드들은 모두 Array.prototype에 정의되어 있다

이때 클래스를 통해 생성한 객체인 배열 객체 [1, 2, 3] 을 Instance 라고 한다



static methods, static properties


 Array

 from()

 : static methods

 isArray()

 of()

 arguments

 : static properties

 length

 name

 prototype

 concat()

 filter()

 forEach()

 map()

 push()

 pop()

 

prototype 내부에 할당되지않고 Array 생성자 함수 객체에 직접 할당되어있는 프로퍼티들을

static methods, static properties 라고 한다

이 static 멤버들은 클래스 자체에서만 접근 가능하다

function Person(name, age) { ... }
Person.getInformations = function(instance) { ... } // static method
Person.prototype.getName = function() { ... } // method
Person.prototype.getAge = function() { ... } // method

var  jiwon = new Person('지원', 30);
console.log(jiwon.getName()); // OK
console.log(jiwon.getAge()); // OK
console.log(jiwon.getInformations(jiwon)); // ERROR
console.log(Person.getInformations(jiwon)); // OK



'Web > Javascript' 카테고리의 다른 글

자바스크립트 기초  (0) 2020.05.22
객체지향(OOP) 프로그래밍  (0) 2018.01.17
PROTOTYPE  (0) 2018.01.15
클로저(CLOSURE)  (0) 2018.01.11
CALL, APPLY, BIND 메소드  (0) 2018.01.11