Mercurial > hg > nginx-site
view xml/ru/docs/njs/reference.xml @ 2567:4f3494d80949
Documented support for HTTP/2 in lingering_close.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Mon, 13 Jul 2020 09:38:12 +0100 |
parents | 6093e9f3615e |
children | 2edc64c05b0e |
line wrap: on
line source
<?xml version="1.0"?> <!-- Copyright (C) Nginx, Inc. --> <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> <article name="Справочник" link="/ru/docs/njs/reference.html" lang="ru" rev="1"> <section id="summary"> <para> <link doc="index.xml">njs</link> предоставляет объекты, методы и свойства для расширения функциональности nginx. </para> </section> <section id="http_stream" name="Объекты nginx"> <section id="http" name="HTTP-запрос"> <para> Объект <literal>HTTP</literal> доступен только в модуле <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>. Все строки в объекте <literal>HTTP</literal> являются <link id="string">байтовыми строками</link>. <list type="tag"> <tag-name id="r_args"><literal>r.args{}</literal></tag-name> <tag-desc> объект аргументов запроса, только чтение </tag-desc> <tag-name><literal>r.error(<value>строка</value>)</literal></tag-name> <tag-desc> записывает <literal>строку</literal> в лог-файл ошибок на уровне лога <literal>error</literal> </tag-desc> <tag-name><literal>r.finish()</literal></tag-name> <tag-desc> завершает отправку ответа клиенту </tag-desc> <tag-name id="r_headers_in"><literal>r.headersIn{}</literal></tag-name> <tag-desc> объект входящих заголовков, только чтение. <para> Доступ к заголовку запроса <literal>Foo</literal> можно получить при помощи синтаксиса: <literal>headersIn.foo</literal> или <literal>headersIn['Foo']</literal>. </para> <para> Заголовки запроса <header>Authorization</header>, <header>Content-Length</header>, <header>Content-Range</header>, <header>Content-Type</header>, <header>ETag</header>, <header>Expect</header>, <header>From</header>, <header>Host</header>, <header>If-Match</header>, <header>If-Modified-Since</header>, <header>If-None-Match</header>, <header>If-Range</header>, <header>If-Unmodified-Since</header>, <header>Max-Forwards</header>, <header>Proxy-Authorization</header>, <header>Referer</header>, <header>Transfer-Encoding</header> и <header>User-Agent</header> могут иметь только одно значение поля (<link doc="changes.xml" id="njs0.4.1">0.4.1</link>). Дубликаты значений поля в заголовке запроса <header>Cookie</header> разделяются точкой с запятой (<literal>;</literal>). Дубликаты значений поля во всех остальных заголовках запроса разделяются запятой. </para> </tag-desc> <tag-name id="r_headers_out"><literal>r.headersOut{}</literal></tag-name> <tag-desc> объект исходящих заголовков, доступно для записи. <para> Доступ к заголовку ответа <literal>Foo</literal> можно получить при помощи синтаксиса: <literal>headersOut.foo</literal> или <literal>headersOut['Foo']</literal>. </para> <para> Значения полей многозначных заголовков ответа (<link doc="changes.xml" id="njs0.4.0">0.4.0</link>) можно задать при помощи синтаксиса: <example> r.headersOut['Foo'] = ['a', 'b'] </example> результат: <example> Foo: a Foo: b </example> Все предыдущие значения поля заголовка ответа <header>Foo</header> будут удалены. </para> <para> В стандартных заголовках ответа, поля которых могут принимать только одно значение, например <header>Content-Type</header>, учитывается только последний элемент массива. Значения поля в заголовке ответа <header>Set-Cookie</header> всегда возвращаются в виде массива. Дубликаты значений поля в заголовках ответа <header>Age</header>, <header>Content-Encoding</header>, <header>Content-Length</header>, <header>Content-Type</header>, <header>ETag</header>, <header>Expires</header>, <header>Last-Modified</header>, <header>Location</header>, <header>Retry-After</header> игнорируются. Дубликаты значений поля в других заголовках ответов разделяются при помощи запятой. </para> </tag-desc> <tag-name><literal>r.httpVersion</literal></tag-name> <tag-desc> версия HTTP, только чтение </tag-desc> <tag-name id="r_internal_redirect"><literal>r.internalRedirect(<value>uri</value>)</literal></tag-name> <tag-desc> осуществляет внутреннее перенаправление на указанный <literal>uri</literal>. Если uri начинается с префикса “<literal>@</literal>”, то он считается именованным location. Перенаправление осуществляется после завершения выполнения обработчика. </tag-desc> <tag-name><literal>r.log(<value>строка</value>)</literal></tag-name> <tag-desc> записывает <literal>строку</literal> в лог-файл ошибок на уровне лога <literal>info</literal> </tag-desc> <tag-name><literal>r.method</literal></tag-name> <tag-desc> HTTP метод, только чтение </tag-desc> <tag-name><literal>r.parent</literal></tag-name> <tag-desc> ссылается на родительский объект запроса </tag-desc> <tag-name><literal>r.remoteAddress</literal></tag-name> <tag-desc> адрес клиента, только чтение </tag-desc> <tag-name id="r_raw_headers_in"><literal>r.rawHeadersIn{}</literal></tag-name> <tag-desc> возвращает массив пар ключей и значений таким же, каким он был получен от клиента (<link doc="changes.xml" id="njs0.4.1">0.4.1</link>). <para> Например для следующих заголовков запроса: <example> Host: localhost Foo: bar foo: bar2 </example> результат <literal>r.rawHeadersIn</literal>: <example> [ ['Host', 'localhost'], ['Foo', 'bar'], ['foo', 'bar2'] ] </example> Значения полей всех заголовков <literal>foo</literal> можно получить при помощи синтаксиса: <example> r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1]) </example> результат: <example> ['bar', 'bar2'] </example> Имена полей заголовков не приводятся к нижнему регистру, дубликаты значений поля не объединяются. </para> </tag-desc> <tag-name id="r_raw_headers_out"><literal>r.rawHeadersOut{}</literal></tag-name> <tag-desc> возвращает массив пар ключей и значений заголовков ответа (<link doc="changes.xml" id="njs0.4.1">0.4.1</link>). Имена полей заголовков не приводятся к нижнему регистру, дубликаты значений поля не объединяются. </tag-desc> <tag-name id="r_request_body"><literal>r.requestBody</literal></tag-name> <tag-desc> возвращает тело запроса клиента, если оно не было записано во временный файл. Чтобы убедиться, что тело запроса клиента находится в памяти, его размер должен быть ограничен <link doc="../http/ngx_http_core_module.xml" id="client_max_body_size"/>, и также необходимо установить достаточный размер буфера при помощи <link doc="../http/ngx_http_core_module.xml" id="client_body_buffer_size"/>. Свойство доступно только в директиве <link doc="../http/ngx_http_js_module.xml" id="js_content"/>. </tag-desc> <tag-name id="r_response_body"><literal>r.responseBody</literal></tag-name> <tag-desc> хранит тело ответа <link id="subrequest">подзапроса</link>, только чтение. Размер <literal>r.responseBody</literal> ограничивается директивой <link doc="../http/ngx_http_core_module.xml" id="subrequest_output_buffer_size"/>. </tag-desc> <tag-name><literal>r.return(код[, строка])</literal></tag-name> <tag-desc> отправляет клиенту полный ответ с указанным <literal>кодом</literal> <para> Можно задать или URL перенаправления (для кодов 301, 302, 303, 307 и 308), или текст тела ответа (для остальных кодов) в качестве второго аргумента </para> </tag-desc> <tag-name><literal>r.send(<value>строка</value>)</literal></tag-name> <tag-desc> отправляет часть тела ответа клиенту </tag-desc> <tag-name><literal>r.sendHeader()</literal></tag-name> <tag-desc> отправляет заголовки HTTP клиенту </tag-desc> <tag-name><literal>r.status</literal></tag-name> <tag-desc> статус, доступно для записи </tag-desc> <tag-name id="subrequest"><literal>r.subrequest(<value>uri</value>[, <value>options</value>[, <value>callback</value>]])</literal></tag-name> <tag-desc> создаёт подзапрос с заданными <literal>uri</literal> и <literal>options</literal> и устанавливает необязательный <literal>callback</literal> завершения. <para> <link doc="../dev/development_guide.xml.xml" id="http_subrequests">Подзапрос</link> использует входящиe заголовки клиентского запроса. Для отправки на проксируемый сервер заголовков, отличных от оригинальных, может использоваться директива <link doc="../http/ngx_http_proxy_module.xml" id="proxy_set_header"/>. Для отправки на проксируемый сервер нового набора заголовков может использоваться директива <link doc="../http/ngx_http_proxy_module.xml" id="proxy_pass_request_headers"/>. </para> <para> Если <literal>options</literal> является строкой, то в ней содержится срока аргументов подзапроса. В противном случае ожидается, что <literal>options</literal> является объектом со следующими ключами: <list type="tag"> <tag-name><literal>args</literal></tag-name> <tag-desc> строка с аргументами, по умолчанию используется пустая строка </tag-desc> <tag-name><literal>body</literal></tag-name> <tag-desc> тело запроса, по умолчанию используется тело запроса родительского объекта запроса </tag-desc> <tag-name><literal>method</literal></tag-name> <tag-desc> метод HTTP, по умолчанию используется метод <literal>GET</literal> </tag-desc> </list> </para> <para> <literal>callback</literal> получает объект ответа подзапроса с методами и свойствами, идентичными родительскому объекту запроса. </para> <para> Начиная с версии njs <link doc="changes.xml" id="njs0.3.8">0.3.8</link> если не указан <literal>callback</literal>, то возвращается объект <literal>Promise</literal>, который разрешается в объект ответа подзапроса. </para> </tag-desc> <tag-name id="r_uri"><literal>r.uri</literal></tag-name> <tag-desc> текущий <link doc="../http/ngx_http_core_module.xml" id="var_uri">URI</link> запроса в <link doc="../http/ngx_http_core_module.xml" id="location">нормализованном</link> виде, только чтение </tag-desc> <tag-name id="r_variables"><literal>r.variables{}</literal></tag-name> <tag-desc> объект переменных nginx, доступно для записи (начиная с версии <link doc="changes.xml" id="njs0.2.8">0.2.8</link>) </tag-desc> <tag-name><literal>r.warn(<value>строка</value>)</literal></tag-name> <tag-desc> записывает <literal>строку</literal> в лог-файл ошибок на уровне лога <literal>warning</literal> </tag-desc> </list> </para> </section> <section id="stream" name="Stream-сессия"> <para> Объект stream-сессии доступен только в модуле <link doc="../stream/ngx_stream_js_module.xml">ngx_stream_js_module</link>. Все строки в объекте <literal>stream</literal> являются <link id="string">байтовыми строками</link>. </para> <para> <list type="tag"> <tag-name id="s_allow"><literal>s.allow()</literal></tag-name> <tag-desc> успешно финализирует обработчик фазы (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>) </tag-desc> <tag-name id="s_decline"><literal>s.decline()</literal></tag-name> <tag-desc> финализирует обработчик фазы и передаёт контроль следующему обработчику (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>) </tag-desc> <tag-name id="s_deny"><literal>s.deny()</literal></tag-name> <tag-desc> финализирует обработчик фазы с кодом ошибки доступа (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>) </tag-desc> <tag-name id="s_done"><literal>s.done</literal>(<value>[код]</value>)</tag-name> <tag-desc> успешно финализирует текущий обработчик фазы или финализирует его с указанным числовым кодом (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>). </tag-desc> <tag-name><literal>s.error(<value>строка</value>)</literal></tag-name> <tag-desc> записывает отправленную <literal>строку</literal> в лог-файл ошибок на уровне лога <literal>error</literal> </tag-desc> <tag-name><literal>s.log(<value>строка</value>)</literal></tag-name> <tag-desc> записывает отправленную <value>строку</value> в лог-файл ошибок на уровне лога <literal>info</literal> </tag-desc> <tag-name id="s_off"><literal>s.off(<value>имяСобытия</value>)</literal></tag-name> <tag-desc> отменяет регистрацию callback'а, установленного методом <link id="s_on">s.on()</link> (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>) </tag-desc> <tag-name id="s_on"><literal>s.on(<value>событие</value>, <value>callback</value>)</literal></tag-name> <tag-desc> регистрирует <literal>callback</literal> для указанного <literal>события</literal> (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>). <para> <literal>Событием</literal> может являться одна из следующих строк: <list type="tag"> <tag-name><literal>upload</literal></tag-name> <tag-desc> новые данные от клиента </tag-desc> <tag-name><literal>download</literal></tag-name> <tag-desc> новые данные к клиенту </tag-desc> </list> </para> <para> Callback завершения имеет следующий прототип: <literal>callback(данные, флаги)</literal>, где <literal>данные</literal> являются строкой, <literal>флаги</literal> являются объектом со следующими свойствами: <list type="tag"> <tag-name id="s_on_callback_last"><literal>last</literal></tag-name> <tag-desc> логическое свойство, true, если данные являются последним буфером. </tag-desc> </list> </para> </tag-desc> <tag-name><literal>s.remoteAddress</literal></tag-name> <tag-desc> адрес клиента, только чтение </tag-desc> <tag-name id="s_send"><literal>s.send(<value>данные</value>[, <value>параметры</value>])</literal></tag-name> <tag-desc> отправляет данные клиенту (<link doc="changes.xml" id="njs0.2.4">0.2.4</link>). <literal>Параметры</literal> являются объектом, используемым для переопределения флагов буфера nginx, полученных из буфера входных данных. Флаги могут быть переопределены при помощи следующих флагов: <para> <list type="tag"> <tag-name><literal>last</literal></tag-name> <tag-desc> логическое свойство, true, если буфер является последним буфером </tag-desc> <tag-name><literal>flush</literal></tag-name> <tag-desc> логическое свойство, true, если буфер должен иметь флаг <literal>flush</literal> </tag-desc> </list> </para> Метод может быть вызван несколько раз в течение одного вызова callback'a. </tag-desc> <tag-name id="s_variables"><literal>s.variables{}</literal></tag-name> <tag-desc> объект переменных nginx, доступно для записи (начиная с версии <link doc="changes.xml" id="njs0.2.8">0.2.8</link>) </tag-desc> <tag-name><literal>s.warn(<value>строка</value>)</literal></tag-name> <tag-desc> записывает отправленную <literal>строку</literal> в лог-файл ошибок на уровне лога <literal>warning</literal> </tag-desc> </list> </para> </section> </section> <section id="core" name="Core"> <section id="core_global" name="Global"> <section id="process" name="Process"> <para> Объект <literal>process</literal> является глобальным объектом, предоставляющим информацию о текущем процессе (<link doc="changes.xml" id="njs0.3.3">0.3.3</link>). </para> <para> <list type="tag"> <tag-name id="process_argv"><literal>process.argv</literal></tag-name> <tag-desc> Возвращает массив, содержащий аргументы командной строки, передаваемые в момент запуска текущего процесса. </tag-desc> <tag-name id="process_env"><literal>process.env</literal></tag-name> <tag-desc> Возвращает объект, содержащий переменные окружения пользователя. <note> По умолчанию nginx удаляет все переменные окружения, унаследованные от своего родительского процесса, кроме переменной TZ. Для сохранения части унаследованных переменных необходимо использовать директиву <link doc="../ngx_core_module.xml" id="env"/>. </note> </tag-desc> <tag-name id="process_pid"><literal>process.pid</literal></tag-name> <tag-desc> Возвращает PID текущего процесса. </tag-desc> <tag-name id="process_ppid"><literal>process.ppid</literal></tag-name> <tag-desc> Возвращает PID текущего родительского процесса. </tag-desc> </list> </para> </section> </section> <section id="string" name="Строка"> <para> В njs существует два типа строк: строка Unicode (по умолчанию) и байтовая строка. </para> <para> Строка Unicode соответствует строке ECMAScript, содержащей символы Unicode. </para> <para> Байтовые строки содержат последовательность байт и используются для сериализации строк Unicode во внешние данные и десериализации из внешних источников. Например метод <link id="string_toutf8">toUTF8()</link> сериализует строку Unicode в байтовую строку используя кодировку UTF8: <example> >> '£'.toUTF8().toString('hex') 'c2a3' /* C2 A3 является UTF8-представлением codepoint 00A3 ('£') */ </example> Метод <link id="string_tobytes">toBytes()</link> сериализует строку Unicode с codepoints до 255 в байтовую строку, в противном случае возвращается <literal>null</literal>: <example> >> '£'.toBytes().toString('hex') 'a3' /* a3 является байтом, равным codepoint 00A3 ('£') */ </example> В различные кодировки могут быть преобразованы только байтовые строки. Например строка не может быть кодирована напрямую в <literal>hex</literal>: <example> >> 'αβγδ'.toString('base64') TypeError: argument must be a byte string at String.prototype.toString (native) at main (native) </example> Чтобы преобразовать строку Unicode в hex, сначала необходимо её преобразовать в байтовую строку и затем в hex: <example> >> 'αβγδ'.toUTF8().toString('base64') 'zrHOss6zzrQ=' </example> <list type="tag"> <tag-name id="string_bytesfrom"><literal>String.bytesFrom(<value>массив</value> | <value>строка</value>, <value>кодировка</value>)</literal></tag-name> <tag-desc> (только в njs) Создаёт байтовую строку или из массива, содержащего октеты, или из кодированной строки (<link doc="changes.xml" id="njs0.2.3">0.2.3</link>). Кодировкой может быть <literal>hex</literal>, <literal>base64</literal> и <literal>base64url</literal>. <example> >> String.bytesFrom([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]) 'buffer' >> String.bytesFrom('YnVmZmVy', 'base64') 'buffer' </example> </tag-desc> <tag-name id="string_fromcharcode"><literal>String.fromCharCode(<value>CharCode1</value>[, ...[, <value>CharCodeN</value>]])</literal></tag-name> <tag-desc> Возвращает строку из одной или более Unicode codepoints. <example> >> String.fromCharCode(97, 98, 99, 100) 'abcd' </example> </tag-desc> <tag-name id="string_fromcodepoint"><literal>String.fromCodePoint(<value>codePoint1</value>[, ...[, <value>codePoint2</value>]])</literal></tag-name> <tag-desc> Возвращает строку из одной или более Unicode codepoints. <example> >> String.fromCodePoint(97, 98, 99, 100) 'abcd' </example> </tag-desc> <tag-name id="string_charat"><literal>String.prototype.charAt(<value>индекс</value>)</literal></tag-name> <tag-desc> Возвращает строку, представляющую одну кодовую единицу Unicode внутри указанного <literal>индекса</literal>; пустая строка, если индекс вне диапазона значений. Индекс может быть числом между 0 и длиной строки минус 1. Если индекс не указан, то значение по умолчанию равно <literal>0</literal>, т.е. возвращается первый символ в строке. </tag-desc> <tag-name id="string_codepointat"><literal>String.prototype.CodePointAt(<value>позиция</value>)</literal></tag-name> <tag-desc> Возвращает число, представляющее codepoint-значение символа в пределах указанной <literal>позиции</literal>; <literal>undefined</literal>, если элемент в позиции отсутствует. <example> >> 'ABCD'.codePointAt(3); 68 </example> </tag-desc> <tag-name id="string_concat"><literal>String.prototype.concat(<value>строка1</value>[, ..., <value>строкаN</value>])</literal></tag-name> <tag-desc> Возвращает строку, содержающую результат объединения указанных <literal>строк</literal>. <example> >> "a".concat("b", "c") 'abc' </example> </tag-desc> <tag-name id="string_endswith"><literal>String.prototype.endsWith(<value>ПоисковаяСтрока</value>[, <value>длина</value>])</literal></tag-name> <tag-desc> Возвращает <literal>true</literal>, если строка заканчивается символами указанной строки, иначе <literal>false</literal>. Необязательный параметр <literal>длина</literal> задаёт длину строки. Если <value>ПоисковаяСтрока</value> не указана, значением по умолчанию является длина строки. <example> >> 'abc'.endsWith('abc') true >> 'abca'.endsWith('abc') false </example> </tag-desc> <tag-name id="string_frombytes"><literal>String.prototype.fromBytes(<value>начало</value>[, <value>конец</value>])</literal></tag-name> <tag-desc> (только в njs) Возвращает новую строку Unicode из байтовой строки, в которой каждый байт заменяется соответствующей Unicode codepoint. </tag-desc> <tag-name id="string_fromutf8"><literal>String.prototype.fromUTF8(<value>начало</value>[, <value>конец</value>])</literal></tag-name> <tag-desc> (только в njs) Преобразует байтовую строку, содержащую валидную строку UTF8, в строку Unicode, иначе возвращается <literal>null</literal>. </tag-desc> <tag-name id="string_includes"><literal>String.prototype.includes(<value>поисковаяСтрока</value>[, <value>позиция</value>]))</literal></tag-name> <tag-desc> Возвращает <literal>true</literal>, если строка ищется внутри другой строки, иначе <literal>false</literal>. Необязательный параметр <literal>позиция</literal> задаёт позицию внутри строки, от которой начинается поиск для <literal>поисковойСтроки</literal>. Значение по умолчанию равно 0. <example> >> 'abc'.includes('bc') true </example> </tag-desc> <tag-name id="string_indexof"><literal>String.prototype.indexOf(<value>поисковаяСтрока</value>[, <value>fromIndex</value>])</literal></tag-name> <tag-desc> Возвращает позицию первого появления <literal>поисковойСтроки</literal>. Поиск начинается с <literal>fromIndex</literal>. Возвращает <value>-1</value>, если значение не найдено. <literal>fromIndex</literal> является числом, значение по умолчанию равно 0. Если <literal>fromIndex</literal> меньше, чем 0 или больше, чем <link id="string_length">String.prototype.length</link><value></value>, поиск начнётся на индексе <value>0</value> и <value>String.prototype.length</value>. <example> >> 'abcdef'.indexOf('de', 2) 3 </example> </tag-desc> <tag-name id="string_lastindexof"><literal>String.prototype.lastIndexOf(<value>поисковаяСтрока</value>[, <value>fromIndex</value>])</literal></tag-name> <tag-desc> Возвращает позицию последнего появления of the <literal>поисковойСтроки</literal>, поиск осуществляется в обратном порядке от <literal>fromIndex</literal>. Возвращает <value>-1</value>, если значение не найдено. Если значение <literal>поисковойСтроки</literal> пустое, то возвращается <literal>fromIndex</literal>. <example> >> "nginx".lastIndexOf("gi") 1 </example> </tag-desc> <tag-name id="string_length"><literal>String.prototype.length</literal></tag-name> <tag-desc> Возвращает длину строки. <example> >> 'αβγδ'.length 4 </example> </tag-desc> <tag-name id="string_match"><literal>String.prototype.match([<value>регулярноеВыражение</value>])</literal></tag-name> <tag-desc> Возвращает совпадение при сопоставлении строки с регулярным выражением. <example> >> 'nginx'.match( /ng/i ) 'ng' </example> </tag-desc> <tag-name id="string_padend"><literal>String.prototype.padEnd(<value>длина</value> [, <value>строка</value>])</literal></tag-name> <tag-desc> Возвращает строку указанной длины, добавляя строку в конец указанной строки (<link doc="changes.xml" id="njs0.2.3">0.2.3</link>). <example> >> '1234'.padEnd(8, 'abcd') '1234abcd' </example> </tag-desc> <tag-name id="string_padstart"><literal>String.prototype.padStart(<value>длина</value> [, <value>строка</value>])</literal></tag-name> <tag-desc> Возвращает строку указанной длины, добавляя строку к началу указанной строки (<link doc="changes.xml" id="njs0.2.3">0.2.3</link>). <example> >> '1234'.padStart(8, 'abcd') 'abcd1234' </example> </tag-desc> <tag-name id="string_repeat"><literal>String.prototype.repeat(<value>число</value>)</literal></tag-name> <tag-desc> Возвращает строку с указанным числом копий строки. <example> >> 'abc'.repeat(3) 'abcabcabc' </example> </tag-desc> <tag-name id="string_replace"><literal>String.prototype.replace([<value>регулярноеВыражение</value>|<value>string</value>[, <value>string</value>|<value>function</value>]])</literal></tag-name> <tag-desc> Возвращает новую строку, которая сопоставляется со строкой или регулярным выражением, и заменяется на <literal>строку</literal> или <literal>функцию</literal>. <example> >> 'abcdefgh'.replace('d', 1) 'abc1efgh' </example> </tag-desc> <tag-name id="string_search"><literal>String.prototype.search([<value>регулярноеВыражение</value>])</literal></tag-name> <tag-desc> Осуществляет поиск строки при помощи регулярного выражения. <example> >> 'abcdefgh'.search('def') 3 </example> </tag-desc> <tag-name id="string_slice"><literal>String.prototype.slice(<value>начало</value>[, <value>конец</value>])</literal></tag-name> <tag-desc> Возвращает новую строку, содержащую часть исходной строки между <literal>началом</literal> и <literal>концом</literal> или от <literal>начала</literal> до конца строки. <example> >> 'abcdefghijklmno'.slice(NaN, 5) 'abcde' </example> </tag-desc> <tag-name id="string_split"><literal>String.prototype.split(([<value>строка</value>|<value>регулярноеВыражение</value>[, <value>лимит</value>]]))</literal></tag-name> <tag-desc> Возвращает совпадение строки регулярному выражению. Необязательный параметр <literal>лимит</literal> является числом, задающим ограничение на количество найденных подстрок. <example> >> 'abc'.split('') [ 'a', 'b', 'c' ] </example> </tag-desc> <tag-name id="string_startswith"><literal>String.prototype.startsWith(<value>поисковаяСтрока</value>[, <value>позиция</value>])</literal></tag-name> <tag-desc> Возвращает <literal>true</literal>, если строка начинается с символов указанной строки, иначе <literal>false</literal>. Необязательный параметр <literal>позиция</literal> является местом в этой строке, с которого начинается поиск <literal>поисковойСтоки</literal>. Значение по умолчанию равно 0. <example> >> 'abc'.startsWith('abc') true > 'aabc'.startsWith('abc') false </example> </tag-desc> <tag-name id="string_substr"><literal>String.prototype.substr(<value>начало</value>[, <value>длина</value>])</literal></tag-name> <tag-desc> Возвращает часть строки указанной <literal>длины</literal> от <literal>начала</literal> или от <literal>начала</literal> до конца строки. <example> >> 'abcdefghijklmno'.substr(3, 5) 'defgh' </example> </tag-desc> <tag-name id="string_substring"><literal>String.prototype.substring(<value>начало</value>[, <value>конец</value>])</literal></tag-name> <tag-desc> Возвращает часть строки между <literal>началом</literal> и <literal>концом</literal> или от от <literal>начала</literal> до конца строки. <example> >> 'abcdefghijklmno'.substring(3, 5) 'de' </example> </tag-desc> <tag-name id="string_tobytes"><literal>String.prototype.toBytes(начало[, конец])</literal></tag-name> <tag-desc> (только в njs) Сериализует строку Unicode в байтовую строку. Возвращает <literal>null</literal>, если в строке найден символ больше, чем 255. </tag-desc> <tag-name id="string_tolowercase"><literal>String.prototype.toLowerCase()</literal></tag-name> <tag-desc> Преобразует строку в нижний регистр. Метод поддерживает только простое свёртывание Unicode. <example> >> 'ΑΒΓΔ'.toLowerCase() 'αβγδ' </example> </tag-desc> <tag-name><literal>String.prototype.toString([<value>кодировка</value>])</literal></tag-name> <tag-desc> <para> Если кодировка не указана, возвращает указанную строку Unicode string или байтовую строку как в ECMAScript. </para> <para> (только в njs) Если кодировка указана, кодирует <link id="string_tobytes">байтовую строку</link> в <literal>hex</literal>, <literal>base64</literal> или <literal>base64url</literal>. </para> <example> >> 'αβγδ'.toUTF8().toString('base64url') 'zrHOss6zzrQ' </example> </tag-desc> <tag-name id="string_touppercase"><literal>String.prototype.toUpperCase()</literal></tag-name> <tag-desc> Преобразует строку в верхний регистр. Метод поддерживает только простое свёртывание Unicode. <example> >> 'αβγδ'.toUpperCase() 'ΑΒΓΔ' </example> </tag-desc> <tag-name id="string_toutf8"><literal>String.prototype.toUTF8(<value>начало</value>[, <value>конец</value>])</literal></tag-name> <tag-desc> (только в njs) Сериализует строку Unicode в байтовую строку при помощи кодирования UTF8. <example> >> 'αβγδ'.toUTF8().length 8 >> 'αβγδ'.length 4 </example> </tag-desc> <tag-name id="string_trim"><literal>String.prototype.trim()</literal></tag-name> <tag-desc> Удаляет пробелы в начале и конце строки. <example> >> ' abc '.trim() 'abc' </example> </tag-desc> <tag-name id="string_trimend"><literal>String.prototype.trimEnd()</literal></tag-name> <tag-desc> Удаляет пробелы в конце строки. (<link doc="changes.xml" id="njs0.3.4">0.3.4</link>). <example> >> ' abc '.trimEnd() ' abc' </example> </tag-desc> <tag-name id="string_trimstart"><literal>String.prototype.trimStart()</literal></tag-name> <tag-desc> Удаляет пробелы в начале строки. (<link doc="changes.xml" id="njs0.3.4">0.3.4</link>). <example> >> ' abc '.trimStart() 'abc ' </example> </tag-desc> <tag-name id="encodeuri"><literal>encodeURI(<value>URI</value>)</literal></tag-name> <tag-desc> Кодирует URI путём замены определённых символов на одну, две, три или четыре последовательности, представляющие UTF-8 кодировку символа. <example> >> encodeURI('012αβγδ') '012%CE%B1%CE%B2%CE%B3%CE%B4' </example> </tag-desc> <tag-name id="encodeuricomponent"><literal>encodeURIComponent(<value>encodedURIString</value>)</literal></tag-name> <tag-desc> Кодирует URI путём замены определённых символов на одну, две, три или четыре последовательности, представляющие UTF-8 кодировку символа. <example> >> encodeURIComponent('[@?=') '%5B%40%3F%3D' </example> </tag-desc> <tag-name id="decodeuri"><literal>decodeURI(<value>encodedURI</value>)</literal></tag-name> <tag-desc> Декодирует ранее <link id="encodeuri">кодированный</link> URI. <example> >> decodeURI('012%CE%B1%CE%B2%CE%B3%CE%B4') '012αβγδ' </example> </tag-desc> <tag-name id="decodeuricomponent"><literal>decodeURIComponent(<value>decodedURIString</value>)</literal></tag-name> <tag-desc> Декодирует ранее <link id="encodeuri">кодированный</link> URI. <example> >> decodeURIComponent('%5B%40%3F%3D') '[@?=' </example> </tag-desc> </list> </para> </section> </section> </article>