목록Programming language/JavaScript (32)
For Programmer

우선 자바스크립트의 상속을 이해하기 위해선 prototype의 개념을 자세하게 알아야합니다. prototype에대해서 자세하게 정리가 되어있는 글이 있기 때문에 링크 남기겠습니다. https://ji-gwang.tistory.com/42 자바스크립트 - prototype(프로토타입) 프로토타입 이해하기 *Person() 함수를 이용해서 객체를 생성하게 되면 sum() 함수도 무조건 같이 생성되게 된다. 이는 메모리낭비를 가져올 수 있으며 이때 사용가능한 것이 prototype이다. prototype은 ji-gwang.tistory.com 상속의 기본예제1 *p1은 Programmer 생성자함수를 이용해 만들어진 변수이다. 그러나 Programmer에는 introduce라는 메서드가 없는데 p1의변수에서는..

리터럴이란? *사실상 우리가 기본적으로 생성하는 배열,객체,함수 등등도 다 new 라는 생성자를 이용하여 생성해야하지만 자바스크립트에서는 이를 편하게 생성하는 것을 제공하기위해서 리터럴을 이용해서 생성할 수 있도록 도와준다.

전역객체 windows 의 개념 * 모든 객체의 상위에는 전역객체가 있다. 그러나 이러한 전역객체의 API는 호스트 환경에 따라 다르다. 예를들어 웹브라우저의 전역객체는 window이지만 node.js에서는 global이다. 또한 전역객체의 내부메서드들도 환경에 따라다른데 alert(); 함수를 사용할 수 있는건 window 객체의 내부메서드 이기때문이다. 전역객체인 window는 생략이 가능하고 alert(''); 로 바로 사용이가능하다. 그러나 node.js에서는 global전역객체 내부에 메서드 alert가 없기 때문에 alert메서드는 사용할 수없다. *우리가 객체내부의 메서드나 원소에 접근할때 위의 코드를 예를들면 o라는 객체내부의 func메서드에 접근할때는 o.func();로 접근할 수있다. ..

객체지향이 필요한 이유 *위의 코드는 Person이라는 함수에 사람의 정보를 넣을때 introduce라는 함수를 중복으로 넣어야 한다는 점이 코드의 중복을 불러와 문제를 일으킴 객체지향의 사용 *Person이라는 함수를 만들어 놓고 new라는 생성자를 통해 객체를 생성한다. 그러나 Person함수내부의 원소에 this. 이라는 키워드가 앞에 붙지 않을 경우 객체를 생성할지 라도 그내부의 원소에 접근할 수가 없다. 예를들어 Person함수에 this.name이아닌 name = name; 이라고 되어있을경우 var p1 = new Person('egoing') 으로 객체를 생성 할지라도 변수 p1은 내부 name에 접근할 수없다. (p1.name = undefined) *단, 3번째 에서 볼 수있듯이 new..

apply함수의 기본 *인자를 2개 받는다. 첫번째 인자는 해당함수안의 this를 무엇으로 치환할꺼냐를 말하는것이고 2번째 인자는 해당함수의 매개변수를 배열로 받는다. apply함수의 사용이유 *sum함수에서 this를 사용하기위해서는 sum함수에 객체나 배열을 집어넣을 필요가있다. 그러나 위의 코드에서 보듯이 o1이라는 객체에 val1,val2,val3을 집어넣기위해 sum이라는 함수도 같이 o1의 객체의 원소에 넣어버리면 for in문은 객체의 모든 원소를 뽑아내기때문에 sum함수까지 _sum이라는값에 대입이 된것을 볼 수있다. 그렇다면 간단하게 객체나 배열을 인자로 전달하여 this를 대체하고싶을땐 무엇을 사용하면될까? 위의 코드에서 해결책을 제시해준다. apply함수를 사용하면 되는데 apply함..

arguments함수란? * arguments 객체는 유사배열이라고도 하며 인자로 전달되는 값에 대한 접근이 필요할때 사용한다. arguments.length로 인자의 개수를 확인할 수있으며 arguments[number]로 각각의 인자의 값에 접근도 가능하다. 인자로전달되는 값에대한 접근 과 매개변수에 대한 접근 *함수이름.length 하면 매개변수의 개수를 구할 수 있으며 , arguments.length하면 전달하는인자의 개수를 구할 수 있다. 이는 실제로 코딩할 때 매개변수의 개수와 전달하는 인자의 개수가 다르다면 오류를 발생시키도록 유도할 수 있으며 자바스크립트는 조금 관대한 언어이기때문에 이런식을 활용하여 오류를 잡아 줄 수있다.

클로저의 기본 *클로저: 간단히 말해서 어떤 함수의 내부 함수를 뜻한다. * outter()함수에만 사용할 필요가 있는 메서드가 있을 경우 내부함수로 만들 필요가 있다.(그것을 동등한 위치의 외부함수로 만들경우 코드의 시각성이 떨어짐) 이때 내부함수에서 외부함수의 지역변수에 접근이가능한데 이것이 클로저함수의 특성이다. 클로저 함수의 독특성 * 외부함수(outter)가 inner라는 변수에 값을 반환하고 소멸하였는데도 ouuter의 내부함수 즉 클로저함수는 그 환경을 기억한다. title에는 'codding everybody'가 대입이 되어서 기억이된 상태를 말한다. 다시 설명하자면, 위의 코드를 보면 inner라는 변수에 outter함수의 반환값을 대입하여 inner에는 function() { alert..

값(value) 로써 함수를 사용 *자바스크립트에서는 함수도 객체이기 때문에 값으로 사용이 가능하며 이 함수가 객체내부의 값으로 사용되었을 경우 메서드라고 부른다. 객체와 배열 의 원소로 함수를 사용 * 배열 값으로 함수를 쓸 때는 함수의 이름을 지정하지 않는게 편하며 지정하게 되더라도 배열의 원소에 접근 할때는 위와 같이 process[i] 와같이만 접근이 가능하다. 콜백함수 사용 *콜백함수:간단히 다른함수의 인자로 함수를 사용하는것을 말한다. 위의 코드에서는 배열의 내부메서드 sort라는 함수의 인자로 함수 sortfunc를 사용하였다.(sort메서드의 동작방식을 커스터마이징하였음.)