본문 바로가기

javascript27

this this this는 함수 내에서 함수 호출 맥락(context)를 의미한다. 맥락이라는 것은 상황에 따라서 달라진다는 의미인데 즉 함수를 어떻게 호출하느냐에 따라서 this가 가리키는 대상이 달라진다는 뜻이다. 함수와 객체의 관계가 느슨한 자바스크립트에서 this는 이 둘을 연결시켜주는 실질적인 연결점의 역할을 한다. 함수호출 함수를 호출했을 떄 this는 무엇을 가르키는지 살표보자. this는 전역객체인 window와 같다. function func() { if (window === this) { console.log("window === this"); } } 결과 window === this 메소드의 호출 객체의 소속인 메소드의 this는 그 객체를 가르킨다 let o = { func : functi.. 2021. 7. 19.
전역객체(Global object) 전역객체(Global object)는 특수한 객체다. 모든 객체는 이 전역객체의 프로퍼티다. function func() { alert("Hello?"); } func(); window.func(); func();와 window.func();는 모두 실행이 된다. 모든 전역변수와 함수는 사실 window 객체의 프로퍼티다. 객체를 명시하지 않으면 암시적으로 window의 프로퍼티로 간주된다. var o = { func: function () { alert("Hello?"); }, }; o.func(); window.o.func(); 자바스크립트에서 모든 객체는 기본적으로 전역객체의 프로퍼티임을 알 수 있다. 전역객체 API ECMAScript에서는 전역객체의 API를 정의해두었다. 그 외의 API는 호스.. 2021. 7. 19.
생성자와 new 객체란 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있다. 객체 내의 변수를 프로퍼티(property) 함수를 메소드(method)라고 부른다. 객체를 만들어보자. let person = { name: kikiki", introduce: function () { return "My name is" + this.name; }, }; 객체란 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있다. 객체 내의 변수를 프로퍼티(property) 함수를 메소드(method)라고 부른다. 객체를 만들어보자. let person = {}; person.name = "kikiki"; person.introduce = function () { return "My name is" + this.name; }; .. 2021. 7. 19.
함수호출 apply 함수호출 (apply) 함수에 대한 기본 수업에서 함수를 호출하는 방법을 알아봤다. 아래는 함수를 호출하는 가장 기본적인 방법이다. function func() {} func(); JavaScript는 함수를 호출하는 특별한 방법을 제공한다. 본 토픽의 시작에서 함수를 객체라고 했다. 위의 예제에서 함수 func는 Function이라는 객체의 인스턴스다. 따라서 func는 객체 Function이 가지고 있는 메소드들을 상속하고 있다. 지금 이야기하려는 메소드는 Function.apply과 Function.call이다. 이 메소드들을 이용해서 함수를 호출해보자. 결과는 3이다. function sum(arg1, arg2) { return arg1 + arg2; } console.log(sum.apply(n.. 2021. 7. 17.
arguments(인자) arguments 함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다. 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다. 아래 예제를 보자. 결과는 10이다. function sum() { let _sum = 0; for (let i = 0; i < arguments.length; i++) { document.write(i + ":" + arguments[i] + " "); _sum += arguments[i]; // 1 3 6 10 } return _sum; } document.write(`result : ${sum(1, 2, 3, 4)}`); // 10 함수 sum은 인자로 전달된 값을 모두 더해서 리턴하는 함수다. 그런데 1행처럼 함수 sum은 인자에 대한 정의하가 없다. 하지.. 2021. 7. 17.
클로저(Closure) 클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다. 클로저는 자바스크립트를 이용한 고난이도의 테크닉을 구사하는데 필수적인 개념으로 활용된다. 내부함수 자바스크립트는 함수 안에서 또 다른 함수를 선언할 수 있다. 아래의 예제를 보자. 결과는 경고창에 coding everybody가 출력될 것이다. function outter() { function inner() { let title = "coding everybody"; console.log(title); } inner(); } outter(); 위의 예제에서 함수 outter의 내부에는 함수 inner가 정의 되어 있다. 함수 inner를 내부 함수라고 한다. 내부함수는 외부함수의 지역변수에 접근할 수 .. 2021. 7. 17.