2017년 1월 2일 취업한 신입개발자 입니다.              


 2017.03 ~2017.04

 하이브리드 앱 개발(결제와 푸쉬메시지 작업)

 2017.05 

 현재 오픈마켓 프로젝트 진행 중


'profile' 카테고리의 다른 글

프로필  (0) 2017.06.04

자바스크립트에 TDD를 적용해 보기 위해 검색해 보니 모카와 자스민 두가지가 있다.

구글 트렌드를 검색해 보니 자스민이 미세하게 그래프가 높지만 모카가 거의 따라왔다.

보는 책에 자스민으로 설명되있으니 자스민을 선택했다.


npm install -g jasmine

2.6.0 버전이 설치 된다.

nodejs 모듈 만드는 건 실패 했다.


그냥 stand-alone버전 받아서 압출 풀어서 한다.

SpecRunner.html라는 예제 소스를 보면 된다.


테스트 프로세스는 red-green-refactoring 순으로 진행된다.

실제 코스트에서는 given-when-then


테스트할 함수를 만든다.


describe("함수를 적는다.", function(){

it("테스트할 내용을 적는다.", function(){

expect(함수 호출()).toEqual(원하는 결과 값);

}

}

it 함수를 spec이라고 부른다.


'학습일기' 카테고리의 다른 글

06월28일 공부 DOM1 방식 이벤트 문제점  (0) 2017.06.28
06월27일 공부  (0) 2017.06.27
06월25일 공부 javascript this #1  (0) 2017.06.26
6월17일  (0) 2017.06.17
2017년 06월05일  (0) 2017.06.06
2017년 06월 04일  (0) 2017.06.04

call과 bind를 이해하려면 javascript의 this 스코프를 알아야 한다.


var q = document.querySelector 를 이렇게 짧게 쓰려고 한다면?

q("form")을 실행하는 순간 Uncaught TypeError : Illegal invocation at 라고 에러가 발생한다. 

왜 그럴까?
인자가 어떻게 전달되는지 알아야 한다.
"form"라는 인자는 querySelector에 this.form 비슷하게 전달된다.
docuement.querySelector("form")이라고 한다면
this 는 document를 가르키지만
q로 빠지는 순간 this는 window가 된다.
그래서 엉뚱한 "form"을 찾으려하니 에러가 발생한다.

이를 해결하기 위해서 this를 지정해 주는 함수가 call과 bind이다.
위의 문제를 해결하려고 하면
document.querySelector.bind(document) 라고 해주면
this가 window가 아니라 document가 되므로 정상적으로 q를 사용할 수 있다.

bind를 객체에 this를 주입하는 것이고
call은 this를 주입해서 함수를 실행 시킬 수 있다.
  var a = {
x : 1
  };
var obj = {
test : function(){console.log(this.x)}
};
  obj.test();
obj.test.call(a); 

결과 :

 undefined

 1

'javascript' 카테고리의 다른 글

ie, chrom] new Date 관련  (0) 2017.12.27
jquery outerHTML  (0) 2017.12.27
IE에서 inline style 자동 파싱 문제  (0) 2017.12.27
Closure의 중요성  (0) 2017.07.08
&& 와 || 는 if 문에서만 쓰이는 것이 아니다.  (0) 2017.06.18
javascript call과 bind  (0) 2017.05.27

+ Recent posts

티스토리 툴바