문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| javascript:clone [2020/12/30 05:39] – taekgu | javascript:clone [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Clone Function구현 ====== | ====== Clone Function구현 ====== | ||
| - | * Clone Function | + | * Deep Clone Function |
| + | |||
| + | <code javascript> | ||
| + | function clone(obj) { | ||
| + | var copy; | ||
| + | |||
| + | // Handle the 3 simple types, and null or undefined | ||
| + | if (null == obj || " | ||
| + | |||
| + | // Handle Date | ||
| + | if (obj instanceof Date) { | ||
| + | copy = new Date(); | ||
| + | copy.setTime(obj.getTime()); | ||
| + | return copy; | ||
| + | } | ||
| + | |||
| + | // Handle Array | ||
| + | if (obj instanceof Array) { | ||
| + | copy = []; | ||
| + | for (var i = 0, len = obj.length; i < len; i++) { | ||
| + | copy[i] = clone(obj[i]); | ||
| + | } | ||
| + | return copy; | ||
| + | } | ||
| + | |||
| + | // Handle Object | ||
| + | if (obj instanceof Object) { | ||
| + | copy = {}; | ||
| + | for (var attr in obj) { | ||
| + | if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]); | ||
| + | } | ||
| + | return copy; | ||
| + | } | ||
| + | |||
| + | throw new Error(" | ||
| + | } | ||
| + | </ | ||