|
47 / 47 / 6
Регистрация: 10.05.2012
Сообщений: 236
|
||||||
Паттерн для создания класса12.06.2015, 11:16. Показов 1304. Ответов 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
Паттерн "Итератор" для шаблонного класса "Словарь" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 17.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 14.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|