Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Наследование (https://javascript.ru/forum/misc/9737-nasledovanie.html)

B~Vladi 03.06.2010 18:40

Цитата:

Сообщение от Kolyaj
Себе только, у него работать перестанет.

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

Kolyaj 03.06.2010 18:43

Цитата:

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

Ну что значит не торчало? Что изменится от того, что будет торчать?

Цитата:

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

Так не единственное. Наследование, как видишь, тоже не реализовать нормально.

Не надо привносить классовую идеологию в JavaScript, и тогда никаких проблем не будет.

Kein 03.06.2010 18:44

Методы в конструкторе создавать это да, некрасиво, а вот свойства бывает охота для красоты кода и правильности)

Kolyaj 03.06.2010 18:45

Цитата:

Сообщение от Kein
а вот свойства бывает охота для красоты кода и правильности)

А свойства и должны в конструкторе определяться, иначе они будут общими для всех объектов, порождаемых этим конструктором. Только не надо путать свойства с локальными переменными, лежащими в конструкторе.

B~Vladi 03.06.2010 20:17

Цитата:

Сообщение от Kolyaj
Ну что значит не торчало? Что изменится от того, что будет торчать?

Вот хочется мне чтобы не "торчало", что поделать? Ненужно оно там совсем.

vflash 04.06.2010 00:42

создаете обьект как свойство вашего обьекта (к примеру this._privat={}) и туда все что не должно глаза мозолить. можете сделать перекрестную ссылку на ваш обьект если будет нужно.
или как уже упоминалось obj._eee или obj['~eee']

B~Vladi 04.06.2010 02:15

Всё равно торчит.

with-love-from-siberia 04.06.2010 11:59

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;
};

vflash 04.06.2010 12:29

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

Цитата:

Сообщение от B~Vladi
Всё равно торчит.

ну и пусть торчит. проблема высосана из пальца

B~Vladi 04.06.2010 12:36

Цитата:

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

Я так и делаю.
Цитата:

Сообщение от vflash
ну и пусть торчит. проблема высосана из пальца

Это API, а не проблема.


Часовой пояс GMT +3, время: 03:19.