댓글 검색 목록

[javascript] JavaScript의 어려운 부분 마스터하기 : 프로토 타입 및 클래스 I

페이지 정보

작성자 운영자 작성일 20-09-05 16:06 조회 643 댓글 0

JavaScript는 객체 지향적이지 않지만 JavaScript의 모든 것이 객체 인 이유는 무엇입니까? 


자바 스크립트에서 "모든 것이 객체다"라는 말을 들어 보셨을 것입니다. 이것은 실제로는 올바르지 않지만 (String 또는 undefined와 같은 기본 유형은 객체가 아님) 많은 것, 즉 기본 유형이 아닌 모든 것이 객체입니다 (예 : 함수, 배열 또는 Set 또는 Map과 같은 데이터 구조). JavaScript는 강력한 객체 지향 언어이지만 Python 또는 Java와 같은 다른 언어에서 오는 많은 사람들은 JavaScript의 OO 디자인이 당혹스럽습니다. 왜 그런 겁니까? JavaScript는 전통적으로 프로토 타입의 클래스가 없는 객체 지향 언어이기 때문입니다.


https://dev.to/ryanameri/mastering-hard-parts-of-javascript-prototype-class-i-2ej


프로토 타입 및 클래스 기반 객체 지향 언어는 모두 OOP 원칙을 구현하지만 놀랍도록 다른 방식으로 구현됩니다. 

각각 고유 한 장단점이 있으며 둘 다 본질적으로 서로 우월하지 않습니다. 그러나 Java, Python 또는 C#에 대한 배경 지식이 있는 경우 JavaScript의 프로토 타입 구조를 이해하는 데 시간을 할애하면 큰 이익을 얻을 수 있습니다.


최근 (ES6)에는 다른 언어의 클래스 기반 OOP를 거의 모방하는 클래스 키워드가 JavaScript에 추가되었습니다. 그러나 클래스는 JS에서 단순히 구문론적 설탕이며 내부적으로 프로토 타입 개념을 사용하여 OOP를 구현합니다. 클래스 구조 사용을 선호하더라도 코드를 올바르게 디버그하거나 작동 방식을 이해하려면 JS의 프로토 타입을 이해해야 합니다.


이 섹션의 첫 번째 부분에서는 객체 리터럴을 사용하여 연습 문제를 해결할 것입니다. 이는 JS에서 OOP를 구현하는 원래 / 구식 방식입니다. 다음으로 ES5에 추가 된 Object.create() 메서드를 사용합니다. 세 번째 섹션에서는 new 키워드를 사용하여 개체 생성을 단순화하는 방법을 살펴 봅니다 (하지만 근본적으로 아무것도 변경하지는 않음). 마지막으로 ES6에 도입 된 클래스 구조를 볼 수 있습니다.


명확히 하기 위해 이 섹션의 제목은 농담으로 작성되었습니다. JavaScript는 객체 지향 언어이며 JavaScript의 모든 것이 객체인 것은 아닙니다.


개체 리터럴 사용 


연습 1 


두 개의 입력 (이름 및 나이)을 받아들이고 객체를 반환하는 함수를 만듭니다. 이 함수를 makePerson이라고 합시다. 이 함수는 다음을 수행합니다. 


  • 빈 개체 만들기
  • 새로 생성 된 객체에 이름 속성을 추가하고 그 값은 함수에 전달 된 'name'인수입니다.
  • 새로 생성 된 객체에 age 속성을 추가하고 그 값은 함수에 전달 된 'age'인수로 객체를 반환합니다.
function makePerson(name, age) {
  //add code here
}

const vicky = makePerson("Vicky", 24);
console.log(vicky.name);
// -> Logs 'Vicky'
console.log(vicky.age);
// -> Logs 24


해결책 1 


function makePerson(name, age) {
  const person = {};
  person.name = name;
  person.age = age;
  return person;
}


함수를 사용하여 "구식"방식으로 객체를 생성합니다. 더 이상이 패턴을 사용하는 사람은 없지만 나중에 나오는 모든 것 (Object.create() 또는 new)은 여전히 ​​백그라운드에서 이 작업을 수행하므로 이 함수가 작동하는 방식을 연구하는 데 시간을 할애하는 것이 중요합니다.



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.