Будет создание функции в рамках использования функции конструктора больше памяти, чем ссылка на опытную функцию? [дубликат]

Возможный дубликат:
JavaScript: Устанавливая методы через объект прототипа или в конструкторе, различии?

Я предполагаю, что это - вопрос о реализации браузеров закрытий действительно. Я знаю о многочисленных способах эмулировать подобную Классу функциональность в JavaScript включая пользование различными библиотеками. Это - больше вопрос о ресурсах.

Делает создание функции этим способом, создают новую копию public_function функционируйте каждый раз, когда это называют? базовый вопрос: Делает выполнение его этот путь использование больше RAM, чем добавление функции к MyObject.prototype ?

function MyObject(){
  this.public_function = function(){
    //... do something
  }
}
1
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

Для класса, имеющего несколько экземпляров, анонимная функция, определенная в конструкторе, будет создавать новую копию функции для каждого экземпляра.

Другой способ без использования прототипа - определить статическую функцию и назначить ее члену. Например:

function A(){
    this.hello = Hello;
}

function Hello(){
    alert('hello');
}
0
ответ дан 2 September 2019 в 23:29
поделиться

Да.

По крайней мере, для этого требуется слот для каждого объекта, созданного new MyObject () , а не один слот на прототипе.

Но, конечно, есть кое-что еще: анонимная функция создает замыкание, захватывая область, в которой она определена. И снова, это должно быть сохранено для каждого объекта , созданного MyObject.

Будет ли это на самом деле иметь значение , будет зависеть от того, сколько объектов вы создаете ...

См. Также:

​​
2
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: