Все массивы являются объектами...
Тогда почему к этому объекту я не могу применить метод push ?
alert("Колличество элементов: "+window.localStorage.length);
var Storage=window.localStorage;
Storage.push='Тест';
|
Все массивы являются объектами... -
Но не все объекты массивы метод push метод массива .но не метод родительского класса объект |
Вы всегда можете одолжить метод push у прототипа массива, только работать не будет, ибо нужен максимальный числовой индекс, что бы плюсовать-а такого нет.
|
Ну так и что как быть? Я конечно могу сделать так: Сначала узнать последний элемент методом length, потом на +1 ячейку добавлять новые значения, А если сначала загонять все значения storage в массив там уже через метод push а потом этот же массив снова перезаливать в storage - так сработает?
|
На самом деле вся суть при работе с обычным объектом в 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, время: 10:16. |