2016년 10월 1일 토요일

learning underscore.js 원서 읽으며 연습하기!

page 33 개인적으로 잘몰라서 주석을 넣어보았다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var propertyExtractor  = (function(){
  "use strict";
  return {
    extractStorableProperties: function(source){
      var storableProperties = {};
      // +사인은  숫자형으로 변환한다.
      // !==는 오리지널 값과 숫자형으로 변환된 값을 비교하는  비 식별 연산자이기 때문에...
      // === non-identity operator는 true를 반환하는 경우는 2가지다
      // 1. 비교된 객체의 유형이 다른경우                      - 예)  1 !== '1' 의 비교  값을 var a  = function(){ return '1' }();
      // 2. 비교된 객체가 같은 타입이지만 다른 값을 갖는 경우      - 예)  2 !== 3
      if(!source||source.id !== +source.id){    // source가 있어야하며 source.id를 비교 (+source.id는 의미를 모르겠다.)
        return storableProperties;
      }
 
      //조건에 합당한경우 추출 대상 콜렉션 : source
      _.each(source, function(value,key){
        // 값이 객체여야하며, Date의 인스턴스일경우 isDate는 true
        var isDate = typeof value === 'object' &&  value instanceof Date;
 
        // isDate가 true 인경우(날짜) || value가 숫자형일경우 || 문자형일경우  결국 value 값이 저장가능한
        // 날짜형, 숫자형, 문자형 인경우 key와 value를 객체에 저장하겠다.
        if(isDate|| typeof value === 'boolean'|| typeof value === 'number' || typeof value ==='string'){
          storableProperties[key] = value;
        }
 
      });
      return storableProperties;
    }
  }
}());
cs

댓글 없음: