Все массивы являются объектами...
Тогда почему к этому объекту я не могу применить метод 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, время: 03:22. |