COCO World

[JavaScript/자바스크립트] day2 mission - 해쉬 자료구조, 객체, 프로퍼티, 일급객체,생성자 함수 본문

Language/JavaScript

[JavaScript/자바스크립트] day2 mission - 해쉬 자료구조, 객체, 프로퍼티, 일급객체,생성자 함수

코코월드주인장 2023. 1. 19. 22:59
1.해쉬 자료구조란?
해시(Hash) 자료구조란, 키(key)와 값(value) 쌍으로 이루어진 데이터 구조이다. 해시 구조에서는 key를 이용하여
 데이터(value)를 빠르게 찾을 수 있는 장점이 있다.
- 키(key) : 해시 함수의 input이 되는 고유한 값.
                  키는 해시함수를 통해 해시로 변경되어, value값과 매칭되어 저장소에 저장됨.
- 해시 (Hash) : 임의의 값을 고정 길이로 변환하는 것
- 해시 테이블(HashTable) : key값이 연산에 의해 직접 접근이 가능한 데이터 구조
- 버킷(bucket), 슬롯(slot) : hash Table에서 하나의 데이터가 저장되는 공간
- 해시 함수 : key값을 이용하여 연산을 통해 데이터(value) 위치를 찾는 함수

 

2.자바스크립트 객체로 주로 하는일이란?
  : 객체는 데이터를 의미하는 프로퍼티(속성)와 데이터를 참조하고 조작할 수 있는 메소드(동작)로 구성된 집합으로서,
   객체는 데이터(프로퍼티)와 그 데이터에 관련되는 동작(메소드)을 모두 포함할 수 있기 때문에 데이터와 동작을 하나의 단위로
   구조화할 때 유용하게 사용 된다.

3.자바스크립트 객체의 프로퍼티란?

   객체 안에는 '키'와 '값'으로 이루어진 한 쌍의 데이터들로 이루어져 있는데,

   이 쌍을 하나의 프로퍼티(property) 또는 속성이라고 부른다.

   이 프로퍼티는 객체의 상태를 나타내는 값이며, 프로퍼티가 값이 함수일 경우 메소드라고 부른다

4.단순한 해쉬와 자바스크립트 객체의 차이점이란?
  : 해시는  '키(key)'와 '값(value)'을 매핑하여 데이터 인덱스를 참조하는데 사용하는 것이지만, 객체는 객체자체로서 의미를 둬야 하며,
   객체를 이루기 위해 해시자료 구조를 이용할 뿐, 객체라는 개념구조 내에서 유기적으로 메소드를 생성하여 작동하고, 해시와는 다르게
   스스로의 값을 변화시킬 수 있는 특징을 갖고 있다.
5.함수와 메서드의 차이는 무엇일까요? 가장 핵심적인 차이는 무엇이고, 왜 굳이 이렇게 구분했을까요?
  함수를 호출하는 객체가 있는 경우를 '메서드'라고 하며, 함수를 호출할 객체가 없는 경우 '함수'라고 한다
  핵심적인 차이는 함수(Function)는 특정한 데이터만을 위해서가 아닌 특정 작업을  수행하기 위해 설계된 기능을 목적으로 생성하고,
   메서드(Method)는 객체의 데이터를 관련지어 기능을 목적으로 생성된다.
 함수는 직접 호출이 가능하지만, 메서드는 객체를 통한 점 표기법 또는 대괄호 표기법을 사용하여 호출한다.
 함수는 재사용이 가능하지만 메소드는 함수에 비해 재사용이 어렵다
1.자바스크립트에서 일급객체란? 왜 그건 일급객체일까요?
  : 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
  일급객체가 되기 위한 조건은 무명의 리터럴로 표현이 가능하며, 변수에 할당할 수 있어야 하고, 다른 함수를 인자로 전달받고, 다른 함수의 결과로서 리턴될 수 있어야 한다.
 위의 조건을 성립한 함수는 고차함수를 만들 수 있고, 콜백을 사용할 수 있다.
 고차함수란? 전달인자(argument) 또는 매개변수(parameter)로 받거나 함수를 리턴하는 함수
 콜백함수란? 전달인자(argument)로 받는 함수
2.다른 언어에서의 함수는 어떤 특징이 있나요?
  : 자바(java)에서는 class가 존재하여 클래스 안에 속성과 기능을 선언하지만, 자바스크립트는 class라는 개념이 존재하지 않아,
   그 역할을 function(함수)와 Prototype이 해야 한다. 자바스크립트가 class역할을 하기 위해선 함수가 생성자역할을 수행한다.
 
  자바스크립트의 객체끼리의 상속을 가능하게 하는 것은 prototype이라는 속성을 가지고 있기 때문이다
  prototype? 기존의 객체를 복사하여 새로운 객체를 생성하는 특징
3.생성자 함수에 대해서 조금만 더 설명해줄 수 있나요?
 : 위의 질문에서처럼 자바스크립트는 class라는 개념이 없기 때문에, 생성자 함수를 통해 객체를 생성하는 역할을 한다.
 new 키워드를 사용해 함수를 호출하면 return 문 없이 새로운 객체를 반환하며, 생성자 함수의 함수명은 대문자로 시작한다
 그리고 선언한 생성자 함수 내에서 this를 사용하여 반환되는 객체의 초기 상태와 행위를 정의할 수 있다.