목록Programming language (59)
For Programmer

원시데이터 타입 레퍼객체란? 자바스크립트에서 값의 복사와 참조 * 원시데이터(String,number,bollean) 일때는 대입할 때 값의 복사가 일어나고(1번) 객체를 가리키고있는 변수를 대입할때는 값의 참조(2번)가 일어난다. 이때는 값이 참조가 되기 때문에 객체 c를 변수 d에 넣었을 경우 d의 내부 id값을 변경할 경우 c의 내부 id값도 변경이 발생한다. 단, 새로운 객체를 생성할 경우(3번) 이름이 같다고 할지라도 다른 객체이다. 함수에서의 값의 참조 *b의 id값을 변경하지만 b에는 a객체가 대입이 되기때문에 a의 id값의 변경이 발생한다.

자바스크립트에서는 함수도 객체이다. Object객체란? * 자바스크립트의 모든 객체는 Object 객체를 상속 받는데, 그런 이유로 모든 객체는 Object 객체의 프로퍼티를 가지고 있다. Object객체의 API 사용 * Object객체의 내부 메서드 contain를 생성하여 모든 객체들은 Object객체를 상속받기때문에 모든 객체들은 contain메서드를 사용할 수있다. Object 객체를 직접 커스터마이징 할경우 발생할 수있는 문제 *위의 코드를 바탕으로 객체 o 를 for in 문으로 출력해보면 다음과같이출력이 된다. *object는 모든객체의 부모이기때문에 object의 prototype에 메서드를 커스터마이징할경우 모든 객체는 for in문으로 출력시 해당 함수도 같이출력하게된다. (원래 상속..

내장객체의 종류 *기본적으로 자바스크립트는 해당객체를 지원하고 있으며 호스트환경에 따라 더추가적으로 지원된다. 추가적인 내장객체는 공식문서에서 확인하자 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects 표준 내장 객체 이 장은 JavaScript의 모든 표준 내장 객체와 그 메서드 및 속성을 나열합니다. developer.mozilla.org 내장객체를 이용하여(array함수) 내장객체 함수를 커스터마이징 해보기 * 1번은 기본적인 함수 생성방식을 이용하여 배열의 내부원소에 랜덤으로 접근하는 함수를 만든것이다. 2번은 Array라는 생성자 함수의 prototype에 직접접근하여 array 내부메서드를 만들어 배열의 ..

우선 자바스크립트의 상속을 이해하기 위해선 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함..