Array copy in JavaScript | Жовтень 12th, 2006
Думаю багато хто зустрічався з ситуацією коли масив в 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()
Жовтень 13th, 2006 at 07:35
бачу, що все ж таки, небагато хто…
гггггггггггг
Жовтень 15th, 2006 at 17:21
над таким ніколи не задумувався
Березень 7th, 2007 at 13:25
Вот я и добрался до твоего скрипта, ибо писать лисапед было лом
пасипа +1