Где выделяется память под переменные в JS

125
21 октября 2021, 17:00

Часть кода на js по реализации связного списка. Не понятно в каком месте выделяется память под переменную node. Пытаюсь провести аналогию с C/C++. Там понятно - вот тебе выделение памяти в куче, вот тебе на стеке, c js не понятно и второй вопрос: создаем объект через new, ясно что поля объекта описываются через this как в коде ниже, но что если внутри функции LinkedList() создать что то вроде

var length = 0
var head = null
var Node = function(element){
          this.element = element; 
          this.next = null; 
      };

Все так же прекрасно работает с заменой в коде this.length на length и так же со всеми остальным,но при этом создать объект,скажем такой

var obj = {
    name: 'John',
    age: 25,
    var test
}

в которым бы фигурировала переменная var test мы не можем, а запись

var list = new LinkedList()

именно и создает нам объект с описанными полями,так что тогда происходит с

var length = 0
var head = null
var Node = ...

Так вот,где в такой случае выделиться память под length,head и Node и почему все таки это работает.

function LinkedList() {
      this.length = 0; 
      this.head = null; 
      this.Node = function(element){
          this.element = element; 
          this.next = null; 
      }; 
      this.get_size = () => this.length;
      this.get_head = () => this.head;
      this.add = function(element){
        //в каком месте выделяется память под переменную node?
        var node = new this.Node(element);
        if(this.head === null){
            this.head = node;
        } else  {
            var currentNode = this.head;
            while(currentNode.next){
                currentNode  = currentNode.next;
            }
            currentNode.next = node;
        }
        this.length++;
      }; 
...
}
var list = new LinkedList();
READ ALSO
Применить одну функцию к 3-ем разным input'ам

Применить одну функцию к 3-ем разным input'ам

Прошу вашей помощи, так как только учу JSУ меня есть функция, которая рассчитывает цену для первого товара, в зависимости от количества данного...

83
Помогите разбить сообщения по дням

Помогите разбить сообщения по дням

Пишу чат, сообщения с сервера приходят в виде JSON за вывод сообщений отвечает JSПроблема возникла с разбитием сообщений по дням вот не понимаю...

103
Перелистывает сразу по два-три блока

Перелистывает сразу по два-три блока

Лендинг с 4-я блокамиХочу что бы листать можно было только по одному, без разницы сколько прокрутишь мишкой

66
SCRIPT1002: Синтаксическая ошибка - Проблема в IE11

SCRIPT1002: Синтаксическая ошибка - Проблема в IE11

Использую на сайте готовый плагин анимации, основанный на threejs

361