Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Все массивы являются объектами... (https://javascript.ru/forum/misc/31393-vse-massivy-yavlyayutsya-obektami.html)

vitorrio 05.09.2012 20:54

Все массивы являются объектами...
 
Тогда почему к этому объекту я не могу применить метод push ?
alert("Колличество элементов: "+window.localStorage.length);
var Storage=window.localStorage;
Storage.push='Тест';

dmitriymar 05.09.2012 20:58

Все массивы являются объектами... -
Но не все объекты массивы
метод push метод массива .но не метод родительского класса объект

Rootpassword 05.09.2012 21:11

Вы всегда можете одолжить метод push у прототипа массива, только работать не будет, ибо нужен максимальный числовой индекс, что бы плюсовать-а такого нет.

vitorrio 05.09.2012 21:58

Ну так и что как быть? Я конечно могу сделать так: Сначала узнать последний элемент методом length, потом на +1 ячейку добавлять новые значения, А если сначала загонять все значения storage в массив там уже через метод push а потом этот же массив снова перезаливать в storage - так сработает?

Aetae 06.09.2012 02:10

На самом деле вся суть при работе с обычным объектом в length.
Например это:
var obj = {
	0 : 'zero',
	1 : 'one',
	length : 2,
	foo : 'bar'
};

[].push.call(obj, 'pushed');

alert( JSON.stringify(obj) );

будет работать. Но не везде.

А localStorage это отдельная вещь, хотя в фф например тоже проблем нет:
alert(localStorage.length);

[].push.call(localStorage, 'pushed');

alert(localStorage.length);


Другое дело что length в localStorage считает все добавленные элементы, а значит если там есть пары ключ - значение, то push будет происходить некрасиво, т.к. опирается на length.


Часовой пояс GMT +3, время: 03:22.