-
언어의 원리를 이용한 자바스크립트(2) | 강희성님Javascript/ECMAScript 2009 (ES5) 2020. 3. 8. 10:19반응형
2주차 스터디 기록
# 대입연산자, 변수, 리턴은 값을 복사한다 (객체가 복사되는 게 아님)
- 값 : Heap 에서 저장된 주소
# 자바스크립트에서 실행 할 수 있는 건 오직 함수, 연산자 뿐이다.
# , 연산자는 순서대로 실행해라
함수
# arguments : 매개변수를 지정하지 않을 경우 입력한 매개변수 값만큼 처리한다.
# 이론과 구현을 혼동하지 마라
# 자바스크립트 함수의 시그니처는 이름이다.
- 이름으로 함수를 구분한다.
- 함수를 사용하려면 이름 (또는 연산자)이(가) 있어야 한다.
※ 함수의 기본 구조
- function a () { return }; * 함수를 정의하고 a를 쓰겠다고 선언함.
- function () { return }; * 실행 안됨. 함수를 정의 했을 뿐 선언을 하지 않음.
※ 익명함수
: 함수의 이름이 없어도 쓸 수 없다.
- ( function () { return } ) : 함수를 정의하고 쓰겠다고 선언함. *() 연산자
# 자바스크립는 함수를 호출할 때도 function / 클래스를 호출할 때도 function
- 클래스 : 어떤 역할을 하는 무엇입니다. (정의와 비슷)
- 생성자 : 어떤 걸 쓸거야 생성해줘 (선언과 비슷)
※ this
- 자바스크립트의 this는 함수가 호출될 때 결정된다. *ex) a.b.c.d.func(); * this==d
※ new 연산자
: 함수 앞에 new를 붙인다. *ex) new func();
- 함수 안에 this를 만들어준다. / 아무것도 return 하지 않으면 new가 만든 this를 리턴한다.
※ prototype
: 인스턴스된 모든 객체에서 공유할 수 있는 객체
- 함수 또는 클래스를 만들어서 원하는 기능을 프로토타입에 넣는다.
Person.prototype.getName = function(){}; var p = new Person(); // p는 인스턴스. p.prototype.getName = function(){};
# 인스턴스의 조상은 object, 모든 객체의 조상은 object
# prototype chain : 상위 객체의 prototype을 계속 체크해서(object까지) 호출한 값이 있는 지 확인(?)
# 메모리를 할당이 적다.
# loop를 돌 경우 성능이 떨어진다 => 함수를 객체에 담는다. (프로토타입을 인스턴스에 담는다.)
a.prototype.getName = function(){}; a.getName = a.getName
※ closer - 참조 변수 (기본 자료형도 참조한다)
(function(){ var i = 0; setInterval(function(){ console.log(++i); // i == closer 변수; },500);
(function(){ var i = 0; setInterval(function(){ console.log(++i); // i == closer 변수; },500); })()
})()
# 자바스크립트는 자동 실행되기 때문에 하드웨어에 접근할 수 없고 브라우저에 위임한다.
- 내가(setInterval) 함수 안에 있고 내가 사용할 변수가 나한테 없고 나를 감싸고 있는 함수 안에 있을 때 참조한다.
- 내가 사용할 변수와 내 위에 있는 변수는 같은 변수가 아니다. 내 위의 변수를 참조할 뿐.
- 변수를 아무도 안 쓸 경우에 메모리에서 자동으로 지워진다.
# 함수의 호출은 값이 복사된다.
# 함수의 파라미터는 함수 안에 변수를 만든 것과 똑같고 초기화만 다르다. (받은 값을 넘겨준다.)
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
함수 - Javascript 핵심 개념 | 정재남 (0) 2020.03.17 데이터 타입 - Javascript 핵심 개념 | 정재남 (0) 2020.03.13 언어의 원리를 이용한 자바스크립트(1) | 강희성님 (0) 2020.02.29 객체 복사하기(얕은·깊은) | ddalpange (0) 2020.02.26 참조 - 객체지향 | 생활코딩 (0) 2020.02.11