|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
||||||
Паттерн для создания класса12.06.2015, 11:16. Показов 1311. Ответов 15
Метки нет (Все метки)
Поздравляю всех с праздником!
Есть функция для создания новых образцов класса. По всему должна работать, но не работает. ДЕМО Я чувствую, что где-то рядом с решением и наверняка ошибка очевидна, но не могу найти. Подскажите, пожалуйста.
0
|
||||||
| 12.06.2015, 11:16 | |
|
Ответы с готовыми решениями:
15
Посоветуйте паттерн для сверки всех объектов класса между собой Создания потомка для класса Создания класса для работы с БД |
|
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
|
|
| 14.06.2015, 00:52 | |
|
Вы разделом ошиблись, этот раздел про фреймворк Prototype.
А ваш код не должен работать, потому что он похож на копипасту отдельных строк из других кусков кода. Какая стояла задача хотя бы? Какой класс? Что должен делать?
0
|
|
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
||||||||||||||||
| 14.06.2015, 01:13 [ТС] | ||||||||||||||||
|
Прошу прощения за ошибку с разделом. Копипаст из MDN.
Задача стоит написать функцию - конструктор, которая возвращает новый объект. Так, чтобы можно было вызвать ее таким образом:
Создается пустой объект. Он наследует родителя (constructor) Возвращается объект - образец класса, населдующий свойства конструктора. Такой вариант тоже не сработал
Ошибка в этой строчке
0
|
||||||||||||||||
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||||||
| 14.06.2015, 01:31 | ||||||
1
|
||||||
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
||||||
| 14.06.2015, 01:57 [ТС] | ||||||
|
Да, спасибо. Классическое наследование я знаю, как написать. Мне API написать нужно
Про new да, согласна, спасибо.Добавлено через 12 минут Функция со stackoverflow тоже не работает
0
|
||||||
|
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
|
||
| 14.06.2015, 02:38 | ||
|
Чем вам вариант от Poznakomlus не устроил? Это не классическое наследование, это прототипное. И при чём тут вообще API?
0
|
||
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
|
| 14.06.2015, 02:53 [ТС] | |
|
Вариант Poznakomlus хороший.
Но мне нужно понять, почему не работает функция на stackoverflow. Или может, я ее не так вызываю. Если я не пойму эту функцию, то не пойму наследование в целом. Функция вроде бы рабочая, но не работает! Почему?
0
|
|
|
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
|
|
| 14.06.2015, 12:45 | |
|
Потому что у Вас нет конструктора А, определите его
0
|
|
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
||||||
| 14.06.2015, 12:53 [ТС] | ||||||
|
То есть вот этот код необходимо прописать явно?
Когда пробую сделать так, как рекомендует MDN res.prototype = Object. create(func.prototype); код тоже не работает
0
|
||||||
|
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
|
|||
| 14.06.2015, 15:32 | |||
|
Судя по Вашим вопросам, Вам нужно брать хороший учебник по JS и с самого начала изучать, а не копипастить код и спрашивать почему он не работает.
1
|
|||
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
|||||||||||
| 15.06.2015, 19:01 [ТС] | |||||||||||
|
Так в том то и дело, что я сначала написала функцию, как она должна быть, а потом удалила
У меня возник вопрос, если она и так должна работать:
NEW = function(constructor, args) { var ist = {}; ist.__proto__ = constructor.prototype; constructor.apply(ist,args); return ist; }; Вот чего я никак не пойму!!! Добавлено через 4 минуты Это был тест на знание js, думала, что весь смысл в том, чтобы избежать явного обозначения функции-конструктора.
0
|
|||||||||||
|
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
|
||
| 15.06.2015, 19:08 | ||
|
sheila, вообще довольно странная реализация, но вполне имеет право на жизнь. Хотя вроде бы доступ к свойству _proto_ запрещен или нежелателен
Разница в том, что в первом случае Во втором же случае довольно странны код, ибо в функции два return бесполезны.
1
|
||
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
|
| 15.06.2015, 21:20 [ТС] | |
|
Thisman, спасибо за ответ. Я поняла, нужно также было вызвать родителя через call или apply, чтобы унаследовать свойства. Наверное, это недостающее звено и делает функция NEW
0
|
|
|
388 / 275 / 76
Регистрация: 19.09.2011
Сообщений: 828
|
|||||||
| 16.06.2015, 09:10 | |||||||
Сообщение было отмечено sheila как решение
Решение
правильно так
1
|
|||||||
|
134 / 130 / 57
Регистрация: 29.12.2011
Сообщений: 359
|
||
| 16.06.2015, 12:04 | ||
|
Конструкторы придумывали не для того, чтобы их избегать
1
|
||
|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
|
| 16.06.2015, 12:49 [ТС] | |
|
nubideus, большое спасибо, все прояснилось теперь
0
|
|
| 16.06.2015, 12:49 | |
|
Помогаю со студенческими работами здесь
16
Классическая задача создания класса для работы со StringBuilder
Паттерн "Итератор" для шаблонного класса "Словарь" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|