![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
platedz1 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Здравствуйте. Подскажите, пожалуйста.
Есть функция конструктор
Мне нужно расширить функцию функцией b1
Как это сделать? |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
это что еще значит? можно ли доопределить в функции-конструкторе дополнительные "приватные переменные"? нет, функция уже определена. можно ли в прототип созданного объекта запихнуть еще функции? да, через конструкцию a1.constructor.prototype.<имя метода> = … будет ли все это иметь смысл для одноразового конструктора-анонимной функции и объекта-синглтона, созданного ею? не думаю. |
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Спасибо за ответ. Приватные функции b1 в принципе нужны только методам функции b1. Т.е. мне нужно передать методы из b1 в a1, но чтобы в методе b1 остались рабочие приватные функции.
Соответственно доопределять в функцию a1 мне приватные функции не надо? Смысл в том, что у меня уже есть две такие функции, но одна мне нужна только на одной странице. При этом мне также использовать в ней методы из другой функции. И все это я хотел сделать через наследование, т.к. последнее время довольно много времени уделил его изучению. Это сообщение отредактировал(а) platedz1 - 12.1.2013, 12:00 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
прости, я опять не понял, в чем задача.
мое предыдущее сообщение было с посылом "не понял, что тебе надо, но на всякий случай отвечу на отдельные части сообщения, вдруг, дам нужную информацию". теперь я даже этого сделать не могу. |
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Грубо говоря нужно, чтобы выполнилось
b1.aa("--"); При этом в a1 есть приватное свойство a_privat(), которое не надо передавать в b1, и которое так и должно остаться приватным и только для методов a1, но нужно, чтобы оно выполнилось в функции потомке с методом b1.aa("--"); Добавлено через 9 минут и 34 секунды Если следовать логике, что мы не копируем методы, а только даем ссылку на метод, то задача кажется мне в принципе тем или иным образом решаемой, т.к. мы обращаемся к методам объекта в его контексте, т.е. там где ему доступны именно его приватные функции. И если я не прав, и это невозможно сделать, то хотелось бы знать почему. Буду крайне признателен за ответ. Это сообщение отредактировал(а) platedz1 - 12.1.2013, 14:26 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
Тебе надо на объекте new b1() выполнить метод аа, как будто бы он его "родной"?
|
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Спасибо за ответ, но к сожалению не сработало.
И если я правильно понимаю, то Вы передаете this через call, но при этом сразу же выполняете метод "aa" в функции "a1". Я же пытаюсь выполнить метод "aa" в функции "b1". Причем хочу это сделать за счет наследования. |
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
В принципе так например работает.
Но это не то, т.к. я не имею возможности вызвать метод aa, если он не вызывается каким-нибудь из методов b1 Это сообщение отредактировал(а) platedz1 - 12.1.2013, 21:19 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
то есть, другими словами, ты не наследуешь методы, объявленные во втором конструкторе. но так и наследование-то у тебя — где?
|
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Спасибо за ответ.
Наследования у меня нет, просто c call, по крайней мере таким способом реализовать не получится я думаю. А еще Ваш код вот так уже не работает.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
в то время, как в заголовке слово "наследование" имеется. задачу формулируешь абстрактно. пояснений нет. поди догадайся — что ты вкладываешь в "наследовать метод, не применяя наследование" потому что внутри constructor_B вместо this(у которого прототипом был бы объект new constructor_A() и который так получил бы в наследство метод a()) ты возвращаешь на лету созданный объект: return{ b : function() { alert('B'); } } у которого прототип — обычный Object, а не new constructor_A зачем ты так делаешь, для меня не ясно. то, что таким образом объект, созданный constructor_B() не наследует методы, описанные в constructor_A — вполне закономерно. |
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Большое спасибо за ответ, теперь уже несколько понятнее.
Я действительно хочу организовать связывание двух функций через наследование, а пример c call попробовал как вариант, но он не подходит как минимум тем, что привязывает (если в место call к примеру использовать bind) новую функцию к методу внутри функции, не говоря уже что там отсутствует наследование. А если я буду возвращать не вновь созданный объект, а предопределенный
То как в таком случае возможно организовать подобное насследование? |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
platedz1, Может, начать следует с того, что хочется получить?
Что есть? Как хочется писать? Что в итоге должно получится? Иначе конструируются какие-то странные конструкции со странными свойствами, из которых никак не понять зачем они нужны... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
platedz1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.1.2013 Репутация: нет Всего: нет |
Есть фукнция "a1" как описано выше.
Есть фукнция "b1", тоже как описано выше. В принципе отличие у них только в том, что "a1" обязательно должна передавать "i" Функция b1 мне нужна на одной странице только. Поэтому я хочу передать все ее методы и свойства в фукнцию "a1" Чтобы в результате выполнилось a1.bb("--"); Изучаю прототипы, поэтому хотел сделать это за счет прототипов. Это сообщение отредактировал(а) platedz1 - 13.1.2013, 21:48 |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |