Как стать автором
Обновить

Комментарии 11

var child=open(«ChildForm.html», «Child Form», «toolbar=no,directories=no,menubar=no», true);
child.dataArray=dataArray;

* This source code was highlighted with Source Code Highlighter.

Такой вариант не прокатит?
хм ;) как-то не подумал даже о таком. Ща попробую
не катит вариант — пермишн динайед… хотя домен один. Да и не удобно это с точки зрения логики приложения, имхо.
я думаю нет, массив-то всё равно принадлежит скопу парента, там и будет почищен.
Ага, сталкивался с такой проблемой, копировал массив поэлементно. Сложные объекты всё же передаются по ссылке и гц не учитывает межоконное взаимодействие.
Да, объекты передаются нормально, речь именно о массивах.
Спасибо! Переделал на поэлементное копирование, оно конечно лучше JSON.
Объект Array в разных окнах разный. Можно сказать, что для каждого окна поднимается свой JS-движок (хотя это не так на самом деле).
Посмотрите, например, как в jQuery реализован метод isArray
isArray: function( obj ) {
  return toString.call(obj) === "[object Array]";
}

Он так сделан не зря :)
Не совсем, мне кажется, о том речь. массив передает все значения в дочернее окно, но при этом становится объектом, т. е. теряет свои признаки массива.
Простите, но вы плохо знаете JS.
Массив, как и все остальные объекты, «наследуется» от Object
var a = [1,2,3] // массив
a.myvar = 'ololo' // это не мешает ему быть объектом
a instanceof Array // true
a instanceof Object // true
a[1] // -> 2
a['myvar'] // -> 'ololo'


В вашем случае, дело как раз в том, что если вы создаете массив в одном окне, то в другое оно передается как массив. Но в то же время не является «производным» от объекта Array второго окна, поэтому instanceof и не работает
Нет, то что все в яваскрипе — объекты и их производные, с этим я не спорю ;) Но теперь понял вашу мысль, про разные окна.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории