Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.03.2011, 13:13
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Не прототипирование
Есть у меня функция
Array.prototype.copy = function() {...}

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

Можно ли использовать такой способ.
Array.copy = function() {...}
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2011, 13:23
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от goldserg
Но таким образов пухнет объем оперативки как я понимаю.
это ваши домыслы, или есть какие-то доказательства?

Сообщение от goldserg
Можно ли использовать такой способ.
Array.copy = function() {...}
можно.
а еще можно использовать, к примеру:
copy = function() {...}

но это все три разных кода, которые выполняют разыне задачи, и по-разному же должны использоваться.
кстати, ваш второй код гораздо ближе к моему примеру, нежели к вашему первому коду.
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2011, 13:37
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Сообщение от Gvozd Посмотреть сообщение
это ваши домыслы, или есть какие-то доказательства?
Домыслы, лично не проверял, но по логике скорее всего, т.к. появляется экземпляр класса Array, и на него вешаются функции.

copy = function
Повторюсь не хочу мусорить в пространстве имен.
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2011, 14:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от goldserg
но по логике скорее всего, т.к. появляется экземпляр класса Array, и на него вешаются функции.
что-то я не вижу тут ни капли логики.
в вашем коде, вы добавляете метод в уже существующий объект Array.prototype.
память выделяется только под функцию, и выделяется один раз
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2011, 14:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от goldserg
т.к. появляется экземпляр класса Array, и на него вешаются функции.
Не вешаются. Функция одна на все экземпляры. Но даже если бы вешались, то они бы не копировались, функция всё равно была бы одна, но много ссылок на неё.
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2011, 14:26
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Объем оперативки не "пухнет" ни в том, ни в другом случае. Разница в том, что если использовать prototype, что метод copy будет у всех массивов, а если copy будет методом объекта Array, то и использовать его можно только как Array.copy. Т.е.
Array.copy1 = function(){};
Array.prototype.copy2 = function(){};

var array = [];
alert(array.copy1); // undefined
alert(Array.copy1); // copy1
alert(array.copy2); // copy2
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2011, 14:39
Аспирант
Отправить личное сообщение для goldserg Посмотреть профиль Найти все сообщения от goldserg
 
Регистрация: 08.02.2010
Сообщений: 37

Спасибо за разъяснения.
Вопрос закрыт.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск