Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2012, 15:19
Новичок на форуме
Отправить личное сообщение для net.me.art Посмотреть профиль Найти все сообщения от net.me.art
 
Регистрация: 04.05.2011
Сообщений: 3

extend: new() инстанциированного объекта
Как в a.instance() получить new b() ?
Цель: избавиться от кучи повторяющегося кода; вынести в instance общие инициализаторы и настройки объектов.

Пример кода (extend взят отсюда):
var a = function(){};
a.prototype.instance = function(){
    return ???
};

var b = function(){};
extend(b,a);

var c = new b();

Или в моем случае более уместным будет использование mixin ?

P.S. Рассмотрю и другие техники решающие мою задачу. Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2012, 15:37
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

если я правильно Вас понял
function construct( x, y ) {
	this.x = x;
	this.y = y;
}

construct.prototype.sum = function() {
	return this.x + this.y;
}

var obj = new construct( 1, 2 );

alert( [ obj.x, obj.y ].join( '\n' ) );
alert( obj.sum() );
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2012, 17:15
Новичок на форуме
Отправить личное сообщение для net.me.art Посмотреть профиль Найти все сообщения от net.me.art
 
Регистрация: 04.05.2011
Сообщений: 3

extend(A, B);

Меня интересует именно создание объекта A (new(A)) внутри метода объекта B. Если это вообще правильная практика, поступать так.

Немного истории

Задача стоящая перед мной - уменьшить дублирование кода. В рамках архитектуры приложения мне все равно какой паттерн используется в объекте, singleton, fabric или другой. Я обращаюсь к mod.instance() и в ответе получаю объект с которым я буду работать в стороннем коде. Но данный подход оказался беспощадным к размеру приложения (приходилось дублировать множество одинаковых методов). Разумным шагом было использование наследования.


На определенном этапе разработки встал вопрос о новом слое абстракции (наследования), в который будут вынесены такие методы, как instance().

И появилась задача, изображу ее на примере:

// Объект от которого наследуются другие
var Component = function(){};
Component.prototype.init = function(){...};
...
Component.prototype.instance = function (params){
  return ???;
  // здесь нужно вернуть new modA/modZ(params)
  // или function modA/modB со всеми его собственными методами (прототипа), что бы делать new во внешнем коде
}

// Разные наследованные объекты
// A
var modA = function(params){}
modA.prototype.superCoolFeature = function(){ /* yeahh!)) */ };
extend(modA, Component); // или mixin, или.. ?

// Z
var modZ = function(params){}
modZ.prototype.someOther = function(){ /*...*/ };
extend(modZ, Component); // или mixin, или.. ?

// Сторонний код
var myMod = modA.instance();  // A
myMod.superCoolFeature();
var otherMod = modZ.instance();  // Z
otherMod.someOther();


Фишка в том, что instance() реализует сам паттерн, будь то одиночка, фабрика или другой, а так же дополнительную работу над объектом, например, проверки/присваивания/вызовы. На выходе мне нужно получить объект mod, с методами Component для прозрачного использования в стороннем коде. Причем (!) т.к. процесс "инициализации" modA и modZ идентичен, то хочется его вынести в Component, что бы не плодить этот код в каждом объекте основанном на Component'e (а таких множество).
Все остальные повторяющиеся методы, понятно, уже в Component

Так как мне поступить?)

Последний раз редактировалось net.me.art, 14.03.2012 в 19:01.
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2012, 20:14
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Вы имеете в виду наследование из множества источников?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт вычисления координат объекта banderasantonio197555 Events/DOM/Window 4 16.08.2011 17:37
прямая от первого объекта до второго ntro123 Events/DOM/Window 5 09.05.2011 08:41
импорт объекта в текущий скоп LedVisel Общие вопросы Javascript 4 06.06.2010 00:31
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00