javascript(9)
-
호이스팅(hoisting)이란 무엇인가??
자바스크립트에서 문법(?)이라고 할 수 있는 것 중 하나로 호이스팅이 있다. 호이스팅이란 Hoisting is a JavaScript mechanism where variables and function declarations are moved to the top of their scope before code execution. 이라고 설명해준다. 다른 곳도 마찬가지로 이렇게 설명해놓았는데, 번역하자면 '변수나 함수를 선언한 것을 위로 끌어올려 실행한다'는 뜻이다. 예를 들어 우리가 생각하기에 자연스러운 순서는 다음과 같다. function hoist(){ console.log('hello'); } hoist(); // 'hello' 그렇지만, chrome에서 console 창을 열어 다음과 같이 실행..
2020.09.10 -
Closure 란?
보호되어 있는 글입니다.
2020.09.05 -
call, apply, bind (3) - bind
bind란? 지난 call과 apply에서 원래 지정된 this를 사용하는 것이 아닌, 다른 객체 혹은 주체를 가져와 메소드만 사용할 수 있다는 것을 배웠다. bind가 하는 것은 this만 변경하는 것이다. call과 apply는 this 대상을 '변경'시키고 메소드를 '실행'시키는 것 까지 하는 것이라면, bind는 단지 this 대상만을 변경시켜주는 것이다. (1) 아무 대상도 지정안해줬을때 처음 실행되고서 어떤 지정도 안해줬다면 this는 전역객체를 가리키며, 이는 window객체를 가리킨다. this //Window {parent: Window, opener: null, top: Window, length: 1, frames: Window, …} (2)bind하기 전, 객체 두개를 설정한다. o..
2020.08.30 -
call, apply, bind (2) - apply
apply와 call이 다른 것은 딱 하나이다. this를 바꾸는 것은 맞지만, 배열로 받느냐 아니냐의 차이로 apply를 쓰느냐 마느냐로 나뉜다. call과 예시가 비슷하지만, 배열만 다르게 하면 된다. 바꿔보고 싶으면 앞선 call을 설명한 페이지에서 받는 인자를 배열로 바꿔보면 된다. 여기서는 간단한 예시로만 표현하겠다. function add(num1,num2){ return num1+num2 } add.call(null,1,2); //3 add.apply(null,[1,2]) //3 단, 배열뿐만 아니라 객체에서도 사용할 수 있다는 점도 특징이다. let introduce = { myself : function (){ return `hello my name is ${this.first_name}..
2020.08.28 -
call, apply, bind (1) - call
call이란? MDN에서 Function.prototype.call이란 주어진 this값 및 각각 전달된 인수와 함께 호출된 함수를 호출한다고 나와있다. 쉽게 애기해서, call을 사용하면 자신을 this로 지칭한 객체의 메서드 외에 다른 객체의 메서드도 사용할 수 있다. 물론 프로퍼티의 경우도 동일하게 가져와 쓸 수 있다. function Person (f_name,l_name){ this.f_name = f_name; this.l_name = l_name; } undefined Person.prototype.hello = function(){ console.log(`my name is ${this.f_name} ${this.l_name}`); } let kim = new Person('kim','mi..
2020.08.22 -
call, apply, bind를 시작하기 전에 this
this? 현재 메소드가 실행되는 '객체'를 지정한다고 할 수 있다. 예를 들어, 크롬 콘솔창에 아래와 같이 함수를 만들어보자. function add(num1,num2){ console.log(this); return num1+num2; } add(1,2); //Window {...} //3 위의 add는 전역에서 생성된 것이므로 해당 함수는 window에서 실행이된다. 이때를 '전역문맥'이라고 한다. 만약 다른 객체에 함수를 만들어 실행시킨다면 this는 변경이된다. let obj = { num1 : 2, num2 : 3, add : function(num1,num2){ console.log(this); return num1+num2 }} obj.add(obj.num1, obj.num2) //{num..
2020.08.11