Array copy in JavaScript |

Думаю багато хто зустрічався з ситуацією коли масив в JavaScript передається як посилання на об`єкт, а не створюється копія. Пропоную свій варіант обходу такого неподобства.

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
javascript Object.prototype.isArray = function () {
return (this.constructor.toString().indexOf("Array") == -1) ? false : true ;
}
 
Array.prototype.copy = function () {
var temp_array = new Array();
for (var i=0; i < this.length; i++) {
temp_array[i] = (this[i].isArray()) ? this[i].copy() : this[i];
}
return temp_array;
}[/js]
 
використання:
 
[js]var a = new Array(1,2,3,4,5);
var b = new Array();
var c = new Array();
// зі збереженням посилання
b = a;
// клонування без збереження посилання
c = a.copy();
a.push(6);
alert(b);
alert(c);
// відчуйте різницю ;)

Як бонус – метод для перевірки чи є обєкт масивом чи ні ;) isArray()

Запис 'Array copy in JavaScript' 4 коментарі
  1. AthehNo Gravatar:

    бачу, що все ж таки, небагато хто…

    гггггггггггг

  2. АнатолійNo Gravatar:

    над таким ніколи не задумувався :)

  3. AzazelNo Gravatar:

    Вот я и добрался до твоего скрипта, ибо писать лисапед было лом :) пасипа +1

  4. BRENDNo Gravatar:

    ))) Смешно… ибо копия массива делается через slice(0).

Коментувати

*

*

Категорії
Архів