on
수업 vs. 리터럴 개체: 자바스크립트의 OOP 및 직렬화에 대한...
수업 vs. 리터럴 개체: 자바스크립트의 OOP 및 직렬화에 대한...
반응형
객체 지향 프로그래밍이란 서로 데이터를 교환하고 상호 작용하는 특정한 속성, 방법 또는 기능을 가진 "코드 작업자"를 식별하고 격리하는 것을 의미한다.
ES6로도 알려진 ECMAScript 2015는 자바스크립트 클래스를 도입했습니다. 자바스크립트 클래스는 자바스크립트 오브젝트용 템플릿입니다. 이것은 Class, static, extensions와 같은 키워드를 도입하는 것을 의미했다.
비록 클래스의 사용이 코드를 구성하는데 매우 유용하지만, 클라이언트-서버 환경에서 프로그래밍하지만 무엇보다도 "웹 서블리스" 아키텍처에서 프로그래밍은 무엇보다도 다른 애플리케이션이나 페이지들(브라우저 안에서 실행되는 자바스크립트 클라이언트 앱과 HTTP 서비스 또는 API) 간에 데이터를 교환해야 하는 필요성을 수반한다. 즉, 서로 다른 소프트웨어 구성요소가 서로 대화하기 위해 구성되는 객체(또는 오히려 데이터)를 교환할 수 있어야 합니다. 이를 개체 직렬화라고 합니다.
직렬화
컴퓨팅에서 직렬화(serialization)는 데이터 구조나 객체 상태를 저장(예: 파일이나 메모리 데이터 버퍼에)하거나 전송(예: 컴퓨터 네트워크를 통해)할 수 있는 형식으로 변환하고 나중에 재구성하는 과정이다. (https://en.wikipedia.org/wiki/Serialization))
Javascript Literal Objects를 사용한 간단한 직렬화 접근법
exports var room = { name: 'kitchen', floor: 1, measure: 12, sayHello(){ console.log(`Hello, i'm the ${this.name}`) } }
단일 페이지 앱에서 네트워크 또는 라우팅을 통해 룸 오브젝트 공유
메소드에서 데이터를 분리하고 확장(원하는 대로 불러) 메소드를 사용하여 직렬화된 룸 개체를 설정하거나 가져오는 것입니다. 이렇게 하면 룸 객체는 동일한 수의 객체 데이터가 있는 정적 클래스가 됩니다.
export var room = { extends(data){ return { name: data && data.name ? data.name : undefined floor: data && data.floor ? data.floor : undefined measure: data && data.measure ? data.measure : undefined } }, sayHello(obj){ console.log(`Hello, i'm the ${obj.name}`) } }
실제 사례
let room1 = room.extends({name: 'kitchen'}) let room2 = room.extends({name: 'garage'}) console.log(room.sayHello(room1)) //Hello, i'am the kitchen console.log(room.sayHello(room2)) //Hello, i'am the garage
일반 영어로 더 많은 내용을 제공합니다.이오
from http://it-ground.tistory.com/178 by ccl(A) rewrite - 2021-09-14 06:27:40