Методы объекта Math
В отличие от других объектов этот объект создавать не надо - он создается интерпретатором автоматически при загрузке документа со сценарием в браузер. Поэтому обращение к его методам и свойства выполняются с использованием его имени Math:
Math.PI // число πMath.abs(x) // вычисление абсолютного значенияОбъект Math
Метод | Описание |
abs(x) | Абсолютное значение |
sin(x), cos(x), tan(x) | Стандартные тригонометрические функции; аргумент задается в радианах |
acos(x), asin(x), atan(x) | Обратные тригонометрические функции |
exp(x), log(x) | Экспоненциальная функция и функция натурального логарифма |
ceil(x) | Наименьшее целое, большее или равное значению аргумента |
floor(x) | Наибольшее целое, меньшее или равное значению аргумента |
min(x,y), max(x,y) | Наибольшее или наименьшее значение двух аргументов |
pow(x,y) | Показательная функция: pow(x,y) = xy |
round(x) | Округление аргумента до ближайшего целого |
sqrt(x) | Квадратный корень |
atan2(y,x) | Возвращает угол в радианах между осью Х и направлением на точку (х, у) |
random() | Возвращает случайное число между 0 и 1. Генератор случайных чисел запускается автоматически при загрузке ядра JavaScript |
Свойства объекта Math
Свойство | Описание |
E | Возвращает постоянную Эйлера e - основание натурального логарифма. |
LN2 | Возвращает натуральный логарифм числа 2. |
LN10 | Возвращает натуральный логарифм числа 10. |
LOG2E | Возвращает логарифм по основанию 2 постоянной Эйлера e. |
LOG10E | Возвращает логарифм по основанию 10 постоянной Эйлера e. |
PI | Число π. |
SQRT1_2 | Возвращает квадратный корень из 0.5. |
SQRT2 | Возвращает квадратный корень из 2. |
Объект String
Когда переменной присваивается строковый литерал, она становится строковой переменной. На самом деле JavaScript создает встроенный объект String. Таким образом, любая строковая переменная или строковый литерал является объектом String, к которому могут быть применены все методы этого объекта.
Хотя обычно в сценарии строка создается присваиванием переменной строкового литерала (а в этом случае создается и объект String), в JavaScript предусмотрен конструктор для этого типа объекта:
имя_объекта = new String(строка);Параметром конструктора является строковый литерал или переменная:
myString = new String("Строка");a = 2.67;myNumber = new String(a); // myNumber = "2.67"Объект String имеет единственное свойство length, хранящее длину строки, содержащейся в строковом объекте, т. е. количество символов в строке.
И "Строка".length, и myString.length возвращают одинаковые значения 6, равные в первом случае длине строкового литерала, а во втором случае длине строки, содержащейся в строковом объекте.
Объект String имеет два типа методов: первые возвращают отформатированный HTML-вариант строки, а вторые выполняют некоторые действия над содержимым строки.
Методы, возвращающие HTML-отформатированные варианты строк, возвращают строки, заключенные в открывающий и закрывающий теги определяемого методом элемента HTML. Например, следующий оператор вставляет в страницу HTML гиперсвязь с ресурсом, расположенным по адресу, задаваемому параметром метода link строки:
document.write(s.link("http://www.altavista.com"));В документе отобразится содержимое строкового объекта s, представленное как гиперссылка на ресурс, заданный параметром метода.
Методы объекта String anchor(name) | Возвращает строку, заключенную в теги HTML <A> и </A>, и устанавливает атрибут name элемента A равным значению параметра name. |
big() | Возвращает строку, заключенную в теги HTML <BIG> и </BIG>. |
blink() | Возвращает строку, заключенную в теги HTML <BLINK> и </BLINK>. |
bold() | Возвращает строку, заключенную в теги HTML <B> и </B>. |
fixed() | Возвращает строку, заключенную в теги HTML <TT> и </TT>. |
fontcolor(colorValue) | Возвращает строку, заключенную в теги HTML <FONT> и </FONT>, и устанавливает атрибут COLOR этого тега равным значению параметра colorValue. |
fontSize(sizeValue) | Возвращает строку, заключенную в теги HTML <FONT> и </FONT>, и устанавливает атрибут SIZE равным значению параметра sizeValue. |
italics() | Возвращает строку, заключенную в теги HTML <I> и </I>. |
link(href) | Возвращает строку, заключенную в теги HTML <A> и </A>, и устанавливает атрибут HREF элемента A равным значению параметра href. |
small() | Возвращает строку, заключенную в теги HTML <SMALL> и </SMALL>. |
strike() | Возвращает строку, заключенную в теги HTML <STRIKE> и </STRIKE>. |
sub() | Возвращает строку, заключенную в теги HTML <sub> и </sub>. |
sup() | Возвращает строку, заключенную в теги HTML <sup> и </sup>. |
charAt(index) | Возвращает символ, находящийся на указанном месте (с индексом равным index) в строке. Индексы начинаются с 0. |
charCodeAt(index) | Возвращает код символа (Unicode), расположенного на указанном месте (с индексом равным index) в строке. Если в строке нет символа с указанным индексом, возвращается значение NaN. Индексы в строке начинаются с 0. |
concat(string2) | Возвращает строку, представляющую собой результат объединения двух строк. |
String.fromCharCode( char1, char2, ... ) | Возвращает строку, составленную из указанных символов, заданных кодом Unicode. Количество параметров не ограничено. |
indexOf(substring, startindex) | Возвращает целое число - позицию первого вхождения подстроки substring в строку, начиная с позиции startindex. Если такой подстроки не найдено, возвращает -1. |
lastIndexOf(substring, startindex) | Возвращает целое число - позицию последнего вхождения подстроки substring в строку, начиная с позиции startindex. Если такой подстроки не найдено, возвращает -1. |
localCompare(string) | Сравнение строк в соответствии с локальными языковыми установками: -1 строка раньше параметра, 1 наоборот и 0 строки равны. |
match(regExpression) | Возвращает массив, состоящий из символов, соответствующих регулярному выражению regExpression. |
replace(regExpr,replaceString) | Возвращает строку, в которой фрагменты исходной строки, соответствующие образцу регулярного выражения regExpression, заменены на строку replaceString. |
search(regExpression) | Возвращает позицию первой подстроки, соответствующей регулярному выражению. Если такая строка не найдена, то возвращает -1. |
slice(start[, end]) | Возвращает часть строки, начиная с позиции start и заканчивая позицией end. Если аргумент end отсутствует, то возвращается строка от start до самого конца. |
split(separator) | Возвращает массив строк, созданный из подстрок, разделенных разделителем separator. Разделитель также может являться регулярным выражением. |
substr(start[,length]) | Возвращает подстроку данной строки, которая начинается с символа в позиции start и имеет указанную длину length. Если длина не указана, то возвращается вся строка, начиная с позиции start. Если позиция символа превосходит число символов в строке, то возвращается пустая строка. |
substring(start, end) | Возвращает подстроку данной строки, заданной начальной и конечной позициями. Наименьшее из двух заданных значений используется в качестве начальной позиции выделяемой подстроки. Если начальная позиция превосходит число символов в строке, то возвращается пустая строка. |
toLowerCase() | Возвращает строку, в которой все буквенные символы преобразованы в строчные. |
toUpperCase() | Возвращает строку, в которой все буквенные символы преобразованы в прописные. |
toString() | Преобразует объект в строку. |
Объект Function
Любая функция в JavaScript является объектом типа Function. Создать функцию можно не только конструкцией function, но и с помощью конструктора Function:
var имя_функции = new Function([argname1, [... argnameN,]] тело_функции)Все параметры являются строками. Сначала определяется список формальных параметров, а потом строка, содержащая операторы тела функции.
Пример задания функции с одним числовым параметром, возвращающей произведение этого числа на число ?:
var nPI = new Function("n","if(typeof n != 'number'){l=null}else{l= n*Math.PI};return l;");// вызов объявленной функции nPInPI(56);В JavaScript часто используется тот факт, что функция является объектом. Если вспомнить вызов метода сортировки массива, то, по-существу, параметром в нем является ссылка на функцию. Так что избегайте записывать вызов функции (или метода объекта) без круглых скобок. В JavaScript запись "вызова" функции без круглых скобок не является синтаксической ошибкой, но всего лишь ссылка на объект Function, которая часто используется для задания функции обработки событий объектов, соответствующих элементам HTML отображаемого в браузере документа.
Свойства объекта Function аrguments | Объект, хранящий переданные в функцию фактические параметры. Он не является массивом, но доступ к хранящимся в нем фактическим параметрам осуществляется как к элементу массива с использованием целочисленного индекса, который изменяется от нуля и далее. |
caller | Возвращает ссылку на объект Function, представляющий функцию, вызвавшую исходную. Если свойство имеет значение null, то функция вызвана из верхнего уровня сценария, а не из другой функции. |
callee | Возвращает ссылку на саму себя. Является свойством объекта arguments функции, а не самой функции. |
length | Возвращает количество обязательных параметров, которые следует передавать в функцию при ее вызове, т. е. тех параметров, которые определены в объявлении функции. |
Все свойства объекта Function становятся доступными только тогда, когда функция, определяемая этим объектом, выполняется. Поэтому доступ к ним возможен только из тела функции.
Следующая функция проверяет количество переданных в нее при вызове фактических параметров и возвращает строку, содержащую требуемое количество обязательных параметров и количество фактически параметров было в нее передано.
function ArgTest(a, b){ var i, s = "Обязательных параметров "; var numargs = ArgTest.arguments.length; var expargs = ArgTest.length; s += expargs + ". Передано " + numargs + "."; return(s);}Объект Boolean
Является объектным интерфейсом для типа данных Boolean. Создается неявным образом, когда булевый тип преобразуется к объекту, но может быть создан явно с помощью конструктора Boolean():
var b = new Boolean([параметр]);В случае отсутствия параметра, или если он равен 0, NaN, false, null или пустой строке "", значение объекта есть ложь, иначе истина.
Объект Boolean используется достаточно редко.
Объект Number
Является объектным интерфейсом для числового типа данных. Создается неявным образом, когда числовой тип преобразуется к объекту, но может быть создан явно с помощью конструктора Number():
var b = new Number(числовое_значение);NaN | Специальное числовое значение, указывающее на то, что вычисление арифметического выражения не привело к числовому результату. |
MAX_VALUE, MIN_VALUE | Максимальное число и минимальное число, представимые в JavaScript. |
POSITIVE_INFINITY, NEGATIVE_INFINITY | Положительная и отрицательная бесконечность (бесконечно большие числа). |
Для получения значения указанных свойств не надо создавать объекта Number, а непосредственно обращаться к имени конструктора объекта (аналоги свойств класса в языках С++ и Java):
Number.NaNNumber.MAX_VALUEМетоды объекта Number toExponential(точность) | Возвращает строку, представляющую экспоненциальную форму числа с заданным количеством цифр в дробной части. |
toFixed(точность) | Возвращает строку, представляющую число в форме с фиксированной точкой с заданным количеством цифр в дробной части. |
toPrecision(точность) | Возвращает строку, представляющую число в форме с фиксированной точкой с заданным количеством цифр мантиссе. |
Число 1760/7, хранящееся в переменной a, методом
a.toExponential(10) преобразуется в строку 2.5142857143e+2a.toFixed(10) преобразуется в строку 251.4285714286a.toPrecision(10) преобразуется в строку 251.4285714Объект Number используется достаточно редко.
Упражнение 1. |
Стек - динамическая структура, строящаяся по принципу "последним пришел первым ушел". Ее можно сравнить со стопкой тарелок - чтобы взять нижнюю тарелку (она была самой первой тарелкой в растущей стопке), следует поочередно снять все позже поставленные тарелки. Самая последняя добавленная в стопку тарелку в то же время является и самой первой, до которой возможен доступ. Реализуйте стек с помощью массива JavaScript, написав четыре функции - создание стека, помещение в него элемента, извлечение последнего добавленного элемента и извлечение к-ого элемента стека. Реализовать два варианта - стек "растет" от конца массива (первый элемент стека хранится в первом элементе массива) и стек "растет" от начала массива (первый элемент стека хранится в последнем элементе массива). |
Упражнение 2. | |
Отсортировать массив, хранящий строковые значения, по возрастанию количества символов в элементах. Элементы, содержащие строки с одинаковым числом символов сортировать в лексикографическом (алфавитном) порядке. Сделать то же самое, но по убыванию, причем элементы со строками одинаковой длины сортировать в обратном лексикографическом порядке. |
Упражнение 3. | |
Для трехмерного массива разработать функцию получения его произвольных сечений (двумерных и одномерных). Под сечением многомерного массива понимается массив меньшей размерности, являющейся подструктурой исходного. Например, в двумерном массиве можно выделить одномерные подструктуры строк и столбцов, в трехмерном двумерные плоскости и одномерные строки. |
Упражнение 4. | ||||||||||||||||||||||||||||||||||||||||||||
Отобразить на странице HTML календарь на текущий месяц в виде следующей таблицы:
|
Упражнение 5. | |
Разработать функцию, подсчитывающую количество вхождений подстроки в заданную строку. Например, подстрока "qr" входит два раза в строку "qrqqr", а подстрока "q" три раза. Для ввода строки и подстроки использовать однострочное текстовое поле формы; для вывода количество вхождений также однострочное текстовое поле. Вызов функции подсчета осуществляется нажатием кнопки формы. |
Упражнение 6. | |
Отобразить таблицу значений функции exp(x) на интервале [0,5] с шагом 0,5. Значения функции должны отображаться с пятью знаками после запятой. |
Встроенные объекты (2)
Объект Object
Расположен во главе всей иерархии объектов JavaScript. Любой объект JavaScript является наследует все его свойства и методы. Для создания объекта Object используется конструктор Object() с единственным необязательным параметром:
var obj = new Object([значение])Если параметр конструктора не задан, то создается объект без значения. Если же он задан, то может быть любым из поддерживаемых JavaScript типов данных - числовым, булевым или строковым. Если этот параметр является объектом, то возвращается неизмененным этот же объект (свойство constructor возвращает ссылку на конструктор объекта, а вот операция typeof будет возвращать строку "object", а не строку с типом объекта-параметра). Значения null и undefined этого параметра приводят к созданию объекта без содержимого.
Свойства объекта Object constructor | Хранит ссылку на функцию-конструктор, с помощью которой создан экземпляр объекта. |
prototype | Возвращает ссылку на прототип класса объектов. Изменять прототип встроенных объектов нельзя, тогда как пользовательских можно. Это свойство "класса", а не экземпляра, поэтому оно применяется не к экземпляру объекта, а к его конструктору Object. |
propertyIsEnumerable(имя) | Логическое свойство, возвращающее true, если указанное в качестве параметра свойство объекта существует и доступно при переборе свойств в цикле for...in. |
Используя свойство constructor, которое наследуется также и всеми объектами JavaScript, можно проверить его принадлежность классу объектов. Сравнивать значение этого свойства надо с конструктором соответствующего объекта (просто имя конструктора). Для пользовательского объекта этим именем является имя соответствующей функции-конструктора (см. урок 9), а для встроенных объектов следующие ключевые слова - String, Date, Function, Array, Boolean, Number, Object:
var str = "xxxxxx";var obj = new Object();(str.constructor == String) ? true : false; // true(obj.constructor == String) ? true : false; // false(obj.constructor == Object) ? true : false; // trueСвойство prototype позволяет добавлять свойства и методы к "классу" объектов. Оно наследуется также каждым объектом JavaScript (пользовательским или встроенным кроме объектов Global и Math). После добавления свойств и методов к прототипу создание объектов этого класса приводит к тому, что у всех объектов будут существовать добавленные свойства и методы. Так как все объекты "происходят" от объекта Object, то добавление свойств и методов к его прототипу приводит к созданию соответствующих свойств и методов у всех объектов JavaScript.
Пример 1. Добавление свойств и методов ко всем объектам |
Добавим к прототипу объекта Object метод, возвращающий строку с названиями и значениями всех свойств объекта. Для этого прежде всего создадим функцию props(), выполняющую указанное действие. В JavaScript есть специальный цикл for...in, который предназначен для просмотра всех свойств объекта (встроенного или пользовательского). На каждом шаге цикла его переменная хранит имя свойства, а доступ к значению этого свойства можно получить, выполнив для объекта операцию индексации со строковым индексом, равным имени свойства. Например, к свойству constructor объекта obj класса Object можно обратиться не только с использованием точечной нотации obj.constructor, но и с помощью индекса "constructor" следующим образом obj["constructor"]. (Это справедливо для любого объекта JavaScript.) function props() { var s = "" for(var i in this){ s += i + ': ' + this[i] + '<br>'; }return s;} Здесь следует, забегая вперед, пояснить использование ключевого слова this в функциях JavaScript. Оно используется исключительно в функциях, реализующих методы объектов, и имеет смысл "этот объект". Когда добавляется новый метод к прототипу встроенного объекта, то в реализующей его функции следует каким-то образом ссылаться на экземпляр объекта, который впоследствии будет создан. Именно ключевое слово this и реализует эту функциональность. Поэтому в нашей функции props() цикл будет осуществляться по всем свойствам экземпляра объекта, ассоциированный с этой функцией метод которого будет вызываться. А конструкция this[i] будет возвращать значение очередного свойства этого объекта. Теперь остается добавить новое свойство к прототипу объектов класса Object. Назовем его propList и присвоим ему ссылку на функцию props(): Object.prototype.propList = props; Обращаем внимание, что присваивается ссылка props на объект Function, а не вызов функции props()! Создадим объект String: var s = "*********"; Теперь он имеет метод propList(), и следующий оператор распечатает все свойства объекта s с их значениями в окне браузера: document.write(s.propList()) Внимание! Метод propList() вызывается как обычная функция. Если бы для выполнения реализующей его функции props() требовались параметры, то их следовало бы передать при вызове метода propList() объекта s. |
Не все свойства объектов могут быть перечислены в цикле for...in. Для проверки доступности свойства в указанном цикле у объекта Object (и, естественно, у всех объектов JavaScript) есть логическое свойство propertyIsEnumerable(имя), определяющее доступность свойства в цикле for...in. Имя свойства передается как строка. Исключение - свойства массива, представляющие собой индексы эго элементов. В этом случае имя может быть передано в свойство propertyIsEnumerable как число, и как строка, содержащая число. Заметим, что все добавляемые пользователем к встроенным объектам свойства являются перечисляемые, тогда как их собственные встроенные свойства не все могут быть перечисляемыми.
Методы объекта Object toString | Возвращает строку, представляющую заданный объект. |
valueOf | Возвращает примитивное значение заданного объекта. |
Дата добавления: 2016-02-11; просмотров: 1110;