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 |
댓글 없음:
댓글 쓰기