this의 값은 함수를 호출하는 방법에 의해 결정된다 호출을 누가 했냐?? 첫번째 whoami 를 호출한 직접적인 애는 someone mywhoami는 browser가 실행 => window ---- button html ![
자바스크립트는 함수 단위로 스코프가 생성된다위의 그림과 같이 outer function의 scope가 만들어진다.스코프는 함수 단위 마다 생성되므로 inner용 스코프 생성inner 스코프에 찾으려는 변수가 없으면 outer 스코프를 탐색한다=> inner funct
집중해서 볼 것은 this 이다. 일반 함수일반 함수는 함수가 실행될 때 함수 자신의 scope안에 자기만의 this가 존재한다화살표 함수화살표 함수는 자신의 scope 안에 자기만의 this가 존재하지 않는다 자기만의 this가 존재하지 않으므로 bind, call,
데이터의 원본이 훼손되는 것을 막는 것Primitive(원시 자료형)원시 자료형 불변하다(immutable)Object(객체)바뀔 수 있는 가능성(가변성)이 있기 때문에 따로 저장됨 o3.name = 'lee'의 코드가 개발자가 의도하지 않은 일이라면 심각한 일을 초
property의 값이 객체인 경우 위 사진과 같이 주소값을 공유한다o2.score.push(3) 원본 데이터를 바꾸는데 이를 원하지 않았더라면 날벼락!=> Property의 값이 객체인 경우에는 그 객체를 수정할 때 원본에 영향을 주지 않으려면 이 값 역시도 복제해야
호이스팅 사전적 의미 : 끌어올리다 Hoisting은 선언과 밀접한 관련이 있다. javascript 엔진은 코드를 실행하기 전 단계로 코드 전반에 걸쳐서 선언된 내용들이 있는지를 쭉 훑어보고 발견하는 족족 위로 끌어올린다. Hosting 성질을 모르면 위의 코
두 개념을 암기하는 것은 의미가 없다 스코프와 실행 컨택스트의 관계를 생각하면서 코드를 읽어보자 🎬 태초에 전역 스코프가 있었다. 그냥 광할한 우주와 같은 빈공간이다. 그곳에서 어느 순간 짠하고 빅뱅처럼 전역 컨텍스트가 생성된다. 그렇게 생겨
전역 공간에서 this는 전역객체를(WINDOW / GLOBAL) 가리킨다함수 내부에서 this는 기본적으로 전역객체를 가리킨다즉 default 값이 전역객체라는 뜻이며 바뀔 수도 있다. 쉽게 생각하면 메서드명 바로 앞에 있는 마지막 점까지가 this이다. 🎓 b는
본격적으로 callback에서의 this를 논하기전에 call, apply, bind 배경지식을 다루자 ❕❕✏ call, apply, bind에서의 첫번째 매개변수✏ call , bind는 thisArg 두 번째 매개변수📢 call vs apply📣 call, ap
먼저 클로저란❔❓ 라고 되어있는데, 아직 감이 잘 오질 않는다. 좀 더 알아보자.이게 핵심이다👀 즉, 함수를 return 하여도 변하지 않는것.최초 선언 시 생성된 scope와 생성시의 환경정보를 유지한다.예제를 통해 알아보자 🕶var x=1은 scope에 의
📌 중요 개념(아래의 그림을 이해하자)생성자 함수가 있을때, new 연산자를 사용해 instance를 만들면, 생성자 함수의 prototype라는 property가 instance의 \_\_proto\_\_ 라는 property에 전달이 된다. 즉, 생성자 함수의 p
1편에서 언급했듯이, \_\_proto\_\_ property가 생략 가능하다고 하였는데 사실인지 살펴보자\_\_proto\_\_의 속성을 보면 constructor가 있는 것을 확인할 수 있다.👀 그러나 배열에는 분명히 constructor라는 property가 없
자, 먼저 위 코드의 반복을 줄여 리펙토링을 하고 싶다🤦♂️반복을 줄이기 위해서 prototype로 메서드를 이동시켰다✨ prototype로 메서드를 이동시켜 instancce의 \_\_proto\_\_로 접근이 가능해졌다.🤷♀️ 그러나, 위 상황에서 \_\_p
📌 먼저 아래의 그림을 이해하자배열 리터럴은 Array 생성자 함수와 Array.prototype로 이루어져 있다.Array.prototype에는 배열메서드가 모두 담겨있다.즉, Array.prototype는 객체이다.그리고 \_\_proto\_\_가 생략 가능하기
앞서 배열 리터럴을 생성하면, 그 배열은 Array라는 생성자 함수로new 연산자와 함께 호출한 결과물과 같다고 살펴보았다. 📝 클래스란?배열 리터럴 부분을 제외한 Array 생성자 함수만 분리해서 보면,이 부분이 바로 일반적인 개념 상의 Class 역할을 담당한다.
Person 생성자 함수는 name, age property와 getName(), getAge() 메서드를 갖고 있다.Employee 생성자 함수는 name, age, position property와 getName(), getAge(), getPosition() 메서