0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
||||||
1 | ||||||
JavaScript, добавить-функцию к классу строк, используя прототип19.12.2013, 17:02. Показов 2458. Ответов 16
Метки нет (Все метки)
Помогите, пожалуйста...
Написать скрипт, в котором добавить к стандартному классу строк функцию, реализующую удаление лишних пробелов (если между словами более одного пробела - оставлять только один). Для проверки работы функции создайте страницу с двумя текстовыми полями для исходного текста и результата. Вызов скрипта осуществить по нажатию кнопки. (прим. - для добавления функции к классу строк используйте прототип)
0
|
19.12.2013, 17:02 | |
Ответы с готовыми решениями:
16
Вычислить гипотенузы используя функцию, объявить прототип Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена Мне нужно добавить canvas элемент в блок <div> используя Javascript и начать его менять Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. |
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 17:20 | 2 | |||||
Отладкой пользуетесь? Хотя бы alert() или console.log(). Сразу бы увидели, что получаете весь элемент из DOM, а не его value
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
|
19.12.2013, 17:27 [ТС] | 3 |
(прим. - для добавления функции к классу строк используйте прототип)
а что тут имеется в виду?
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 17:52 | 4 | |||||
С прототипами и наследованием в JS не знакомы?
Вкратце: у каждого объекта (а в JS практически все — объект) есть прототип - нечто вроде родителя. Например, строка. Для строк доступен метод replace. Причем, даже в виде "abc".replace('a', 'b'). Метод существует именно у прототипа типа данных String, а не у каждого конкретной строки. Он один, общий для всех, доступен каждому "потомку". Вас и просят добавить метод замены в прототип. Чтобы применять можно было к любой текстовой переменной. Написать my_text.trim_spases(), к примеру, и получить my_text без лишних пробелов Да, как использовать. К прототипу можно обратиться как String.prototype. Добавить метод - как для любого объекта, например:
1
|
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
|
||||||
19.12.2013, 17:53 | 5 | |||||
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
|||||||||||
19.12.2013, 18:08 [ТС] | 6 | ||||||||||
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 18:20 | 7 | |||||
Не совсем. Даже совсем не. Смотрите, просят расширить прототип для String. Это значит, что для любой строки нужно иметь возможность поставить после нее точку, написать имя метода и получить новые данные (смотрите мой пример. Строку, для которой вызвали функцию, можно получить в this).
Это одна задача. Вторая - эту функцию протестировать на конкретном примере. Т.е. функций должно быть две. Одна - расширение прототипа, вторая - использование для конкретной задачи.
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
||||||
19.12.2013, 18:34 [ТС] | 8 | |||||
Пытаюсь вот пока разобраться с пробелами между словами... (в задании надо лишние между)
получается пока какая-то ерунда...
Добавлено через 11 минут Получается, здесь я пишу удаление лишних пробелов, а при вызове (переменная.функция), функция, написанная как прототип,удалит в переменной, содержащей строку, лишние пробелы?
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 18:48 | 9 | |||||
Зависит от того, как написать метод. Можно редактировать this - тогда переменная изменит значение. Можно создать копию this, изменить ее и вернуть как результат работы функции.
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
|
19.12.2013, 18:59 [ТС] | 10 |
Тяжеловато мне понять это, но спасибо вам большое...
Можно еще пару вопросов? Я переменную text преобразую в массив... с помощью split()? И могу ли сравнить b[i] с пробелом таким образом, как b[i] == " "?
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 19:13 | 11 | |||||
Да, в массив, указав разделителем пробел. Если плохо понятно - откройте панель разработчика, переключитесь на консоль и введите, например
Пустые строки, видно? Не пробелы, каждый пробел распознан как разделитель между элементами
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
||||||
19.12.2013, 19:38 [ТС] | 12 | |||||
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
|
19.12.2013, 19:45 | 13 |
Можно, конечно. Просто проверять не на равенство одному пробелу, а на пустоту. Ну или сравнивать с пустой строкой. Как видно из примера выше — ни одного элемента, содержащего только пробел, точно не будет)
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
|||||||||||||||||||||
19.12.2013, 21:25 [ТС] | 14 | ||||||||||||||||||||
Спасибо большое, вроде бы разобралась
Добавлено через 40 минут
Я снова где-то ошиблась? но почему-то не воспринимается этот кусок... Добавлено через 11 минут
Добавлено через 7 минут вот... так работает
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
||||||
19.12.2013, 21:54 | 15 | |||||
Почти. Один момент я, видимо, плохо объяснил: когда мы делаем функцию общего назначения, она не должна ни от чего зависеть. Нам же все равно, откуда берется и что содержит строка, чтобы из нее удалить лишние пробелы?
Посмотрите на 3 строчку: this присваиваете конкретное значение из поля ввода. А если этого поля не будет? Метод сломается? А он должен быть универсальным. this всегда существует для метода, его не нужно откуда-то брать. Это та строка, для которой вызвали метод. Т.е. осталось перенести получение value из метода. Ну и я позволил себе внести пару изменений, все прокомментировал)
1
|
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 10
|
|
19.12.2013, 22:05 [ТС] | 16 |
Огромное вам спасибо, просто выручили, теперь хоть начала понимать!!!
0
|
Иллюзионист
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
|
|
19.12.2013, 23:36 | 17 |
Маленькая поправочка: совсем забыл, что строки - неизменяемый тип в JS, т.е. this в методе нельзя изменить. Ничего менять не нужно, просто в последнем сообщении проигнорируйте строки 10 и 11)
0
|
19.12.2013, 23:36 | |
19.12.2013, 23:36 | |
Помогаю со студенческими работами здесь
17
Назначение - конкатенация строк s1 и s2, не используя библиотечную функцию - strcat Используя подпрограмму-функцию определить в тексте количество строк заданной длины Написать функцию сравнения длин двух строк, используя указатели на них Прототип - не получается вызвать функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |