favicon

Jayden { do: smite }

220829(월)

🪴 성장일지

행복한 이기주의자(웨인 다이어)의 내용에 자극받아 시작하는 소박한 성장기록

살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?<br/> 성장하고 있는 것이 살아 있는 것이다.<br/> 생명의 유일한 증거는 성장이다!

🌳 키워드 최대한 간단하게 정리, 추후에 보면서 스스로 설명

JavaScript 일급 객체

자바스크립트의 함수는 일급 객체라고 한다. 일급 객체란 무엇일까?

  • 무명의 리터럴로 생성할 수 있다.(즉, 런타임에 생성이 가능하다.)
  • 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
  • 함수의 매개변수에 전달할 수 있다.
  • 함수의 반환값으로 사용 가능하다.

자바스크립트의 함수는 위 조건을 모두 만족하므로 일급 객체이다.<br/> 말 그대로 함수를 객체와 동일하게 사용할 수 있다는 의미이다.<br/> 다만 함수는 호출이 가능하고 일반 객체에는 없는 함수 고유의 프로퍼티를 소유할 수 있다.

JavaScript 프로토타입

자바스크립트는 프로토타입 기반 언어이다. 그래서 프로토타입이 정확히 뭘까?<br/> 사전적 의미로는 원형의 의미를 지닌다. 비유를 해보자면 어떤 객체의 유전 정보같은 느낌이다.<br/> 대표적으로 생성자 함수에서 생성자의 프로퍼티이며 new 연산자를 통해 인스턴스를 만들었을 때, 그 인스턴스는 생성자의 프로토타입을 참조하는 __proto__라는 접근자 프로퍼티를 갖는다.

var Dog = function (name, age) { this.name = name; this.age = age; }; var hodu = new Dog('hodu', 2); (Dog.prototype === hodu.__proto__) === Object.getPrototypeOf(hodu); // true
<br/>

객체지향 프로그래밍이란? 실세계의 실체(사물 혹은 개념)를 인식하는 철학적 사고를 프로그래밍에 접목하려는 프로그래밍 패러다임 강아지가 있다면, 강아지라는 개념에서 각각의 강아지 개체들은 이름, 나이 등 다양한 속성이 존재한다. 이 때 필요한 속성들만 간추려 표현하는 것을 추상화라고 한다. 객체의 상태를 나타내는 데이터는 프로퍼티, 객체의 동작을 나타내는 함수는 메서드라고 한다.

프로토타입 체이닝

객체의 프로퍼티(혹은 메서드)에 접근하려 할 때, 해당 객체에 접근하려는 프로퍼티가 없다면 상위에 있는(체이닝되어있는) 프로토타입의 프로퍼티를 순차적으로 검색한다.<br/> 식별자에서 스코프 체이닝이 있었다면, 객체의 프로퍼티에선 프로토타입 체이닝이 있다고 생각하면 편하다.<br/> 실제로 이 두 체이닝은 서로 협력하며 식별자와 프로퍼티를 검색하는 데 사용된다.

프로토타입 체이닝을 이용하여 원하는 생성자를 상속시켜줄 수 있다.

정적 메서드, 프로토타입 메서드, 인스턴스 메서드

// 정적 메서드 : 생성자 자체의 메서드 Object.freeze(); // 프로토타입 메서드 : 생성자의 프로토타입의 메서드 Object.prototype.hasOwnProperty(); // 인스턴스 메서드 : 인스턴스가 직접 갖고 있는 메서드 var example = { a: 1, b: 2 }; example.c = 3;

JavaScript this

어떤 객체의 메서드가 자신이 속한 객체의 프로퍼티를 참조하기 위해서 자신이 속한 객체를 가리키는 식별자가 있어야한다.<br/> 그래서 생긴 게 this이다.(객체 본인을 내부에서 참조하기 위함) 즉, this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다.<br/>

this 기억할 키워드

  1. this는 함수의 호출에 따라 바인딩되며 함수 호출 방법에 따라 바인딩이 다르게 된다.
  2. 일반 함수와 메서드로 호출되었을 때의 this 차이
  3. 기본적으로 this는 전역 객체를 참조하고 있다는 점
  4. Function.prototype의 메서드인 apply, call, bind의 공통점 및 차이점
undefined

Copyright 2023. all rights reserved by Jayden