Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник в JavaScript.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2.82 Mб
Скачать

Методы и свойства

  1. Пример: str.length, str.toUpperCase()

  2. Пример: num.toFixed

Все значения в JavaScript, за исключением null и undefined, содержат набор вспомогательных функций и значений, доступных «через точку».

Такие функции называют «методами», а значения — «свойствами». Посмотрим на примеры.

Пример: str.Length, str.ToUpperCase()

У строки есть свойство length, содержащее длину:

   

alert( "Привет, мир!".length ); // 12

Еще у строк есть метод toUpperCase(), который возвращает строку в верхнем регистре:

   

var hello = "Привет, мир!";

 

alert( hello.toUpperCase() ); // "ПРИВЕТ, МИР!"

Если через точку вызывается функция (toUpperCase()) — это называют «вызов метода», если просто читаем значение (length) — «получение свойства».

Пример: num.ToFixed

У чисел есть метод num.toFixed(n). Он округляет число num до n знаков после запятой, при необходимости добивает нулями до данной длины и возвращает в виде строки (удобно для форматированного вывода):

   

var n = 12.345;

 

alert( n.toFixed(2) ); // "12.34"

alert( n.toFixed(0) ); // "12"

alert( n.toFixed(5) ); // "12.34500"

Детали работы toFixed разобраны в главе Числа.

Обращение к методам чисел

К методу числа можно обратиться и напрямую:

   

alert( 12.34.toFixed(1) ); // 12.3

..Но если число целое, то будет проблема:

   

alert( 12.toFixed(1) ); // ошибка!

Ошибка произойдёт потому, что JavaScript ожидает десятичную дробь после точки.

Это — особенность синтаксиса JavaScript. Вот так — будет работать:

   

alert( 12..toFixed(1) ); // 12.0

Вызов метода — через круглые скобки!

Обратите внимание, вызов метода идёт через круглые скобки. Вообще-то, можно попробовать и без них, но результат будет совсем другой.

Метод — это функция, привязанная к значению. Если обратиться к ней без скобок, то результатом будет сама функция.

Непонятно? Посмотрите, например, результат обращения к toUpperCase без скобок:

   

var hello = "Привет";

 

alert( hello.toUpperCase ); // function...

Этот код выводит значение свойства toUpperCase, которое является встроенной в язык функцией. Как правило браузер выводит его как-то так: "function toUpperCase() { [native code] }".

Для получения результата эту функцию необходимо вызвать, поэтому и обращение делается со скобками:

   

var hello = "Привет";

 

alert( hello.toUpperCase() ); // "ПРИВЕТ" (результат вызова)

Мы еще встретимся со строками и числами в последующих главах и глубже познакомимся со средствами для работы с ними.

‹ Рекурсия, стек Всё вместе: особенности JavaScript ›

15.04.2012

Илья Кантор

Alexy

toFixed очень криво работает. Пример: 5.5.toFixed(0) вернёт 6 (т.е. правильно окргуляет) 5.35.toFixed(1) вернёт 5.3(что не правильно! по правилам математики округление должно идти в большую сторону) Однако 5.3500009.toFixed(1) уже вернёт 5.4. 5.36.toFixed(1) соответственно тоже вернёт 5.4.

SennaTOR

От браузера зависит. В IE 9 выдает 5.4, в Chrome 5.3, Firefox - 5.3, Opera - 5.3.

Вадим

Видимо кто-то совсем в школе не учился)) почитай правила округления! 

Если первая из отбрасываемых цифр больше 5, то последняя из сохраняющихся цифр увеличивается на 1. Если первая из отбрасываемых цифр равна 5, а за ней следуют одна или несколько значащих цифр, то последняя из сохраняющихся цифр также увеличивается на 1.  Если первая из отбрасываемых цифр меньше 5, то последняя из сохраняемых цифр остаётся неизменной.  Если отбрасывается цифра 5, а за ней нет и никогда не было значащих цифр, то последняя из сохраняемых цифр остаётся неизменной, если она чётная, и увеличивается на 1, если она нечётная.

Alexy

 Скорее всего корни у этого от туда же, что и у примера от KpuBopy4ko в примере ниже.

KpuBopy4ko

Почему при вызове функции

alert( 12.34.toFixed(17) );  выдаст 12.3399999999999986

Max Korzilov

скорее всего это связано с внутренним представлением дробного числа в компьютере. Когда ты просишь его уточнить число до N-ого после запятой, то он перестает округлять, и выдает так, как "посчитал"

Tadevosyan

 Есть и метод toLowerCase() ,  который возвращает строку в нижнем регистре))

Hixer

А задачи? А ссылки на справочники? После рекурсии уже чего-то посерьёзнее мозг требует! :)

Александр Белец

пока отдохнуть надо людям :)

Anchak

Ошибка в коментариях ( alert( n.toFixed(2) ); // "12.34" )  там будет 12.35

George Marchenko

Наверное, Илья решил оставить это на потом, но я бы добавил этот метод сюда. toLowerCase() — осуществляет действие, обратное toUpperCase(). Просто для практики, раз уж его аналог в этом разделе описан.

Tyrgor

А у меня .toFixed(n) работает нормально и для целочисленных значений без вывода ошибки как написано. Выводит просто полученное целое число вообще без дробной части (как и положено). Тестировал в Опере и ФФ. Но тут появился вопрос: вот я поставил x.toFixed(3), а, к примеру, у меня х = 0,000000123...; т.е мне выдает 0,000. Так вот, как можно попроще прописать, чтоб при таком варианте выдавало ну хоть  0,0000001? 

Tyrgor

Хотя нет...странно...работает через раз. Точнее ошибки нет, выдает все время ответ при целых числах, но через раз - то без десятичной части, то с десятичной (с нулями после точки). 

Baranovskiy O A

И я не понял что конкретно выводит  toFixed, по мне так непонятно написано.

eee

 Округляет число до нужного количества цифр после запятой. И результат переводит в строку

например для этого var n = 0.1+0.2; alert(n); //Разница есть!alert(n.toFixed(1));