|
|
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Учебник гласит, экземпляр литерала функции или переменной является неименованным объектом, который именуется только ссылкой, которая на него ссылается. Не пойму следующее. window.my_function, window.my_var - эти свойства содержат ссылки на экземпляры, или объект записан непосредственно в них? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 18:25 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Все JS ссылки и информация по этим ссылкам хранится пока на них есть хоть однин указатель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 18:29 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
lanzerwindow.my_function, window.my_var - эти свойства содержат ссылки на экземпляры, или объект записан непосредственно в них?это ссылки. хотя, если в window.my_var хранится число или строка (в общем, простой тип), то непонятно, что там, может, и сами данные напрямую. а функция - это объект, так что window.my_function точно будет ссылкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 18:34 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Ладно, никто толком ни знает, если по чесноку. Качайте учебник "Дэвид Флэнаган. Javascript. Подробное руководство. 6-е издание" .pdf. После убогого псевдоучебника на javascript.ru, который только и оставляет непонятки, этот как бальзам на душу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 19:52 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
lanzerЛадно, никто толком ни знает, если по чесноку. Качайте учебник "Дэвид Флэнаган. Javascript. Подробное руководство. 6-е издание" .pdf. После убогого псевдоучебника на javascript.ru, который только и оставляет непонятки, этот как бальзам на душу. Я так понял Вы нашли там ответ на ваш вопрос, не могли бы вы его процитировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 10:38 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
lanzerЛадно, никто толком ни знает, если по чесноку. Храброе заявление. lanzerНе пойму следующее. window.my_function, window.my_var - эти свойства содержат ссылки на экземпляры, или объект записан непосредственно в них? Если речь идет об объектах, то в переменных хранятся только ссылки на тот объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 11:17 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
lanzerУчебник гласит, экземпляр литерала функции или переменной является неименованным объектом, который именуется только ссылкой, которая на него ссылается. Не пойму следующее. window.my_function, window.my_var - эти свойства содержат ссылки на экземпляры, или объект записан непосредственно в них? Блин. Всегда удивлялся таким формулировкам. Иногда складывается впечатление, что люди, которые пишут книги по программированию начинают забывать русский язык и дабы это скрыть пишут так, что бы всё-ровно никто ничего не понял. По сути вопроса. в js как и в любом языке есть простые типы и сложные. Всё, что относится к сложным типам в js считается объектом (массив, функция, объект). Остальные типы, не являющиеся потомками перечисленных являются простыми. Так вот, все значения сложных типов передаются не по значению, а по ссылке, то есть передача в функцию, присвоение a=b и др. операции, не ведут к копированию данного значения по новому адресу, а всего лишь создают новые ссылки на уже существующее значение. А значит, если в переменной лежит объект, функция или массив - то физически в переменной лежит просто ссылка на значение. Если же в ней значение любого другого типа - тогда оно физически лежит в самой переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 18:37 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Лучше всех ответил Программер :) Программер, как всегда даете грамотный ответ не в первый раз. Большое спасибо. авторЯ так понял Вы нашли там ответ на ваш вопрос, не могли бы вы его процитировать? Программер все объяснил. Но книжку все равно читайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 22:33 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
lanzerавторЯ так понял Вы нашли там ответ на ваш вопрос, не могли бы вы его процитировать? Программер все объяснил. Но книжку все равно читайте.Значит цитаты не будет. Жаль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 22:36 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЕсли же в ней значение любого другого типа - тогда оно физически лежит в самой переменной.рискну предположить, что строки, будучи по классификации "простым типом", всё-таки являются объектами, и var str = "aaa" будет ссылкой. Только не совсем ясно, ссылкой на что именно - либо просто на начало массива с символами, либо на какой-то промежуточный объект (в котором хранится этот массив плюс вспомогательные данные). Истина скрыта в глубинах движка. Т.е. вряд ли var str2 = str приведет к физическому копированию всей строки (в отличии, например, от чисел и булов, где это разумно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 23:06 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёрЕсли же в ней значение любого другого типа - тогда оно физически лежит в самой переменной.рискну предположить, что строки, будучи по классификации "простым типом", всё-таки являются объектами, и var str = "aaa" будет ссылкой. Только не совсем ясно, ссылкой на что именно - либо просто на начало массива с символами, либо на какой-то промежуточный объект (в котором хранится этот массив плюс вспомогательные данные). Истина скрыта в глубинах движка. Т.е. вряд ли var str2 = str приведет к физическому копированию всей строки (в отличии, например, от чисел и булов, где это разумно). Приведёт. Со строками вообще всё конечно сложно. Но... В js есть тип String (если не ошибаюсь так), который является объектом. А есть обычная строка, которая является просто последовательностью символов. Так вот, единственная хитрость, которая может быть вшита внутрь движка - это механизм copy-on-write (когда значение копируется в момент изменения). Но в итоге внешне мы не заметим разницы между копировании сразу и копировании при изменении. То есть я рассуждаю так, есть код: Код: javascript 1. 2. 3. Если бы в str и str2 лежала бы ссылка на строку (получается на одну и ту же строку), то изменение str2 привело бы к изменению str. А раз этого не происходит, значит в какой-то момент происходит копирование значения по новому адресу. Вроде так... Но если ошибаюсь где - поправьте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 23:31 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Во многих платформах (.net, java, javascript) строки являются immutable для оптимизации. Это значит, что строка существует как незменяемый объект в едином буфере строк, а все переменные ссылаются на нужный экземпляр. Работает тот же GC, когда неиспользуемые строки освобождают память. Строку нельзя изменить, её можно только создать с новым значением. Т.е. даже при операции str+="a" создается новая строка и ссылка на неё присваивается переменной. Именно поэтому операции изменения строк в цикле считаются неэффективными и для того же JS рекомендуется собирать строку в массиве с последующим вызовом join - тогда новая строка будет создана один раз в самом конце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2013, 23:46 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Програмёр Код: javascript 1. эксперименты показывают, что это не так. ) строку нельзя менять присваиванием символа (а в IE даже нельзя узнать значение str2[1], требуется str2.charAt(1)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 00:31 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёр Код: javascript 1. эксперименты показывают, что это не так. ) строку нельзя менять присваиванием символа (а в IE даже нельзя узнать значение str2[1], требуется str2.charAt(1)) Жееесть. Это невозможно.... То есть я проверил, и оказалось что Вы правы. Но что за бред, почему интерпретатор ошибку не выплюнул? Я то проверял только str, что бы доказать, что она равна "hello". А много таких конструкций в данном языке, которые ничего не делают? :) Так, по поводу ссылок... По поводу js есть поправка. То есть js всего лишь имитирует простые типы данных. Если рассматривать физическое устройство хранения тех же int, float, boolean, string и т.д., то всё это является объектами внутри :). то есть alert(myVar.constructor) для любой переменной выводит её конструктор. А то есть физически получается на всё в переменных хранятся именно ссылки. Но имитируя простые типы js просто получается копирует объекты при изменении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 09:51 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Програмёрто есть физически получается на всё в переменных хранятся именно ссылки. Но имитируя простые типы js просто получается копирует объекты при изменении. Это для конечного программирования не важно. Достаточно правильно делить на "примитивы" и "объекты". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 10:20 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
krvsaПрограмёрто есть физически получается на всё в переменных хранятся именно ссылки. Но имитируя простые типы js просто получается копирует объекты при изменении. Это для конечного программирования не важно. Достаточно правильно делить на "примитивы" и "объекты". да да... именно об этом я и говорил в первом сообщении. А вот прошлое дополнил просто во избежания разногласий с Яростный Меч, ведь по сути он тоже прав (говоря что строка - это также объект) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 10:30 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зыВо многих платформах (.net, java, javascript) строки являются immutable для оптимизации. Это значит, что строка существует как незменяемый объект в едином буфере строк, а все переменные ссылаются на нужный экземпляр. Работает тот же GC, когда неиспользуемые строки освобождают память. Строку нельзя изменить, её можно только создать с новым значением. Т.е. даже при операции str+="a" создается новая строка и ссылка на неё присваивается переменной. Именно поэтому операции изменения строк в цикле считаются неэффективными и для того же JS рекомендуется собирать строку в массиве с последующим вызовом join - тогда новая строка будет создана один раз в самом конце.Сведения устаревшие. Поск конкат строк в цикле самая "нативная" для больш программистов, все ведущие движки серьезно над ней поработали. Прим год назад спец проводили исслед (сбор инфи и некот тесты), чтобы для себя закрыть этот вопрос. Вот , наприм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 10:38 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Програмёрпрошлое дополнил просто во избежания разногласий с Яростный Меч, ведь по сути он тоже прав (говоря что строка - это также объект) :) Вот тут лучше про такое "забыть"... Поскольку со строкой прокатит такое Код: javascript 1. 2. 3. А с "настоящим" объектом - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 11:48 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
krvsaПрограмёрпрошлое дополнил просто во избежания разногласий с Яростный Меч, ведь по сути он тоже прав (говоря что строка - это также объект) :) Вот тут лучше про такое "забыть"... Поскольку со строкой прокатит такое Код: javascript 1. 2. 3. А с "настоящим" объектом - нет. Это да. Но теперь не даёт покоя другое. почему всё же str[1]="a" не производит никаких изменений, но при этом не выдаёт ошибок. Ведь любой, кто придёт из того же паскаля (делфи) как и я, будет думать что код рабочий, даже не подозревая, что данная инструкция не выполняет вообще ничего. Так же не должно быть: или интерпретатор делает то, о чём его просят, или же он сообщает что не может сделать того, о чём попросили... А тут он ничего ни делает и никак об этом не осведомляет программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 12:59 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
ПрограмёрНо теперь не даёт покоя другое. почему всё же str[1]="a" не производит никаких изменений Потому как неможет... Програмёрно при этом не выдаёт ошибок А вот это конечно зря... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 13:26 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Програмёрно при этом не выдаёт ошибок Потому как таки "массив". Код: javascript 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 13:30 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
krvsa Код: javascript 1. 2. 3. кстати, в алерте выскочит undefined Подробности тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 13:43 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный Мечkrvsa Код: javascript 1. 2. 3. кстати, в алерте выскочит undefined Подробности тут ссылка полезная, сенкс... Но это сколько, простите, надо было выкурить, что бы такое сделать? То есть, a[1] = "X" создаёт объект-обёртку для строки a, и в свойство ['1'] этого объекта заносит значение "X". А по окончанию данного действия (присваивания данного свойства) удаляет изменённый объект и таким образом оставляет строку без изменений. Теперь стало понятно почему так... Но новый вопрос... ЗАЧЕМ??!!! Вообще зачем примитивы оборачивать в объекты (причём скрыто)? Может у разрабов реально была причина на то... Тогда было бы очень интересно узнать для чего. Буду очень благодарен, если кто ссылочку кинет или расскажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:09 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный Мечв алерте выскочит undefined Да. Потому как не объект. Т.е. не Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:16 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
ПрограмёрНо новый вопрос... ЗАЧЕМ??!!! Дабы работали простые операции сравнения и равенства... ПрограмёрВообще зачем примитивы оборачивать в объекты (причём скрыто)? Дабы перевести их в разряд примитивов... Потому как ссылка это "первообразная единица". Т.е. то, с чего все начинается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:23 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный Мечkrvsa Код: javascript 1. 2. 3. кстати, в алерте выскочит undefined Подробности тут Вот что снова остаётся необъяснимым: Код: javascript 1. 2. 3. 4. 5. 6. 7. на выходе: "X" "e" "s" "test" Получается если индекс в строке присутствует, то отдаётся именно символ строки, но пишется в сам объект (строка неизменна остаётся). Мне видимо не понять Зачем такую неоднозначность вводить? Почему не сделать нормально (если не ошибаюсь в java такое видел... не уверен, может какой C#, давно было): строка - это строка. ПРИМИТИВ. А есть объект String (стандартный, неизменяемый). Этот объект выступает в роли интерфейса для обработки данной строки. Надо что-то в строку превратить, пиши str=String.toString(obj), надо строку в base64 (или типа того) закодировать пиши str = String.base64encode(str). Надо длину посчитать l = String.length(str). И путаницы нету, и работает не хуже (даже может лучше) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:31 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Програмёрна выходе: "X" "e" "s" "test" Получается если индекс в строке присутствует, то отдаётся именно символ строки, но пишется в сам объект (строка неизменна остаётся). Мне видимо не понять Зачем такую неоднозначность вводить?расстановка приоритетов. прежде всего учитывается содержимое строки и тот факт, что она неизменяема. а уже потом - добавление нового элемента в объект. ПрограмёрПочему не сделать нормально (если не ошибаюсь в java такое видел... не уверен, может какой C#, давно было): строка - это строка. ПРИМИТИВ. А есть объект String (стандартный, неизменяемый). Этот объект выступает в роли интерфейса для обработки данной строки. Надо что-то в строку превратить, пиши str=String.toString(obj), надо строку в base64 (или типа того) закодировать пиши str = String.base64encode(str). Надо длину посчитать l = String.length(str). И путаницы нету, и работает не хуже (даже может лучше)Общие традиции ООП. Всё что возможно, делается через "точку". str.base64encode() и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:49 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
ПрограмёрМне видимо не понять Зачем такую неоднозначность вводить? Просто не делай так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 14:55 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный МечПрограмёрПочему не сделать нормально (если не ошибаюсь в java такое видел... не уверен, может какой C#, давно было): строка - это строка. ПРИМИТИВ. А есть объект String (стандартный, неизменяемый). Этот объект выступает в роли интерфейса для обработки данной строки. Надо что-то в строку превратить, пиши str=String.toString(obj), надо строку в base64 (или типа того) закодировать пиши str = String.base64encode(str). Надо длину посчитать l = String.length(str). И путаницы нету, и работает не хуже (даже может лучше)Общие традиции ООП. Всё что возможно, делается через "точку". str.base64encode() и т.д. Не, ну тогда надо определиться с тем, является ли строка объектом или нет. Если строка - это объект, то тогда не может быть никакой передачи по значению (всё должно делаться по ссылки, а для копирования должна использоваться clone, или как там в js делается). Или же это примитив, тогда никакой "через точку" быть не должно, ведь это не объект. Вообще насколько я помню ООП никак не противоречит использованию примитивов. А статические методы как-раз и созданы для организации предложенного. Кстати, если уж так, то у js нету ничего общего с ООП. Так как один из основных принципов ООП - это наследование, а в js наследования нету. В js наследование всего лишь имитируется посредством агрегирования (prototype). Потому js не является объектно-ориентированным языком. А потому делать str.base64encode() именно из-за принципов ООП неразумно в данном языке. Вот так :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 15:14 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
ПрограмёрКстати, если уж так, то у js нету ничего общего с ООП. Так как один из основных принципов ООП - это наследование, а в js наследования нету. В js наследование всего лишь имитируется посредством агрегирования (prototype).спорное утверждение. если я правильно наследую один класс от другого, то запросто использую методы базового класса (при этом могу легко переопределить их в дочернем классе). а насчет имитации - так везде имитируется. Просто в JS это все явно, на поверхности, а в других языках скрыто внутри компилятора/интерпретатора. И по крайней мере для позднего связывания (а другого в js нет) механизмы везде примерно одинаковы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 15:44 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Сведения устаревшие. Поск конкат строк в цикле самая "нативная" для больш программистов, все ведущие движки серьезно над ней поработали. Прим год назад спец проводили исслед (сбор инфи и некот тесты), чтобы для себя закрыть этот вопрос. Вот , наприм. ну круто, что :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 16:52 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зыСведения устаревшие. Поск конкат строк в цикле самая "нативная" для больш программистов, все ведущие движки серьезно над ней поработали. Прим год назад спец проводили исслед (сбор инфи и некот тесты), чтобы для себя закрыть этот вопрос. Вот , наприм. ну круто, что :)В основном тормоза набл если рендерят в цикле - браузеру башню сносит. Но если целевой контейнер скрыть, склеить в цикле строку, потом выплюнуть в него и снова показать - быстродействие вполне адекватное. Опять же - тормоза проявл не из-за большого кол-ва строк, а из-за навешаных (как правило) всяких обработчиков и т.п. Мож проверить - вывести на страницу 100 тыс строк простого текста и 10 тыс с навешенным на клик ф-цией (напр если jQuery). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 19:32 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
пробегаллоВ основном тормоза набл если рендерят в цикле - браузеру башню сносит. Но если целевой контейнер скрыть, склеить в цикле строку, потом выплюнуть в него и снова показать - быстродействие вполне адекватное.на это случай documentFragment имеется (ясли я правильно понял о чем речь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 19:53 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Яростный МечпробегаллоВ основном тормоза набл если рендерят в цикле - браузеру башню сносит. Но если целевой контейнер скрыть, склеить в цикле строку, потом выплюнуть в него и снова показать - быстродействие вполне адекватное.на это случай documentFragment имеется (ясли я правильно понял о чем речь)Я повторюсь - примерно год назад дал орлам задание исследовать вопрос рендеринга на клиенте. По совокупности про ет контра решили не париться - конкатенция вполне устраивала по быстродействию. А с documentFragment тоже было не все шоколадно. Сейчас уже не помню. Просто был довольно вкусный проект с одним минусом - заказчик был козёл. И одно из непременных условий был вывод грида на неск тыс записей.Но я взял его: ладно, думаю - добуду, чай глухарь, а не бизон как-н решим проблему. Ну и конечно, на этом месте произошла заминка - ему как на десктопе подавай. Но, в документации, возле его хотелок (за подписью САМОГО!) были примечания как раз по быстродействию - попа прикрыта была как надо. Ну поприпирались немножко - моя победила :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2013, 20:25 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
пробегаллоНо, в документации В документации чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 10:23 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
пробегаллоПросто был довольно вкусный проект с одним минусом - заказчик был козёл. И одно из непременных условий был вывод грида на неск тыс записей.Но я взял его: ладно, думаю - добуду, чай глухарь, а не бизон как-н решим проблему. Ну и конечно, на этом месте произошла заминка - ему как на десктопе подавай. Но, в документации, возле его хотелок (за подписью САМОГО!) были примечания как раз по быстродействию - попа прикрыта была как надо. Ну поприпирались немножко - моя победила :). похоже "минус" решался не с той стороны, надо было не строки рендерить с максимально возможной скоростью, а рендерить минимально возможно строк. Быстродействие как на десктопе - не фантастика. фрагменты кстати как раз хорошо подходят для "дорисовки" грида, иначе иерархия быстро бы запутывалась, если бы приходилось "дорисовывать" в контейнеры, которые потом добавлять к документу, либо падала в 0 по производительности, если бы в документ добавлялась каждая строчка в отдельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:46 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зыпробегаллоПросто был довольно вкусный проект с одним минусом - заказчик был козёл. И одно из непременных условий был вывод грида на неск тыс записей.Но я взял его: ладно, думаю - добуду, чай глухарь, а не бизон как-н решим проблему. Ну и конечно, на этом месте произошла заминка - ему как на десктопе подавай. Но, в документации, возле его хотелок (за подписью САМОГО!) были примечания как раз по быстродействию - попа прикрыта была как надо. Ну поприпирались немножко - моя победила :). похоже "минус" решался не с той стороны, надо было не строки рендерить с максимально возможной скоростью, а рендерить минимально возможно строк. Быстродействие как на десктопе - не фантастика. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 08:58 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зы, читаем исходные условия на ктр я поставил акцент, потом выступаем. ОК? Antonariy, :) -- ПС: Разжевываю - спец условие: единоразовый вывод грида на неск тыс строк. Здесь все такие: не читают что написано, и не зная всех деталей умно рассуждают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 09:52 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
пробегаллоПС: Разжевываю - спец условие: единоразовый вывод грида на неск тыс строк.У заказчика монитор высотой несколько десятков метров? До вас не доходит очевидная вещь: вывести единоразово несколько тысяч строчек на стандартный монитор можно лишь в том случае, если высота каждой строки намного меньше пикселя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 13:19 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Налицо исполнитель, слишком буквально понимающий задание :) единоразово - вполне может означать, что он просто не хотел постраничную переключалку aka пейджинг. Клиента нужно уметь понимать, они не всегда умеют выражать свои мысли на языке программиста. p.s. что-то слово "единоразово" не узрел в первом сообщении, были условия только "вывести несколько тыщ" и "как на десктопе". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 13:40 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Ну, от тебя не ожидал троллоты - держал за адекватного. Далее дискусмя бессмысленна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 17:50 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зыНалицо исполнитель, слишком буквально понимающий задание :) единоразово - вполне может означать, что он просто не хотел постраничную переключалку aka пейджинг. Клиента нужно уметь понимать, они не всегда умеют выражать свои мысли на языке программиста. p.s. что-то слово "единоразово" не узрел в первом сообщении, были условия только "вывести несколько тыщ" и "как на десктопе". Ошибочный вывод. Налицо - идеология фрилансера. Что ты можешь знать о проблемах ПиЭма? На основании чего принимаются решения? Через меня таких как ты прошло - не счесть. Все дискуссии понты прекращаются, когда потери возмещаются за счет зарплаты рьяно выступающего. Решение о выборе технологии принимается на основании бюджета, сроков и рисков. Ребят - не трудитесь отвечать - у меня свободное время заканчивается. В ближайшую неделю смотреть некогда. Бывайте! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 18:03 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
"Как на десктопе" тоже отображается очень ограниченное количество строк - несколько десятков. Вменяемые гриды не занимаются рисованием элементов за пределом видимости, за счет этого достигается быстродействие. Тот же самый подход применим в HTML. Незачем загромождать Dom кучей элементов, которых не видно, достаточно имитировать скроллом их наличие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 20:49 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
пробегаллоНалицо - идеология фрилансера. Что ты можешь знать о проблемах ПиЭма? На основании чего принимаются решения? Через меня таких как ты прошло - не счесть. Все дискуссии понты прекращаются, когда потери возмещаются за счет зарплаты рьяно выступающего. Решение о выборе технологии принимается на основании бюджета, сроков и рисков. Ребят - не трудитесь отвечать - у меня свободное время заканчивается. В ближайшую неделю смотреть некогда. Бывайте! Похоже понты с грохотом отгрузились в штаны и уволокли пробегалло в тяжелые трудовые будни, где нужно сражаться с безмозглыми ПМ-мами, и неадекватность любой задачи демонстрировать неработающим глупокодом и уймой потраченного времени. Бывает. p.s. кстати странно задавать такие вопросы незнакомому человеку и делать никого не интересующие выводы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 00:50 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Antonariy"Как на десктопе" тоже отображается очень ограниченное количество строк - несколько десятков. Вменяемые гриды не занимаются рисованием элементов за пределом видимости, за счет этого достигается быстродействие. Тот же самый подход применим в HTML. Незачем загромождать Dom кучей элементов, которых не видно, достаточно имитировать скроллом их наличие. Вы имеете в виду грид с перелестыванием страниц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 13:03 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
GustlyВы имеете в виду грид с перелестыванием страниц? потрудитесь найти ссылку на пример в этом сообщении 14653366 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 14:09 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
зыGustlyВы имеете в виду грид с перелестыванием страниц? потрудитесь найти ссылку на пример в этом сообщении 14653366 Ну, это ему придется очень сильно потрудиться :) Она в предыдущем: 14651669 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2013, 14:36 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Очень красиво сделано, но там нету примеров, а файл Ext JS 4.2 содержит 25к строк кода после разбивки, есть какие-нибудь примеры, чтобы у себя тоже так сделать? А если более точно в APEXе, селектом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 17:22 |
|
||
|
Javascript. Ссылка на экземпляр.
|
|||
|---|---|---|---|
|
#18+
Примеров нет, но идея, как это делается, достаточно очевидна. Код: html 1. 2. 3. Берется первая строчка первого набора данных, вставляется в content, узнается ее высота. Высота умножается на кол-во записей всего набора и полученное значение прописывается в height дива content. Вот мы и получили скроллер, имитирующий высоту всего набора данных. Как на десктопе :) В onscroll берется текущая высота скролла, по ней вычисляется страница данных, вытаскивается с сервера и вставляется в content с position:absolute и top, вычисляемым относительно высоты скролла. Это в общем и целом. Еще нужно предусмотреть очистку content от далеко уехавших и невидимых записей и вычислять направление скролла, чтобы вытаскивать предыдущую или следующую страницу. Если открыть консоль сети в FF, то видно, как грид ExtJS из того примера дергает сервер, вытаскивая при смене направления сразу по 20 страниц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 17:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=22&tid=1448033]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 519ms |

| 0 / 0 |
