![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
вот код:
у меня линкуется и в ИЕ, и в ФФ почему массив "а" оказался связан с массивом "b", а не просто получил его значения? |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Потому что a и b — это лишь указатели на объекты массивов. Когда вы пишете a=b, вы изменяете не массив, которым была инициализирована переменная a, а изменяете так сказать «направление», куда указывает переменная a.
Если нужна именно новая независимая копия массива, на который указывает b, то можно пользоваться функциями, которые возвращают новый объект массива:
Это сообщение отредактировал(а) Amphiluke - 14.9.2009, 14:42 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
мдя, и кто их этому надоумил?
|
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Между прочим, весьма полезная вещь.
Например, есть объект поля ввода. Стандартное обращение к нему: window.document.forms[0].textFieldName. И так нужно было бы писАть каждый раз, когда необходимо обратиться к полю ввода, но однако ж можно построить указатель на объект (с коротким именем) и использовать его вместо этой длинной записи. Да и к дисциплине приучает, чтобы программисты не разбрасывались объектами, создавая кучу экземпляров одного и того же. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
нет, одно дело объекты DOM, совсем другое переменные и как их разновидность - массивы. тут совершенно не понятно зачем потребовалось делать такой функционал.
совершенно не приучает. горе-специалисты просто не обращают внимание и пишут часто такие конструкции: for(i = 0; i < arr.length; i++) а если вместо arr - какой-нибудь элемент в структуре страницы, скажем набор options в селекте, то получается, на каждой итерации интерпретатор вытягивает этот элемент и считает количество потомков имхо, очередной выкрутас js, в духе, не как у людей |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
bars80080, с вашего позволения останусь при своем мнении. Массивы, строки, числа, функции, элементы DOM — всё объекты. На мой взгляд, стандартизированный объектный подход — неоспоримое достоинство JavaScript. Если сразу приучать себя мыслить с позиций ООП, то проблем станет меньше. Но, дабы не начинать оффтоп, замолкаю, оставаясь, повторю, на своей старой позиции.
|
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
||||
|
||||
| bars80080 |
|
||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
не позволяю. а мы спорим?
я б согласился, если бы в js имели место соблюдения стандартов, а подобная практика была широко распространена в других языках (а в тех что я кошеварю, я не встречал подобного) на переменные в js, данное объектное правило АФАИК свойственное только js, не распространяется:
и в пхп я такого даже близко не видел:
|
||||||
|
|||||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Просто создатели JavaScript пытались, видимо, выполнить за разработчиков сценариев бóльшую часть «грязной» работы и скрыли за «кулисами» часть низкоуровневых операций с указателями. Для языка уровня PHP работу с указателями надо производить явно (наверное, что-то типа $a = &$b, насколько мне позволяют думать скромные познания в PHP)... Хотя это мне не очень нравится, что PHP позволяет вот так просто создавать копию экземпляра объекта. Что если я создам здоровый класс с конструктором, который выполняет сложные манипуляции по инициализации объекта-экземпляра класса, затем добросовестно вызову конструктор для $b. А потом я просто возьму и присвою «левой» переменной $a переменную $b и буду использовать атрибуты и методы так, как будто $a была инициализирована конструктором. И что, PHP справится с возложенной на него задачей правильной инициализации в таком случае? В «серьезных» компилируемых языках программирования это вызвало бы ошибку. Это сообщение отредактировал(а) Amphiluke - 14.9.2009, 21:17 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
ну знаешь, с таким подходом можно ругаться на интерпретатор, что он не разобрал твоей идеи и не исправил там где надо > на =, и не закрыл все не закрытые кавычки и скобки. собсна, невнимательность я отношу именно к таким синтаксическим ошибкам, а вот передача чего-то конкретной переменной, это я уж не знаю. всё-таки, когда пишешь есть представление с чем ты обращаешься |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Амфилук, ты совершенно прав. Не понимаю, к чему цепляется барс, но согласен, что уделяя больше внимания глобальным вопросам и правильному построению структуры, подходов и придерживания принципов, в дальнейшем экономится уйма времени и сил.
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
ну вот, я оказывается цепляюсь.
я удивляюсь. представьте, вы заглядываете в моторный отсек, а там вместо двигателя - хомячки в колёсиках бегают но не очень, так как javascript известен своими выходками |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
bars80080,
Мы говорим об объектах. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 15 Всего: 315 |
а я говорю о массивах. и раз я топикстартер, то мы тоже говорим о массивах
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 11 Всего: 142 |
На сколько мне известно, в ООП-языках массивы являются объектами ссылочного типа. Поэтому, для общего развития интересуюсь: о каких языках речь? Потому что я не встречал обратного, чтобы массивы вот так вот бесконтрольно клонировались. А на счёт js ты зря - язык по своему очень интересный -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |