고리타분한 개발자
다른 프로그래밍 언어에서 this가 가리키는 것과 Javascript에서 this가 가리키는 것과는 좀 다릅니다. this가 가리킬 수 있는 객체는 정확히 5종류입니다. // 1. Global Scope에서 // Global Scope에서도 this가 사용될 수 있고 이때에는 Global 객체를 가리킵니다.this; // 2. 함수를 호출할 때 // 이때에도 this는 Global 객체를 가리킵니다.// strict 모드에서 더는 Global 객체를 가리키지 않고 대신 undefined를 가리킵니다.monkey(); // 3. 메소드로 호출할 때 // 이 경우에는 this가 test를 가리킵니다.test.monkey(); // 4. 생성자를 호출할 때 // new 키워드로 생성자를 실행시키는 경우에 이 ..
Javascript에서 함수는 First Class Object입니다. 즉, 함수 자체가 또 다른 함수의 인자가 될 수 있다는 말입니다. 그래서, 익명 함수를 비동기 함수의 콜백으로 넘기는 것도 이런 특징을 이용한 일반적인 사용법입니다. 함수 선언 function monkey() {} 위와같이 선언한 함수는 프로그램이 실행하기 전에 먼저 호이스트(Hoist)(스코프가 생성)되기 때문에 정의된 스코프(Scope) 안에서는 어디서든 이 함수를 사용할 수 있습니다. 심지어 함수를 정의하기전에 먼저 함수를 호출하여도 정상 작동 합니다. monkey(); // 이 코드가 실행되기 전에 monkey가 만들어지므로 잘 동작한다.function monkey() {} 함수 표현식 var monkey = function(..
객체의 프로퍼티를 탐색할 때 in 연산자와 마찬가지로 for in 문도 프로토타입 체인까지 탐색합니다. for in 문은 프로토타입 체인을 모두 탐색하기 때문에 상속할 때마다 속도가 더 느려집니다. // Object.prototype에 값을 대입합니다.Object.prototype.monkey = 1; var animal = {tiger: 2};for(var i in animal) { console.log(i); // monkey와 tiger 를 모두 출력합니다.} for in 문에 정의된 기본 동작을 바꿀수는 없기 때문에 루프 안에서 불필요한 프로퍼티를 필터링 해야 합니다. 그래서 Object.prototype의 hasOwnProperty메소드를 이용해 본래 객체의 프로퍼티만 골라냅니다. for in ..