일기

11/06

Realuda72 2024. 11. 6. 22:01

오늘 배운 것

 

1. 데이터 타입

-기본형과 참조형

-포인터 개념인듯하다

-깊은 복사와 얕은 복사

 

2. 실행컨텍스트

-코드에 제공할 환경 정보를 모은 객체

-호이스팅 -> VE, LE구성 -> this 바인딩

 

호이스팅

-컨텍스트와 관련된 코드의 식별자들을 수집한다.

-컨텍스트에서 사용되는 모든 식별자들의 선언을 코드 위로 땡겨온다.

-함수 선언은 전체를 호이스팅한다.

 

VariableEnvironment 와 LexicalEnvirionment

-record와 outer로 구성된다

-VE는 컨텍스트가 생성되는 시점의 LE의 스냅샷이다

 

this 바인딩

-js에서 this는 전역에서 사용할 수 있는 특수한 키워드이다.

-현재 컨텍스트의 스코프에 따라 this가 가리키는 대상이 다르다

-일반적으로 메서드로 호출되었다면 호출한 객체, 아니라면 전역 환경이 되지만, 명시적으로 this를 바인딩 할 수 있다

 

명시적 this 바인딩

-call 메서드

함수.call( ... ) 형태로 호출하며, 첫번째 매개변수로 this에 바인딩 할 객체를 전달한다.

 

-apply 메서드

call과 같지만, 바인딩 할 객체는 그대로 넣어주고 나머지는 배열 형태로 전달한다.

 

-유사배열객체

객체의 key를 0부터 시작하는 정수로 하고, length키를 추가함으로써 배열처럼 쓸 수 있다

//객체에는 배열 메서드를 직접 적용할 수 없어요.
//유사배열객체에는 call 또는 apply 메서드를 이용해 배열 메서드를 차용할 수 있어요.
var obj = {
    0: 'a',
    1: 'b',
    2: 'c',
    length: 3
};
Array.prototype.push.call(obj, 'd');
console.log(obj); // { 0: 'a', 1: 'b', 2: 'c', 3: 'd', length: 4 }

var arr = Array.prototype.slice.call(obj);
console.log(arr); // [ 'a', 'b', 'c', 'd' ]

es6에서는 Array.from 메서드를 통해 객체를 배열로 변환할 수 있다

 

-bind 메서드

call과 비슷하지만 즉시 호출하지는 않고 넘겨받은 this 및 인수들을 바탕으로 새로운 함수를 반환한다.

'일기' 카테고리의 다른 글

11/11  (0) 2024.11.11
11/07  (0) 2024.11.07
11/05  (0) 2024.11.05
11/04  (0) 2024.11.04
10/31  (0) 2024.10.31