Есть ли способ получить сслыку на ячейку памяти, где хранится объект?

Всем привет.

Мне интересны базовые вещи и то, как все устроено "под капотом". Если я правильно понимаю принцип хранения данных в JS, то он следующий и поправьте меня, если я не прав:

Значения примитивных типов данных ( string, number ... ) хранятся в выделенной ячейке оперативной памяти. По этой же причине

"Some text" === "Some text" // true

Но значения ссылочных типов данных ( Function, Object, Array ) хранятся не в выделенной ячейке ОП, а в ссылке на эту ячейку. Ссылка - это некий адрес, который при каждом объявлении объекта, будет уникальным. По этой причине {} === {} // false

А можно каким-то образом получить ссылку/адрес, в которой хранится объект? Т.е. физически как-то убедится в том, что существеут этот адрес? Или это только можно только низкоуровневым образом увидеть?


Ответы (1 шт):

Автор решения: Pavel Grishaev

Значения примитивных типов данных ( string, number ... ) хранятся в выделенной ячейке оперативной памяти. По этой же причине "Some text" === "Some text" // true

Равенство здесь истинно потому, что так работает оператор строгого сравнения со строками - сравнивает символы.


Ссылка - это некий адрес, который при каждом объявлении объекта, будет уникальным. По этой причине {} === {} // false

Равенство здесь ложно потому, что так работает оператор строгого сравнения с объектами - сравнивает ссылки.


В частности вот тоже литералы примитивов и равенство ложно:

NaN === NaN // false

а тут для разных значений строгое равенство истинно:

-0 === 0 // true

Но значения ссылочных типов данных ( Function, Object, Array ) хранятся не в выделенной ячейке ОП, а в ссылке на эту ячейку.

Ссылка - это адрес памяти, в ней объекты не хранятся.

Они тоже хранятся в памяти в виде определенной структуры. Но на них делается ссылка.

При копировании переменных копируется эта ссылка как примитивное значение, а объект не копируется.

Возможности получать ссылку в JS нет. Нет явного типа "ссылка". Как и применения такой ссылки, в отличие от других языков, где по ссылке можно получать какое-то значение.

→ Ссылка