Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.06.2010, 18:40
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Себе только, у него работать перестанет.
Это понятно. Просто иногда хочется сделать такое апи, чтобы ничего лишнего не торчало. Да, прототипы это хорошо, но иногда этого мало. Я согласен с тем, что для объектов дублирование методов есть большое зло. Как вариант, можно создать локальный объект, который будет хранить нужную инфу для каждого объекта, там самым мы сможем использовать прототипы.
Ответить с цитированием
  #12 (permalink)  
Старый 03.06.2010, 18:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B~Vladi
Просто иногда хочется сделать такое апи, чтобы ничего лишнего не торчало.
Ну что значит не торчало? Что изменится от того, что будет торчать?

Сообщение от B~Vladi
что для объектов дублирование методов есть большое зло
Так не единственное. Наследование, как видишь, тоже не реализовать нормально.

Не надо привносить классовую идеологию в JavaScript, и тогда никаких проблем не будет.
Ответить с цитированием
  #13 (permalink)  
Старый 03.06.2010, 18:44
Аспирант
Отправить личное сообщение для Kein Посмотреть профиль Найти все сообщения от Kein
 
Регистрация: 11.01.2010
Сообщений: 32

Методы в конструкторе создавать это да, некрасиво, а вот свойства бывает охота для красоты кода и правильности)
Ответить с цитированием
  #14 (permalink)  
Старый 03.06.2010, 18:45
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Kein
а вот свойства бывает охота для красоты кода и правильности)
А свойства и должны в конструкторе определяться, иначе они будут общими для всех объектов, порождаемых этим конструктором. Только не надо путать свойства с локальными переменными, лежащими в конструкторе.
Ответить с цитированием
  #15 (permalink)  
Старый 03.06.2010, 20:17
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Ну что значит не торчало? Что изменится от того, что будет торчать?
Вот хочется мне чтобы не "торчало", что поделать? Ненужно оно там совсем.
Ответить с цитированием
  #16 (permalink)  
Старый 04.06.2010, 00:42
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 09.07.2007
Сообщений: 304

создаете обьект как свойство вашего обьекта (к примеру this._privat={}) и туда все что не должно глаза мозолить. можете сделать перекрестную ссылку на ваш обьект если будет нужно.
или как уже упоминалось obj._eee или obj['~eee']
Ответить с цитированием
  #17 (permalink)  
Старый 04.06.2010, 02:15
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Всё равно торчит.
Ответить с цитированием
  #18 (permalink)  
Старый 04.06.2010, 11:59
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

B~Vladi,
Можно создавать в конструкторе единственный метод, который будет возвращать ссылку на приватные свойства. По сути - тоже самое, что предлагает vflash, но свойства не торчат. Вернее торчит один единственный метод, который имеет доступ к приватным свойствам.
function MyClass()
{
	var self = this;

	var privates = {};

	self.getPrivates = function()
	{
		return privates;
	};
};

MyClass.prototype.setX = function(x)
{
	return this.getPrivates().x = x;
};

MyClass.prototype.getX = function()
{
	return this.getPrivates().x;
};
Ответить с цитированием
  #19 (permalink)  
Старый 04.06.2010, 12:29
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 09.07.2007
Сообщений: 304

и какой толк в функции getPrivates , тоже самое что и прямая ссылка на объект только еще хуже из за лишних телодвижений.

Сообщение от B~Vladi
Всё равно торчит.
ну и пусть торчит. проблема высосана из пальца
Ответить с цитированием
  #20 (permalink)  
Старый 04.06.2010, 12:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от with-love-from-siberia
Можно создавать в конструкторе единственный метод, который будет возвращать ссылку на приватные свойства. По сути - тоже самое, что предлагает vflash, но свойства не торчат. Вернее торчит один единственный метод, который имеет доступ к приватным свойствам.
Я так и делаю.
Сообщение от vflash
ну и пусть торчит. проблема высосана из пальца
Это API, а не проблема.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование - миф или реальность?! B~Vladi Оффтопик 109 04.09.2012 16:13
Наследование класса-замыкания и вызов метода предка BobiKK Общие вопросы Javascript 2 21.03.2010 13:26
Наследование Fliand Events/DOM/Window 0 12.08.2009 20:48
Наследование в CSS SunnyDay (X)HTML/CSS 14 06.10.2008 20:06
наследование установок динамически создаваемыми элементами majestic jQuery 1 15.09.2008 13:21