![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
AKS |
|
||||||
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
С какой стати? Вы ведь присвоили новое значение "копии" и ее же вернули. С объектом будет тоже самое, если возвращать новое значение, и не то же самое, если изменить знание "копии" (и, соответственно, оригинала):
Добавлено через 5 минут и 14 секунд
Не сразу понял, о каких затратах речь. ![]() Получается, что так. Если переменные указывают на объекты, то при их сравнении движок просто "полюбопытствует" - на одни объект указывают ссылки или нет. А вот чтобы сравнить их значения, придется "вынимать" эти значения из объектов. Добавлено через 11 минут и 39 секунд Мне тоже они казались совершенно очевидными, а вот оказалось так, что сформулировать знания не смог. ![]() |
||||||
|
|||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
x в моем примере по вашим словам - ссылка, а не копия... Добавлено @ 12:18 Видимо, разумнее будет считать, что строки передаются "хитрым" образом... Типа по ссылке, но при изменении тут-же строится копия этой самой строки... ![]() Это сообщение отредактировал(а) ksnk - 11.1.2008, 12:19 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
AKS, с примером я действительно лоханулся... у String'а, оказывается даже нет методов, изменяющих самого себя...
Это сообщение отредактировал(а) ksnk - 11.1.2008, 13:05 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
AKS |
|
||||||||||||
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Кстати, заодно отвечая и на это:
могу написать следующее (на примере вашей var y=function(x){return x+=' one more string'};). Давайте "разглядим", что такое x внутри функции. X - это ведь уже и не аргумент, это свойство variable object:
Можно предположить, что выглядит это так:
Итак, создано св-во, значением которого является ссылка на строку. А что происходит далее? А происходит то, что Вы присваиваете этому св-ву новое значение:
При этом сама оригинальная ссылка, которая "очутилась" в функции в качестве аргумента, к этим изменениям не имеет никакого отношения. Есть доступ только к св-ву variable object, и до тех пор, пока св-во тождественно ссылке, посредством этого св-ва можно было "управлять" тем, на что указывает ссылка (т.е. менять какие-нибудь св-ва объекта). Вот так я себе это представляю. Вообще, про функции пишут, что все им передается по значению. Если это ссылка, то передается именно значение ссылки, вместо того значения, на которое указывает ссылка. Но мне кажется, все равно, как там и что передается. И я уже объяснил почему - потому что манипулировать мы можем лишь св-вами variable object. Присвоив новое значение мы просто-напросто теряем связь с оригинальным значением.
И поэтому непонятно, как доказать, что строки не копируются, как числа или булевы значения, а копируются ссылки на их значения, созданные единожды. Вообще, я ведь только пересказал то, что пишут разработчики. |
||||||||||||
|
|||||||||||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
1. примитивные значения передаются и присваиваются по значению
2. комплексные объекты - по ссылке что тут может быть непонятно? ![]() |
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
А в JavaScript есть примитивные значения?
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
dsCode |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
||||
|
||||
AKS |
|
||||
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Вы, судя по всему, спрашиваете о том, чего именно не поняли Вы? Что ж, я Вам отвечу. Мы с ksnk полдня обсуждали тот факт, что строки копируются и передаются by reference. Copying, Passing, and Comparing Data:
А Вы, несмотря ни на что, пишите, что "примитивные значения передаются и присваиваются по значению". Вы просто упустили этот момент в силу своей невнимательности или Вы несогласны с этим? В любом случае, прошу Вас, ради бога, избавьте нас от своих "устало-мудрых" замечаний, вроде "чего вам всем тут непонятно". А если уж Вам все понятно (после того, как здесь все обсудили), то ответьте на вопрос - чем отличаются ваши "комплексные объекты" от "некомплексных"? Да, есть.
|
||||
|
|||||
cruelangel |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 12.9.2007 Репутация: 4 Всего: 8 |
> Мы с ksnk полдня обсуждали тот факт, что строки копируются и передаются by reference.
глупость какая. в цитате просто описываются принципы ленивого копирования. > чем отличаются ваши "комплексные объекты" от "некомплексных"? некомплексные, они же примитивные, объекты - это строки, числа и булы, которые в спеках называются примитивными значениями, а вот действительно примитивными значениями являются null и undefined Это сообщение отредактировал(а) cruelangel - 11.1.2008, 19:48 |
|||
|
||||
AKS |
|
||||
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Да-а-а... Что тут сказать? Я сам виноват – расслабился, забыл то, с кем имею честь. А ведь следовало бы помнить, хотя бы по теме намбер или не намбер ?. В той теме, блуждая в трех соснах, Вы, тем не менее, с завидным упорством утверждали, что вообще нет примитивов, а есть лишь объекты. То, что Вам ответил Zeroglif, будет очень кстати и в этой теме: Так вот, возвращаясь к тому, что прописано в ECMAScript Language Specification Edition 3, и добавляя к тому, что уже цитировал из спецификации в предыдущем сообщении, отмечу следующее. Есть четко сформулированные алгоритмы, например:
в которых явно описывается конвертация в примитивное значение (не объект!!!). Также есть, например, value properties of the Global Object, такие как NaN или Infinity, которые изначально по определению не являются объектами. Более того, в спецификации специально описана такая абстрактная операция, как ToPrimitive, чтобы помочь разъяснить семантику языка:
Все это говорит о том, что Вы глубоко заблуждаетесь, называя объектами то, что объектами не является. Также глубочайшим вашим заблуждением является то, что Вы что-то называете комплексными/некомплексными объектами – в ECMAScript Language нет ни того, ни другого понятия. Ну и, наконец, несмотря на то, что Вам уже неоднократно объясняли суть дела, Вы по-прежнему пишите, что "...объекты - по ссылке (передаются и присваиваются)". Если то, что мы обсуждали, для Вас – глупость, то зачем Вы пытаетесь присоединиться к обсуждению? Только затем, чтобы назвать обсуждение глупостью? Но я ведь Вам на русском языке написал – найдите в себе силы отказаться от подобных высказываний! Произвести впечатление Вы сумеете лишь в том случае, если сможете отказаться от своей склонности к искажению фактов и от попыток прикрыть свою некомпетентность своими же досужими вымыслами и отвлеченными фантазиями. В цитате черным по белому сказано: strings are copied and passed by reference. Где Вы увидели описание принципа "ленивого копирования"? Узрели между строк? Это сообщение отредактировал(а) AKS - 11.1.2008, 22:58 |
||||
|
|||||
egao |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 6.8.2007 Репутация: -1 Всего: нет |
> Так вот, возвращаясь к тому, что прописано в ECMAScript Language Specification Edition 3
эту спецификацию писали люди, которые не понимают что такое объект. > Где Вы увидели описание принципа "ленивого копирования"? Узрели между строк? да. |
|||
|
||||
dsCode |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
![]() /** удаленный текст ![]() Это сообщение отредактировал(а) dsCode - 12.1.2008, 00:19 |
|||
|
||||
egao |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 6.8.2007 Репутация: -1 Всего: нет |
улыбайтесь - это всех раздражает
![]() |
|||
|
||||
AKS |
|
|||
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 27 Всего: 52 |
Хорошо. Давайте представим, что ваши заявления верны и ученые степени тех, кто писал ECMAScript Language Specification, не позволяют им осознать в полной мере, что такое объект в информатике. Они-то, будучи людьми весьма приземленными (т.е. "зашибленными" парадигмой объектно-ориентированного программирования), наивно полагают, что объект – это всего-навсего экземпляр какого-либо класса (конструктора, применительно к данному разделу). Вы, видимо, мыслите какими-то своими философскими категориями и считаете, что понятие "объект" значительно шире, чем кто-либо может себе это представить. Так вот у меня просьба – поделитесь хоть какой-нибудь полезной информацией на эту тему, которая бы указала нам на выход из тьмы неведения. И, пожалуйста, если это будут ссылки на статьи, пусть это будут статьи, написанные не Вами, а каким-нибудь другим автором. На самом деле, Вам давно уже надо было предложить хоть какие-то сведения в защиту своей точки зрения. А то пока получается так, что информативная ценность всех ваших сообщений равна нулю.
Я, в общем-то, предполагал, что Вы обладаете возможностями, которых нет у других (в данном случае – это умение видеть то, что скрыто от глаз остальных участников обсуждения). Теперь понятно, почему некоторые реплики Вам кажутся глупыми. А на какую реакцию Вы рассчитывали? Заявляя о том, что здесь пишут глупости, о том, что авторы языка программирования ничего не знают об объектах, Вы должны были ожидать нечто подобное. Лично я не удивляюсь, если кто-нибудь напишет, что он вообще чуть не умер от смеха, читая Ваши высказывания. Это сообщение отредактировал(а) AKS - 12.1.2008, 10:27 |
|||
|
||||
egao |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 6.8.2007 Репутация: -1 Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |