Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
2019-05-27 | 161 |
5.00
из
|
Заказать работу |
|
|
Послание № 4
Обертки простых типов
JavaScript позволяет работать со значениями примитивных типов как с объектами, в том смысле, что язык позволяет обращаться к их свойствам и методам.
(1.23).toFixed(1); //"1.2"
"text".toUpperCase(); //"TEXT"
true.toString(); //"true"
При этом, конечно, значения примитивных типов объектами не являются.
Для организации доступа к «свойствам» значений примитивных типов JavaScript, при необходимости, создаёт объекты-обёртки, которые, после того, как они оказываются ненужными, уничтожаются. Процесс создания и уничтожения объектов-обёрток оптимизируется JS-движком.
Объектные обёртки есть у значений числового, строкового и логического типов. Объекты соответствующих типов представлены функциями-конструкторами Number, String, и Boolean.
Самое главное отличие объектов-оберток от объектов заключается в том, что у объектов-оберток все свойства и методы доступны только для чтения, в то время как у простых объектов вы можете менять значение свойств.
Методы по работе с числами
ToFixed()
JavaScript метод toFixed() форматирует числовое значение в строковое, сохраняя при этом указанное количество цифр после запятой.
Обратите Ваше внимание на то, что метод toFixed() в том случае, если указанное число десятичных знаков превышает фактическое число, добавляет для достижения требуемой десятичной длины нулевые значения.
var num = 12345.6789; // инициализируем числовую переменную
num.toFixed(); // возвращаемое значение "12346"
num.toFixed(3); // возвращаемое значение "12345.679"
num.toFixed(2); // возвращаемое значение "12345.68"
num.toFixed(10); // возвращаемое значение "12345.6789000000"
num.toFixed(-1); // RangeError
num.toFixed(101); // RangeError
ToPrecision()
JavaScript метод toPrecision() возвращает строку определенной длины, представляющую число (объект Number) в записи с фиксированной запятой, или в экспоненциальной форме записи, округленное до точных значащих цифр.
|
var num = 12345.6789; // инициализируем числовую переменную
num.toPrecision(); // возвращаемое значение "12345.6789"
num.toPrecision(3); // возвращаемое значение "1.23e+4"
num.toPrecision(10); // возвращаемое значение "12345.67890"
num.toPrecision(9); // возвращаемое значение "12345.6789"
num.toPrecision(7); // возвращаемое значение "12345.68"
num.toPrecision(5); // возвращаемое значение "12346"
num.toPrecision(-1); // RangeError
num.toPrecision(101); // RangeError
Методы и свойства по работе со строками
Длина length
Одно из самых частых действий со строкой – это получение ее длины:
var str = "Man"; // 3 символа.
alert(str.length); // 3
Доступ к символам
Чтобы получить символ, используйте вызов charAt(позиция).
Первый символ имеет позицию 0:
var str = "jQuery";
alert(str.charAt(0)); // "j"
Также для доступа к символу можно использовать квадратные скобки:
var str = "Я - современный браузер!";
alert(str[0]); // "Я"
Разница между этим способом и charAt заключается в том, что если символа нет – charAt выдает пустую строку, а скобки – undefined:
alert("".charAt(0)); // пустая строка
alert("" [0]); // undefined
Вообще же метод charAt существует по историческим причинам, ведь квадратные скобки – проще и короче.
Обратите внимание, str.length – это свойство строки, а str.charAt(pos) – метод, т.е. функция.
Важно!
Обращение к методу всегда идет со скобками, а к свойству – без скобок.
Изменения строк
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.
Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:
var str = "строка";
str = str[3] + str[4] + str[5];
alert(str); // ока
Смена регистра
Методы toLowerCase() и toUpperCase() меняют регистр строки на нижний/верхний:
alert("Интерфейс".toUpperCase()); // ИНТЕРФЕЙС
Пример ниже получает первый символ и приводит его к нижнему регистру:
|
alert("Интерфейс" [0].toLowerCase()); // 'и'
Поиск подстроки
Для поиска подстроки есть метод indexOf(подстрока[, начальная_позиция]).
Он возвращает позицию, на которой находится подстрока или -1, если ничего не найдено. Например:
var str = "Widget with id";
alert(str.indexOf("Widget")); // 0, т.к. "Widget" найден прямо в начале str
alert(str.indexOf("id")); // 1, т.к. "id" найден, начиная с позиции 1
alert(str.indexOf("widget")); // -1, не найдено, так как поиск учитывает регистр
Необязательный второй аргумент позволяет искать, начиная с указанной позиции. Например, первый раз "id" появляется на позиции 1. Чтобы найти его следующее появление – запустим поиск с позиции 2:
var str = "Widget with id";
alert(str.indexOf("id", 2)) // 12, поиск начат с позиции 2
Также существует аналогичный метод lastIndexOf(), который ищет не с начала, а с конца строки.
Substr(start,number)
Первый аргумент имеет такой же смысл, как и в substring, а второй содержит не конечную позицию, а количество символов.
var str = "stringify";
str = str.substr(2,4); // ring, со 2-й позиции 4 символа
alert(str)
Если второго аргумента нет – подразумевается «до конца строки».
slice(start, end)
Возвращает часть строки от позиции start до, но не включая, позиции end. Смысл параметров – такой же как в substring.
Отрицательные аргументы
Различие между substring и slice – в том, как они работают с отрицательными и выходящими за границу строки аргументами:
Substring
Отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки:
alert("testme".substring(-2)); // "testme", -2 становится 0
Кроме того, если start > end, то аргументы меняются местами, т.е. возвращается участок строки между start и end:
alert("testme".substring(4, -1)); // "test"
// -1 становится 0 -> получили substring(4, 0)
// 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test"
Slice
Отрицательные значения отсчитываются от конца строки:
alert("testme".slice(-2)); // "me", от 2 позиции с конца
alert("testme".slice(1, -1)); // "estm", от 1 позиции до первой с конца.
Это гораздо более удобно, чем странная логика substring.
Отрицательное значение первого параметра поддерживается в substr во всех браузерах, кроме IE8-.
Если выбирать из этих трёх методов один, для использования в большинстве ситуаций – то это будет slice: он и отрицательные аргументы поддерживает и работает наиболее очевидно.
|
Специальные символы
Строки могут содержать специальные символы, которые позволяют форматировать текст прямо из кода.
Самый часто используемый из таких символов – это «перевод строки».
Он обозначается как \n, например:
alert('Привет\nМир'); // выведет "Мир" на новой строке
Есть и более редкие символы, вот их список:
Специальные символы
Сравнение строк
Строки сравниваются побуквенно:
alert('Б' > 'А'); // true
Осторожно, Unicode!
Аналогом «алфавита» во внутреннем представлении строк служит кодировка, у каждого символа – свой номер (код). JavaScript использует кодировку Unicode.
При этом сравниваются численные коды символов. В частности, код у символа Б больше, чем у А, поэтому и результат сравнения такой.
В кодировке Unicode обычно код у строчной буквы больше, чем у прописной.
Поэтому регистр имеет значение:
alert('а' > 'Я'); // true, строчные буквы больше прописных
Для корректного сравнения символы должны быть в одинаковом регистре.
Если строка состоит из нескольких букв, то сравнение осуществляется как в телефонной книжке или в словаре. Сначала сравниваются первые буквы, потом вторые, и так далее, пока одна не будет больше другой.
Иными словами, больше – та строка, которая в телефонной книге была бы на большей странице.
Например:
Если первая буква первой строки больше – значит первая строка больше, независимо от остальных символов:
alert('Банан' > 'Анна');
Если одинаковы – сравнение идёт дальше. Здесь оно дойдёт до третьей буквы:
alert('Вася' > 'Ваня'); // true, т.к. 'с' > 'н'
При этом любая буква больше отсутствия буквы:
alert('Привет' > 'Прив'); // true, так как 'е' больше чем "ничего".
Такое сравнение называется лексикографическим.
Важно!
Обычно Важно!
мы получаем значения от посетителя в виде строк. Например, prompt возвращает строку, которую ввел посетитель.
Числа, полученные таким образом, в виде строк сравнивать нельзя, результат будет неверен. Например:
alert("2" > "14"); // true, неверно, ведь 2 не больше 14
|
В примере выше 2 оказалось больше 14, потому что строки сравниваются посимвольно, а первый символ '2'больше '1'.
Правильно было бы преобразовать их к числу явным образом. Например, поставив перед ними +:
alert(+"2" > +"14"); // false, теперь правильно
Сравнение разных типов
При сравнении значений разных типов, используется числовое преобразование. Оно применяется к обоим значениям.
Например:
alert('2' > 1); // true, сравнивается как 2 > 1
alert('01' == 1); // true, сравнивается как 1 == 1
alert(false == 0); // true, false становится числом 0
alert(true == 1); // true, так как true становится числом 1.
Строгое равенство
В обычном операторе == есть «проблема» – он не может отличить 0 от false:
alert(0 == false); // true
Та же ситуация с пустой строкой:
alert('' == false); // true
Это естественное следствие того, что операнды разных типов преобразовались к числу. Пустая строка, как и false, при преобразовании к числу дают 0.
Для проверки равенства без преобразования типов используются операторы строгого равенства === (тройное равно) и!==.
Если тип разный, то они всегда возвращают false:
alert(0 === false); // false, т.к. типы различны
Строгое сравнение предпочтительно, если мы хотим быть уверены, что «сюрпризов» не будет.
Несравнимый undefined
Значение undefined вообще нельзя сравнивать:
alert(undefined > 0); // false (1)
alert(undefined < 0); // false (2)
alert(undefined == 0); // false (3)
Сравнения (1) и (2) дают false потому, что undefined при преобразовании к числу даёт NaN. А значение NaNпо стандарту устроено так, что сравнения ==, <, >, <=, >= и даже === с ним возвращают false.
Проверка равенства (3) даёт false, потому что в стандарте явно прописано, что undefined равно лишь null или себе и ничему другому.
Вывод: любые сравнения с undefined/null, кроме точного ===, следует делать с осторожностью.
Желательно не использовать сравнения >= > < <= с ними, во избежание ошибок в коде.
Послание № 4
Обертки простых типов
JavaScript позволяет работать со значениями примитивных типов как с объектами, в том смысле, что язык позволяет обращаться к их свойствам и методам.
(1.23).toFixed(1); //"1.2"
"text".toUpperCase(); //"TEXT"
true.toString(); //"true"
При этом, конечно, значения примитивных типов объектами не являются.
Для организации доступа к «свойствам» значений примитивных типов JavaScript, при необходимости, создаёт объекты-обёртки, которые, после того, как они оказываются ненужными, уничтожаются. Процесс создания и уничтожения объектов-обёрток оптимизируется JS-движком.
Объектные обёртки есть у значений числового, строкового и логического типов. Объекты соответствующих типов представлены функциями-конструкторами Number, String, и Boolean.
Самое главное отличие объектов-оберток от объектов заключается в том, что у объектов-оберток все свойства и методы доступны только для чтения, в то время как у простых объектов вы можете менять значение свойств.
|
Методы по работе с числами
ToFixed()
JavaScript метод toFixed() форматирует числовое значение в строковое, сохраняя при этом указанное количество цифр после запятой.
Обратите Ваше внимание на то, что метод toFixed() в том случае, если указанное число десятичных знаков превышает фактическое число, добавляет для достижения требуемой десятичной длины нулевые значения.
var num = 12345.6789; // инициализируем числовую переменную
num.toFixed(); // возвращаемое значение "12346"
num.toFixed(3); // возвращаемое значение "12345.679"
num.toFixed(2); // возвращаемое значение "12345.68"
num.toFixed(10); // возвращаемое значение "12345.6789000000"
num.toFixed(-1); // RangeError
num.toFixed(101); // RangeError
ToPrecision()
JavaScript метод toPrecision() возвращает строку определенной длины, представляющую число (объект Number) в записи с фиксированной запятой, или в экспоненциальной форме записи, округленное до точных значащих цифр.
var num = 12345.6789; // инициализируем числовую переменную
num.toPrecision(); // возвращаемое значение "12345.6789"
num.toPrecision(3); // возвращаемое значение "1.23e+4"
num.toPrecision(10); // возвращаемое значение "12345.67890"
num.toPrecision(9); // возвращаемое значение "12345.6789"
num.toPrecision(7); // возвращаемое значение "12345.68"
num.toPrecision(5); // возвращаемое значение "12346"
num.toPrecision(-1); // RangeError
num.toPrecision(101); // RangeError
Методы и свойства по работе со строками
Длина length
Одно из самых частых действий со строкой – это получение ее длины:
var str = "Man"; // 3 символа.
alert(str.length); // 3
Доступ к символам
Чтобы получить символ, используйте вызов charAt(позиция).
Первый символ имеет позицию 0:
var str = "jQuery";
alert(str.charAt(0)); // "j"
Также для доступа к символу можно использовать квадратные скобки:
var str = "Я - современный браузер!";
alert(str[0]); // "Я"
Разница между этим способом и charAt заключается в том, что если символа нет – charAt выдает пустую строку, а скобки – undefined:
alert("".charAt(0)); // пустая строка
alert("" [0]); // undefined
Вообще же метод charAt существует по историческим причинам, ведь квадратные скобки – проще и короче.
Обратите внимание, str.length – это свойство строки, а str.charAt(pos) – метод, т.е. функция.
Важно!
Обращение к методу всегда идет со скобками, а к свойству – без скобок.
Изменения строк
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана – она такая навсегда.
Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:
var str = "строка";
str = str[3] + str[4] + str[5];
alert(str); // ока
Смена регистра
Методы toLowerCase() и toUpperCase() меняют регистр строки на нижний/верхний:
alert("Интерфейс".toUpperCase()); // ИНТЕРФЕЙС
Пример ниже получает первый символ и приводит его к нижнему регистру:
alert("Интерфейс" [0].toLowerCase()); // 'и'
Поиск подстроки
Для поиска подстроки есть метод indexOf(подстрока[, начальная_позиция]).
Он возвращает позицию, на которой находится подстрока или -1, если ничего не найдено. Например:
var str = "Widget with id";
alert(str.indexOf("Widget")); // 0, т.к. "Widget" найден прямо в начале str
alert(str.indexOf("id")); // 1, т.к. "id" найден, начиная с позиции 1
alert(str.indexOf("widget")); // -1, не найдено, так как поиск учитывает регистр
Необязательный второй аргумент позволяет искать, начиная с указанной позиции. Например, первый раз "id" появляется на позиции 1. Чтобы найти его следующее появление – запустим поиск с позиции 2:
var str = "Widget with id";
alert(str.indexOf("id", 2)) // 12, поиск начат с позиции 2
Также существует аналогичный метод lastIndexOf(), который ищет не с начала, а с конца строки.
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!