Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var clone = function (obj) {
- var copy = obj instanceof Array? [] : {}, // проверка дали сме подали масив или обект и създава празен такъв
- key;
- for (key in obj) {
- if (obj.hasOwnProperty(key)) { // проверка дали текущото пропърти е собствено или наследено (копираме само собствени)
- if (typeof obj[key] === 'object') { // проверка дали текущото пропърти е обект
- if (obj[key] instanceof Array) { // проверка дали обекта е масив
- copy[key] = [];
- } else {
- copy[key] = {};
- }
- // текущото пропърти е обект/масив и извикваме рекурсивно clone() да го обходи и да го клонира
- copy[key] = clone(obj[key]);
- } else {
- copy[key] = obj[key]; // текущото пропърти е примитивен тип или функция и затова само си го копираме (by value)
- }
- }
- }
- return copy; // връщаме новото копие (при рекурсията връща текущото клонирано копие на пропъртито на себе си)
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement