Я не буду с тобой препираться более в этой теме. Это скучно. Можешь снова считать что ты победил.
newuser1001 - 100 tsigel - 0 |
Цитата:
|
Пытаюсь ещё раз понять:
Цитата:
Цитата:
id1.onclick = null document.getElementById("id1").onclick = null Цитата:
document.getElementById("id1").onclick = null Цитата:
document.getElementById("id1").onclick = null Вот так я понимаю работу ссылок. В чём ошибка моего понимания? Цитата:
Цитата:
|
Цитата:
|
<div id="id1" onclick="Function1()">Click on me</div> <script> "use strict" var id1 = document.getElementById("id1"); id1.outerHTML = id1.outerHTML.replace('onclick="Function1()"', 'onclick="Function2()"'); alert(id1==document.getElementById("id1")); </script> |
tsigel, skrudjmakdak объясняет, что такое указатели в принципе. Я очень хорошо понимаю, что такое указатели... в Assembler и C. И не понимаю - что это такое в javascript.
В Ассемблере всё понятно: [0238A356] означает "два байта находящихся по адресам 0238A357 и 0238A356 соответственно, и именно в таком порядке". В C чуть завихренистее, но тоже ясно: pointerVariable - это адрес. *pointerVariable - то, что находится по этому адресу. А в javascript как? Если id1 - это указатель, то я бы ожидал, что "alert(id1)" выдаст результат, скажем, "030BC123". Ибо указатель - это адрес. Но в реальности мы имеем явно что-то другое. Что же именно? |
Цитата:
В С С++ указатель это базовый тип данных описанный в спецификации который хранит в себе физический адрес. Указатель javaScript больше всего похож на ссылочный тип данных в других языках т.е. имея ссылку на объект мы можем манипулировать им. В JS нет такого типа данных как указать нет линейной адресации нет адресной арифметики. Доступ к данным(адресация) в низкоуровневых языках реализуется с помощью линейно адресуемой физической памяти. в JavaScript используются высокоуровневая абстракция в виде двух древовидных структур( ![]() Каждое имя переменой или свойство объекта(что в принципе одно и то же) хранит в себе ссылку(указатель) на данные. Любые операции кроме ( = && === ) будут работать со значением полученным по этой ссылке. Присваивание для сложных типов всегда копирует ссылку на объект. Присваивание для примитивных типов создает новый объект и копирует значение полученное по ссылке. т.е. для доступа к данным (адресации) в Ассемблере используется физический адрес - "030BC123" в JavaScript имена разделенные точками - "wondow.document.body" т.е. в каком то смысле "id1" в JS это то же самое что и "030BC123" в Assembler. |
Часовой пояс GMT +3, время: 05:25. |