Есть ли способ получить сслыку на ячейку памяти, где хранится объект?
Всем привет.
Мне интересны базовые вещи и то, как все устроено "под капотом". Если я правильно понимаю принцип хранения данных в JS, то он следующий и поправьте меня, если я не прав:
Значения примитивных типов данных ( string, number ... ) хранятся в выделенной ячейке оперативной памяти. По этой же причине
"Some text" === "Some text" // true
Но значения ссылочных типов данных ( Function, Object, Array ) хранятся не в выделенной ячейке ОП, а в ссылке на эту ячейку. Ссылка - это некий адрес, который при каждом объявлении объекта, будет уникальным.
По этой причине {} === {} // false
А можно каким-то образом получить ссылку/адрес, в которой хранится объект? Т.е. физически как-то убедится в том, что существеут этот адрес? Или это только можно только низкоуровневым образом увидеть?
Ответы (1 шт):
Значения примитивных типов данных ( string, number ... ) хранятся в выделенной ячейке оперативной памяти. По этой же причине
"Some text" === "Some text" // true
Равенство здесь истинно потому, что так работает оператор строгого сравнения со строками - сравнивает символы.
Ссылка - это некий адрес, который при каждом объявлении объекта, будет уникальным. По этой причине
{} === {} // false
Равенство здесь ложно потому, что так работает оператор строгого сравнения с объектами - сравнивает ссылки.
В частности вот тоже литералы примитивов и равенство ложно:
NaN === NaN // false
а тут для разных значений строгое равенство истинно:
-0 === 0 // true
Но значения ссылочных типов данных ( Function, Object, Array ) хранятся не в выделенной ячейке ОП, а в ссылке на эту ячейку.
Ссылка - это адрес памяти, в ней объекты не хранятся.
Они тоже хранятся в памяти в виде определенной структуры. Но на них делается ссылка.
При копировании переменных копируется эта ссылка как примитивное значение, а объект не копируется.
Возможности получать ссылку в JS нет. Нет явного типа "ссылка". Как и применения такой ссылки, в отличие от других языков, где по ссылке можно получать какое-то значение.