'자바스크립트'에 해당되는 글 2건

  1. 2021.03.19 HTTP CORS 여러개의 origin 관리하기
  2. 2021.02.26 자바 스크립트에서의 OOP

HTTP CORS 여러개의 origin 관리하기

웹 개발/Problems 2021. 3. 19. 18:19

'Access-Control-Allow-Origin'의 값은 기본적으로 한개의 origin을 입력받던가 모든 오리진을 허용해주는 '*'이라는 와일드카드를 값으로 받을 수 있다.

만약 여러개의 origin을 허용하고 싶다면 따로 배열을 만들고 들어온 request의 origin이 그 배열에 포함이 되있는지 확인 하는방법을 사용할 수 있다. 확인 후에 해당 origin을 현재 'Access-Control-Allow-Origin'의 값으로 넣어주면 된다.

const server = http.createServer((request, response) => {
	let body = [];
	let allowedOrigins = [
		//multiple origin 설정하기
		'http://127.0.0.1:5500',
		'http://14.36.99.81:44949',
		'http://14.36.99.81:35911',
	];
	let origin = request.headers.origin; //@@@@@@@@@@@@@@@@@@@@@@@@@@@@origin 가져오기
	temp = request.headers;
	console.log(
		'defaultCorsHeader[Access-Control-Allow-Origin]: ',
		defaultCorsHeader['Access-Control-Allow-Origin'],
	);
	console.log('origin: ', origin);

	if (allowedOrigins.includes(origin)) {
		defaultCorsHeader['Access-Control-Allow-Origin'] = origin;
	}
}

 

:

자바 스크립트에서의 OOP

웹 개발/Study 2021. 2. 26. 09:53

자바스크립트는 본래 객체 지향형이 아닌 언어였지만, 객체 지향 패턴으로 작성할 수 있다.

객체 지향형에는 4가지 컨셉이 존재한다.

 

  • Encapsulation (캡슐화)

  • Inheritance (상속)

  • Abstraction (추상화)

  • Polymorphism (다형성)

Encapsulation (캡슐화)

캡슐화는 데이터와 기능을 하나의 객체(또는 단위)에 넣어서 묶는것이다.

은닉화(hiding)라는 특징도 포함이 되어있는데, get/set 함수를 만들어 내부 데이터나 내부 동작이 외부로 전달되지 않도록 하는것이다. 하지만 javascript의 언어 특성상 은닉화는 불가능하다. (c#에서는 public/private 키워드로 가능)

느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있다

 

Inheritance (상속)

상속은 부모클래스의 메서드나 데이터등을 자식클래스가 물려받는것이다.  정확한 표현으로는; 기본 클래스(base class)의 특징을 파생 클래스(derive class)가 상속받는다.

부모클래스에게 상속받은 자식클래스는 부모의 모든 데이터 속성과 메서드들을 사용할수 있으며, 자식클래스가 데이터 및 메서드를 추가 한다고 해서 부모클래스에게 영향이 가지 않는다.

 

Abstraction (추상화)

추상화는 메서드의 사용을 사용자에게 맞추어 보다 편리하게 사용할 수 있도록 도와준다. 메서드의 복잡한 내부를 신경 쓸 필요 없이 사용할 때에는 단순하게 사용 할 수 있도록 하는것이다.

추상화와 캡슐화의 차이:

캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메소드 등을 노출시키지 않고, 기능 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.

 

Polymorphism (다형성)

다형성은 특정 기능을 선언(설계)부분과 구현(동작)부분으로 분리한 후 구현부분을 다양한 방법으로 만들어 선택하여 사용할 수 있게 하는 기능이다.
일반 객체지향 언어에서는 데이터 타입이 있다. 그래서 변수를 선언할 때 데이터 타입을 명시해야 한다. 하지만 자바스크립트의 경우는 그냥 변수라는 것만 알 수 있게 var 변수명 과 같은 식으로 데이터 타입을 명시하지 않고 선언을 한다.

**일반 객체지향언어의 경우 데이터 타입을 맞추지 않으면 에러가 난다. 

하지만 자바스크립트의 데이터 타입을 명시하고 변수 사용을 하지 않기 때문에 변수값에 어떤 데이터를 넣어도 에러가 나지 않는다.

그리고 일반 객체지향에서 다형성을 구현하려면 매개변수와 리턴값을 상속받는 메서드에 맞추어 구현하여야 한다. 그렇지 않으면 에러가 난다.

하지만 자바스크립트에서는 인터페이스, 추상 클래스 그리고 엄격한 데이터 타입 체크 등의 다형성과 관련된 문법은 지원되지 않는다. 그렇다면 자바스크립트에서의 다형성은 어떻게 구현해야 할까? 그냥 다형성이 지원한다고 생각하고 규칙에 맞춰 구현하는 방법밖에 없다. 즉 구현부에서 메서드를 작성할 때 선언부가 있다는 가정 하에 맞춰 구현해줘야 한다. 


참조: https://debugdaldal.tistory.com/152 [달달한 디버깅]

 

 

: