Передача объекта в функцию!
Возникла небольшая проблема при запуске кода в Google Chrome.
Он не всегда передает указатель на объект и я не знаю с чем это связанно! Вообщем есть некая функция function add (name) { name[test]++; } в которой name указатель на объект. Но при передаче в него например add (Object); - все нормальноadd (Massiv[11]); - а при массиве объектов, выбивает ошибку! С чем это может быть связанно, может быть это баг самого объекта в массиве ? И причем эта проблема через раз! ТО работает то нет! В других браузерах все ок! |
Severtain,
у вас работает этот код? (я на UNIX в FF) function add(name){ return ++name['lol']; } x = { 'lol':1 } Massiv = new Array(11); Massiv[11] = x; alert(add(x)); alert(add(Massiv[11])); |
На FF, Opera, Safari он и у меня работает=)
А вот на Google Chrome ошибка. Думаю может там не успевают создаться объекты или может порядок у них не правильный, но почему же тогда в других работает. |
Какая ошибка? Что пишет в консоли? Покажите пример, в котором происходит ошибка.
В JavaScript нет указателей. Передача происходит по-значению. |
Пишет, что одно из значений в объекте не найдено или отсутсвует!
чтото типа этого var a= { ast :0, tast : {a:0, b:0 } } var b = new Array (2); b[0]= { ast :0, tast : {a:0, b:0 } } b[1]= { ast :0, tast : {a:0, b:0 } } function add (name) { name.tast.a++; if (name.tast.b==0) {alert ('work');} } |
Uncaught TypeError: Cannot read property 'одно из значений в объекте в данном случае это был бы b[0].tast.b' of undefined
|
Severtain,
уберите var-ы перед b[0] = ... и b[1] = .. |
var a= { ast :0, tast : {a:0, b:0 } } var b = new Array (2); b[0] = { ast :0, tast : {a:0, b:0 } } b[1]= { ast :0, tast : {a:0, b:0 } } function add (name) { name.tast.a++; if (name.tast.b==0) {alert ('work');} } add(b[1])//work add(a)//work |
Значит скорее всего проблема может быть в том, что номер объекта указан не правильно или же объект не успевает создаться !
|
Severtain,
пример выше работает? |
Да! Конечно!
|
Severtain,
ну тогда проблема не в хроме, а у вас в коде (а то var b[0] = {a:0, tast:{a:0,b:0}}это как-то странно =)]) |
http://severtain.narod2.ru/
На втором Lvl вылетает! и вот хоть тресни! Запуск возможен только через Chrome |
Dim@,
в других все пашет ) |
Severtain, правильно ли я понял, что у вас в Chrome не работает этот код:
var a= { ast :0, tast : {a:0, b:0 } } var b = new Array (2); b[0]= { ast :0, tast : {a:0, b:0 } } b[1]= { ast :0, tast : {a:0, b:0 } } function add (name) { name.tast.a++; if (name.tast.b==0) {alert ('work');} } add(b[0]); и вылетает ошибка "Uncaught TypeError: Cannot read property 'одно из значений в объекте в данном случае это был бы b[0].tast.b' of undefined"? |
Все спасибо, я все уже исправил! Ошибка была у меня в самом начале, до этого кода и объект не передавался т.к. не создавался!
|
Цитата:
|
Drimogemon,
он думал что ошибка в поведении объектов в массивах |
Drimogemon, и что? Он так будет работать! Там же не массив передается, а одинадцатый элемент, а это и есть объект!
|
Часовой пояс GMT +3, время: 07:13. |