프로그래밍 언어에는 3가지 종류가 있다. 기계어
는 컴퓨터의 CPU가 멍령을 처리할 수 있게 0과 1로 구성된 언어이다. 따라서 사람이 이해하기는 너무 복잡해 이를 이용해 프로그래밍을 구축하기 어렵다. 따라서 이를 사람이 이해하기 쉽게 즉, 자연어와 비슷하게 만들어진 언어가 고급언어
이다.
우리가 사용하는 대부분의 프로그래밍 언어가 고급언어에 속한다. 어셈블리어
는 고급언어가 기계어로 바뀌는 과정에서 사용되는 언어이다. 고급언어로 코딩을 하면 이를 1) 컴파일러를 통해 어셈블리어로 변환하고, 2) 어셈블리어를 어셈블러를 통해 기계어로 바꾸는 작업을 해야 비로소 우리가 짠 코드를 컴퓨터가 이해하고 처리할 수 있다.
절차지향 언어(Process-oriented Programming)
: 순차적으로 처리되는 것이 중요시되는 언어로써 객체지향 언어에 비해 처리 속도가 빠르다는 특징이있다. 반면에 순서를 반드시 지켜야 되고, 코드를 재사용하기 어렵다. 이러한 이유로 유지보수가 어렵다는 단점이 있다.
: 객체지향 언어(Object-oriented Programming)은 절차지향 언어와 달리 코드를 기능별로 묶어 모듈화를 한다. 이로써 중복으로 연산하지 않고 모듈 재활용이 가능하다. 이로써 코드의 유지보수가 수월하다는 장점이 있다.
객체지향 언어의 대표적인 특징으로는 4가지가 있다.
OOP, 객체지향은 한 마디로 "사람이 세계를 보고 이해하는 방법을 흉내낸 방법론"
: ES6 class
가 나오기 전 JavaScript를 객체지향적으로 사용하기 위해 다양한 방법을 사용했다. 인스턴스를 만드는 과정(클래스 선언 방식), Instantiaion Pattern에는 크게 4가지가 있다. Class는 하나의 정형화된 모델을 만들어, 이를 기반으로 인스턴스(복제품)을 만들기 위해 사용한다. 즉, 코드의 재사용성을 대폭 늘려준다.
var Car = function() {
var somInstance = {};
someInstance.position = 0;
someInstance.move = function() {
this.position += 1;
}
return soneInstance;
};
var car1 = Car();
var car2 = Car();
car1.move();
var extend = function(to,from) {
for(var key in from){
to[key] = form[key];
}
};
var smoeMethods = {};
someMethods.move = function(){
this.position += 1;
};
var Car = function(position){
var someInstance = {
position: position,
};
extend(someInstance, someMethods);
return someInstance;
};
var car1 = Car(5);
var car2 = Car(10);
var someMethods = {};
someMethods.move = function() {
this.position += 1;
};
var Car = function(position) {
// 특정 객체를 prototype으로 하는 객체
var someInstance = Object.create(someMethods); 를 생성
someInstance.position = position;
return someInstance;
};
var car1 = Car(5);
var car2 = Car(10);
var Car = function(position) {
this.position = position;
};
Car.prototype.move = function() {
this.position += 1;
};
var car1 = new Car(5);
var car2 = new Car(10);