검색결과 리스트
유용한 함수에 해당되는 글 1건
- 2009.05.29 JS 유용한 함수
글
□ 객체용 함수들
□ 배열용 함수들
□ 함수용 함수들
// 객체 o의 열거 가능한 프로퍼티들의 이름을 담은 배열을 반환한다. function getPropertyNames( /* Object */ o) { var r = []; for(name in o) r.push(name); return r; } // 객체 from의 열거 가능한 프로퍼티들을 객체 to로 복사한다. // 만약 to가 null이면 새로운 객체를 생성한다. 이 함수는 결과로 객체 to를 반환하거나 // 새롭게 생성한 객체를 반환한다. function copyProperties( /* Object */ from, /* optional Object */ to) { if(!to) to = {}; for(p in from) to[p] = from[p]; return to; } // 객체 from의 열거 가능한 프로퍼티들을 객체 to로 복사하되, to에 의해 정의되지 않은 프로퍼티만 복사한다. // 이 함수는 to에 미리 정의되어 있지 않은 값들에 대해 from에 저장해 둔 기본값들을 사용하려 할 때에 유용하다 function copyUndefinedProperties( /* Object */ from, /* Object */ to) { for(p in from) { if(!p in to) to[p] = from[p]; } }
□ 배열용 함수들
// 배열 a의 각 원소를 지정된 술어(predicate) 함수로 전달한다. // 술어 함수가 true를 반환한 원소들로 이루어진 배열을 결과로서 반환한다. function filterArray( /* Array */ a, /* Boolean Function */ predicate) { var results = []; var length = a.length; // 술어 함수가 배열의 길이를 변환할 경우에 대비하여 for(var i = 0; i < length; i++) { var element = a[i]; if(predicate(element)) results.push(element); } return results; } // 배열 a의 각 원소를 지정된 함수 f로 전달하여 얻은 결과들을 원소로 하는 배열을 반환한다. function mapArray( /* Array */ a, /* Function */ f) { var r = []; // 결과들을 저장할 배열 var length = a.length; // 함수 f가 배열 길이를 변환할 경우에 대비하여 for(var i = 0; i < length; i++) r[i] = f(a[i]); return r; }
□ 함수용 함수들
// 함수 f를 객체 o의 메서드로 하여 호출하는 독립형(standalone) 함수를 반환한다. // 이것은 메서드를 함수에 전달하려 할 때 유용하다. 만약 함수를 그 함수의 객체와 // 연결하지 않으면, 그 연관 관계는 소실되며 전달한 메서드는 일반 함수처럼 호출된다. function bindMethod( /* Object */ o, /* Function */ f) { return function() { return f.apply(o, arguments); } // 함수 f를 지정된 전달인자와 함께 호출해 주는 함수를 반환한다. // 이렇게 반환된 함수는 또한 추가적인 전달인자들과 함께 호출될 수 있다. // (이것은 때때로 'currying'이라 불린다.) function bindArguments( /* Function */ f /*, initial arguments ... */ ) { var boundArgs = arguments; return function() { // 전달인자들로 구성된 배열을 만든다. 이 배열은 이전에 건네받은 전달인자를 // 원소로 시작하여, 지금 추가로 건네받은 전달인자까지 포함된다. var args = []; for(var i = 1; boundArgs.length; i++) args.push(boundArgs[i]); for(var i = 0; arguments.length; i++) args.push(arguments[i]); // 이제 이 전달인자들과 함께 함수를 호출한다. return f.apply(this, args); } } }