Возможный дубликат:
JavaScript: Устанавливая методы через объект прототипа или в конструкторе, различии?Я предполагаю, что это - вопрос о реализации браузеров закрытий действительно. Я знаю о многочисленных способах эмулировать подобную Классу функциональность в JavaScript включая пользование различными библиотеками. Это - больше вопрос о ресурсах.
Делает создание функции этим способом, создают новую копию
public_function
функционируйте каждый раз, когда это называют? базовый вопрос: Делает выполнение его этот путь использование больше RAM, чем добавление функции кMyObject.prototype
?function MyObject(){ this.public_function = function(){ //... do something } }
Для класса, имеющего несколько экземпляров, анонимная функция, определенная в конструкторе, будет создавать новую копию функции для каждого экземпляра.
Другой способ без использования прототипа - определить статическую функцию и назначить ее члену. Например:
function A(){
this.hello = Hello;
}
function Hello(){
alert('hello');
}
Да.
По крайней мере, для этого требуется слот для каждого объекта, созданного new MyObject ()
, а не один слот на прототипе.
Но, конечно, есть кое-что еще: анонимная функция создает замыкание, захватывая область, в которой она определена. И снова, это должно быть сохранено для каждого объекта , созданного MyObject.
Будет ли это на самом деле иметь значение , будет зависеть от того, сколько объектов вы создаете ...