From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/array/@@iterator/index.html | 138 +++++ .../global_objects/array/@@species/index.html | 78 +++ .../global_objects/array/@@unscopables/index.html | 76 +++ .../global_objects/array/concat/index.html | 135 +++++ .../global_objects/array/copywithin/index.html | 216 +++++++ .../global_objects/array/entries/index.html | 116 ++++ .../global_objects/array/every/index.html | 195 ++++++ .../reference/global_objects/array/fill/index.html | 159 +++++ .../global_objects/array/filter/index.html | 302 ++++++++++ .../reference/global_objects/array/find/index.html | 167 ++++++ .../global_objects/array/findindex/index.html | 138 +++++ .../reference/global_objects/array/flat/index.html | 160 +++++ .../global_objects/array/flatmap/index.html | 126 ++++ .../global_objects/array/foreach/index.html | 388 ++++++++++++ .../reference/global_objects/array/from/index.html | 216 +++++++ .../global_objects/array/includes/index.html | 171 ++++++ .../reference/global_objects/array/index.html | 452 ++++++++++++++ .../global_objects/array/indexof/index.html | 175 ++++++ .../global_objects/array/isarray/index.html | 120 ++++ .../reference/global_objects/array/join/index.html | 110 ++++ .../reference/global_objects/array/keys/index.html | 90 +++ .../global_objects/array/lastindexof/index.html | 167 ++++++ .../global_objects/array/length/index.html | 146 +++++ .../reference/global_objects/array/map/index.html | 284 +++++++++ .../global_objects/array/observe/index.html | 138 +++++ .../reference/global_objects/array/of/index.html | 99 +++ .../reference/global_objects/array/pop/index.html | 99 +++ .../global_objects/array/prototype/index.html | 171 ++++++ .../reference/global_objects/array/push/index.html | 111 ++++ .../global_objects/array/reduce/index.html | 314 ++++++++++ .../global_objects/array/reduceright/index.html | 290 +++++++++ .../global_objects/array/reverse/index.html | 96 +++ .../global_objects/array/shift/index.html | 139 +++++ .../global_objects/array/slice/index.html | 242 ++++++++ .../reference/global_objects/array/some/index.html | 215 +++++++ .../reference/global_objects/array/sort/index.html | 234 ++++++++ .../global_objects/array/splice/index.html | 142 +++++ .../global_objects/array/tolocalestring/index.html | 134 +++++ .../global_objects/array/tosource/index.html | 94 +++ .../global_objects/array/tostring/index.html | 122 ++++ .../global_objects/array/unshift/index.html | 89 +++ .../global_objects/array/values/index.html | 136 +++++ .../global_objects/arraybuffer/index.html | 145 +++++ .../global_objects/arraybuffer/isview/index.html | 88 +++ .../global_objects/arraybuffer/slice/index.html | 125 ++++ .../global_objects/asyncfunction/index.html | 166 +++++ .../asyncfunction/prototype/index.html | 55 ++ .../global_objects/atomics/add/index.html | 126 ++++ .../reference/global_objects/atomics/index.html | 168 ++++++ .../global_objects/atomics/sub/index.html | 128 ++++ .../global_objects/bigint/asintn/index.html | 79 +++ .../global_objects/bigint/asuintn/index.html | 72 +++ .../reference/global_objects/bigint/index.html | 294 +++++++++ .../reference/global_objects/boolean/index.html | 200 +++++++ .../global_objects/boolean/prototype/index.html | 112 ++++ .../global_objects/boolean/tosource/index.html | 92 +++ .../global_objects/boolean/tostring/index.html | 113 ++++ .../global_objects/boolean/valueof/index.html | 111 ++++ .../reference/global_objects/dataview/index.html | 122 ++++ .../global_objects/dataview/setint16/index.html | 80 +++ .../global_objects/date/getdate/index.html | 81 +++ .../global_objects/date/getday/index.html | 94 +++ .../global_objects/date/getfullyear/index.html | 81 +++ .../global_objects/date/gethours/index.html | 103 ++++ .../global_objects/date/getmilliseconds/index.html | 126 ++++ .../global_objects/date/getminutes/index.html | 126 ++++ .../global_objects/date/getmonth/index.html | 126 ++++ .../global_objects/date/getseconds/index.html | 126 ++++ .../global_objects/date/gettime/index.html | 100 ++++ .../date/gettimezoneoffset/index.html | 106 ++++ .../global_objects/date/getutcdate/index.html | 114 ++++ .../global_objects/date/getutcday/index.html | 114 ++++ .../global_objects/date/getutcfullyear/index.html | 113 ++++ .../global_objects/date/getutchours/index.html | 113 ++++ .../date/getutcmilliseconds/index.html | 113 ++++ .../global_objects/date/getutcminutes/index.html | 113 ++++ .../global_objects/date/getutcmonth/index.html | 113 ++++ .../global_objects/date/getutcseconds/index.html | 113 ++++ .../global_objects/date/getyear/index.html | 123 ++++ .../reference/global_objects/date/index.html | 232 +++++++ .../reference/global_objects/date/now/index.html | 78 +++ .../reference/global_objects/date/parse/index.html | 217 +++++++ .../global_objects/date/prototype/index.html | 228 +++++++ .../global_objects/date/setdate/index.html | 84 +++ .../global_objects/date/setfullyear/index.html | 136 +++++ .../global_objects/date/sethours/index.html | 125 ++++ .../global_objects/date/setmilliseconds/index.html | 115 ++++ .../global_objects/date/setminutes/index.html | 139 +++++ .../global_objects/date/setmonth/index.html | 121 ++++ .../global_objects/date/setseconds/index.html | 121 ++++ .../global_objects/date/settime/index.html | 116 ++++ .../global_objects/date/setutcdate/index.html | 115 ++++ .../global_objects/date/setutcfullyear/index.html | 120 ++++ .../global_objects/date/setutchours/index.html | 122 ++++ .../date/setutcmilliseconds/index.html | 115 ++++ .../global_objects/date/setutcminutes/index.html | 120 ++++ .../global_objects/date/setutcmonth/index.html | 118 ++++ .../global_objects/date/setutcseconds/index.html | 118 ++++ .../global_objects/date/setyear/index.html | 87 +++ .../global_objects/date/todatestring/index.html | 113 ++++ .../global_objects/date/togmtstring/index.html | 114 ++++ .../global_objects/date/toisostring/index.html | 143 +++++ .../global_objects/date/tojson/index.html | 107 ++++ .../date/tolocaledatestring/index.html | 226 +++++++ .../global_objects/date/tolocaleformat/index.html | 73 +++ .../global_objects/date/tolocalestring/index.html | 233 ++++++++ .../date/tolocaletimestring/index.html | 203 +++++++ .../global_objects/date/tosource/index.html | 93 +++ .../global_objects/date/tostring/index.html | 118 ++++ .../global_objects/date/totimestring/index.html | 77 +++ .../global_objects/date/toutcstring/index.html | 114 ++++ .../reference/global_objects/date/utc/index.html | 123 ++++ .../global_objects/date/valueof/index.html | 114 ++++ .../reference/global_objects/decodeuri/index.html | 124 ++++ .../global_objects/decodeuricomponent/index.html | 107 ++++ .../reference/global_objects/encodeuri/index.html | 139 +++++ .../global_objects/encodeuricomponent/index.html | 157 +++++ .../global_objects/error/columnnumber/index.html | 78 +++ .../global_objects/error/filename/index.html | 80 +++ .../reference/global_objects/error/index.html | 208 +++++++ .../global_objects/error/linenumber/index.html | 92 +++ .../global_objects/error/message/index.html | 107 ++++ .../reference/global_objects/error/name/index.html | 108 ++++ .../global_objects/error/prototype/index.html | 154 +++++ .../global_objects/error/stack/index.html | 147 +++++ .../global_objects/error/tosource/index.html | 88 +++ .../global_objects/error/tostring/index.html | 136 +++++ .../reference/global_objects/escape/index.html | 120 ++++ .../reference/global_objects/eval/index.html | 213 +++++++ .../reference/global_objects/evalerror/index.html | 146 +++++ .../global_objects/evalerror/prototype/index.html | 121 ++++ .../global_objects/float32array/index.html | 202 +++++++ .../global_objects/float64array/index.html | 199 ++++++ .../global_objects/function/apply/index.html | 252 ++++++++ .../global_objects/function/arguments/index.html | 116 ++++ .../global_objects/function/arity/index.html | 30 + .../global_objects/function/bind/index.html | 311 ++++++++++ .../global_objects/function/call/index.html | 175 ++++++ .../global_objects/function/caller/index.html | 131 ++++ .../global_objects/function/displayname/index.html | 111 ++++ .../reference/global_objects/function/index.html | 200 +++++++ .../global_objects/function/isgenerator/index.html | 83 +++ .../global_objects/function/length/index.html | 145 +++++ .../global_objects/function/name/index.html | 219 +++++++ .../global_objects/function/prototype/index.html | 151 +++++ .../global_objects/function/tosource/index.html | 87 +++ .../global_objects/function/tostring/index.html | 110 ++++ .../reference/global_objects/generator/index.html | 187 ++++++ .../global_objects/generator/next/index.html | 116 ++++ .../global_objects/generator/return/index.html | 95 +++ .../global_objects/generator/throw/index.html | 140 +++++ .../global_objects/generatorfunction/index.html | 108 ++++ .../generatorfunction/prototype/index.html | 58 ++ .../reference/global_objects/globalthis/index.html | 88 +++ .../javascript/reference/global_objects/index.html | 166 +++++ .../reference/global_objects/infinity/index.html | 98 +++ .../reference/global_objects/int16array/index.html | 201 +++++++ .../reference/global_objects/int32array/index.html | 199 ++++++ .../reference/global_objects/int8array/index.html | 199 ++++++ .../global_objects/internalerror/index.html | 113 ++++ .../internalerror/prototype/index.html | 99 +++ .../intl/collator/compare/index.html | 125 ++++ .../global_objects/intl/collator/index.html | 187 ++++++ .../intl/collator/prototype/index.html | 108 ++++ .../intl/collator/resolvedoptions/index.html | 108 ++++ .../intl/collator/supportedlocalesof/index.html | 117 ++++ .../intl/datetimeformat/format/index.html | 123 ++++ .../intl/datetimeformat/formattoparts/index.html | 169 ++++++ .../global_objects/intl/datetimeformat/index.html | 276 +++++++++ .../intl/datetimeformat/prototype/index.html | 108 ++++ .../intl/datetimeformat/resolvedoptions/index.html | 116 ++++ .../datetimeformat/supportedlocalesof/index.html | 118 ++++ .../intl/getcanonicallocales/index.html | 73 +++ .../reference/global_objects/intl/index.html | 117 ++++ .../global_objects/intl/listformat/index.html | 104 ++++ .../intl/numberformat/format/index.html | 120 ++++ .../global_objects/intl/numberformat/index.html | 189 ++++++ .../intl/numberformat/prototype/index.html | 108 ++++ .../intl/numberformat/resolvedoptions/index.html | 117 ++++ .../numberformat/supportedlocalesof/index.html | 117 ++++ .../reference/global_objects/isfinite/index.html | 114 ++++ .../reference/global_objects/isnan/index.html | 133 +++++ .../reference/global_objects/iterator/index.html | 138 +++++ .../reference/global_objects/json/index.html | 230 +++++++ .../reference/global_objects/json/parse/index.html | 150 +++++ .../global_objects/json/stringify/index.html | 189 ++++++ .../global_objects/map/@@species/index.html | 111 ++++ .../reference/global_objects/map/clear/index.html | 119 ++++ .../reference/global_objects/map/delete/index.html | 79 +++ .../global_objects/map/entries/index.html | 127 ++++ .../global_objects/map/foreach/index.html | 94 +++ .../reference/global_objects/map/get/index.html | 68 +++ .../reference/global_objects/map/has/index.html | 119 ++++ .../reference/global_objects/map/index.html | 288 +++++++++ .../reference/global_objects/map/keys/index.html | 117 ++++ .../global_objects/map/prototype/index.html | 125 ++++ .../reference/global_objects/map/set/index.html | 140 +++++ .../reference/global_objects/map/size/index.html | 112 ++++ .../reference/global_objects/map/values/index.html | 116 ++++ .../reference/global_objects/math/abs/index.html | 100 ++++ .../reference/global_objects/math/acos/index.html | 125 ++++ .../reference/global_objects/math/acosh/index.html | 136 +++++ .../reference/global_objects/math/asin/index.html | 125 ++++ .../reference/global_objects/math/asinh/index.html | 135 +++++ .../reference/global_objects/math/atan/index.html | 120 ++++ .../reference/global_objects/math/atan2/index.html | 134 +++++ .../reference/global_objects/math/atanh/index.html | 137 +++++ .../reference/global_objects/math/cbrt/index.html | 134 +++++ .../reference/global_objects/math/ceil/index.html | 207 +++++++ .../reference/global_objects/math/clz32/index.html | 140 +++++ .../reference/global_objects/math/cos/index.html | 122 ++++ .../reference/global_objects/math/cosh/index.html | 140 +++++ .../reference/global_objects/math/e/index.html | 113 ++++ .../reference/global_objects/math/exp/index.html | 120 ++++ .../reference/global_objects/math/expm1/index.html | 132 ++++ .../reference/global_objects/math/floor/index.html | 200 +++++++ .../global_objects/math/fround/index.html | 128 ++++ .../reference/global_objects/math/hypot/index.html | 149 +++++ .../reference/global_objects/math/imul/index.html | 130 ++++ .../reference/global_objects/math/index.html | 198 ++++++ .../reference/global_objects/math/ln10/index.html | 113 ++++ .../reference/global_objects/math/ln2/index.html | 113 ++++ .../reference/global_objects/math/log/index.html | 129 ++++ .../reference/global_objects/math/log10/index.html | 137 +++++ .../global_objects/math/log10e/index.html | 113 ++++ .../reference/global_objects/math/log1p/index.html | 136 +++++ .../reference/global_objects/math/log2/index.html | 93 +++ .../reference/global_objects/math/log2e/index.html | 113 ++++ .../reference/global_objects/math/max/index.html | 137 +++++ .../reference/global_objects/math/min/index.html | 147 +++++ .../reference/global_objects/math/pi/index.html | 111 ++++ .../reference/global_objects/math/pow/index.html | 126 ++++ .../global_objects/math/random/index.html | 110 ++++ .../reference/global_objects/math/round/index.html | 214 +++++++ .../reference/global_objects/math/sign/index.html | 141 +++++ .../reference/global_objects/math/sin/index.html | 121 ++++ .../reference/global_objects/math/sinh/index.html | 140 +++++ .../reference/global_objects/math/sqrt/index.html | 143 +++++ .../global_objects/math/sqrt1_2/index.html | 112 ++++ .../reference/global_objects/math/sqrt2/index.html | 112 ++++ .../reference/global_objects/math/tan/index.html | 124 ++++ .../reference/global_objects/math/tanh/index.html | 153 +++++ .../reference/global_objects/math/trunc/index.html | 137 +++++ .../index.html" | 136 +++++ .../reference/global_objects/nan/index.html | 103 ++++ .../reference/global_objects/null/index.html | 106 ++++ .../global_objects/number/epsilon/index.html | 122 ++++ .../reference/global_objects/number/index.html | 181 ++++++ .../global_objects/number/isfinite/index.html | 130 ++++ .../global_objects/number/isinteger/index.html | 95 +++ .../global_objects/number/isnan/index.html | 96 +++ .../global_objects/number/issafeinteger/index.html | 95 +++ .../number/max_safe_integer/index.html | 65 ++ .../global_objects/number/max_value/index.html | 110 ++++ .../number/min_safe_integer/index.html | 105 ++++ .../global_objects/number/min_value/index.html | 122 ++++ .../reference/global_objects/number/nan/index.html | 97 +++ .../number/negative_infinity/index.html | 125 ++++ .../global_objects/number/parsefloat/index.html | 108 ++++ .../global_objects/number/parseint/index.html | 82 +++ .../number/positive_infinity/index.html | 125 ++++ .../global_objects/number/prototype/index.html | 123 ++++ .../global_objects/number/toexponential/index.html | 131 ++++ .../global_objects/number/tofixed/index.html | 143 +++++ .../global_objects/number/tointeger/index.html | 94 +++ .../number/tolocalestring/index.html | 164 +++++ .../global_objects/number/toprecision/index.html | 150 +++++ .../global_objects/number/tosource/index.html | 104 ++++ .../global_objects/number/tostring/index.html | 148 +++++ .../global_objects/number/valueof/index.html | 115 ++++ .../object/__definegetter__/index.html | 119 ++++ .../object/__definesetter__/index.html | 132 ++++ .../object/__lookupgetter__/index.html | 110 ++++ .../object/__lookupsetter__/index.html | 110 ++++ .../global_objects/object/assign/index.html | 216 +++++++ .../global_objects/object/constructor/index.html | 173 ++++++ .../global_objects/object/count/index.html | 83 +++ .../global_objects/object/create/index.html | 240 ++++++++ .../object/defineproperties/index.html | 236 ++++++++ .../object/defineproperty/index.html | 399 +++++++++++++ .../global_objects/object/entries/index.html | 121 ++++ .../global_objects/object/eval/index.html | 81 +++ .../global_objects/object/freeze/index.html | 165 +++++ .../global_objects/object/fromentries/index.html | 108 ++++ .../global_objects/object/getnotifier/index.html | 47 ++ .../object/getownpropertydescriptor/index.html | 148 +++++ .../object/getownpropertydescriptors/index.html | 115 ++++ .../object/getownpropertynames/index.html | 161 +++++ .../object/getownpropertysymbols/index.html | 94 +++ .../object/getprototypeof/index.html | 139 +++++ .../object/hasownproperty/index.html | 145 +++++ .../reference/global_objects/object/index.html | 216 +++++++ .../reference/global_objects/object/is/index.html | 122 ++++ .../global_objects/object/isextensible/index.html | 134 +++++ .../global_objects/object/isfrozen/index.html | 142 +++++ .../global_objects/object/isprototypeof/index.html | 159 +++++ .../global_objects/object/issealed/index.html | 147 +++++ .../global_objects/object/keys/index.html | 153 +++++ .../global_objects/object/nosuchmethod/index.html | 195 ++++++ .../global_objects/object/observe/index.html | 142 +++++ .../global_objects/object/parent/index.html | 75 +++ .../object/preventextensions/index.html | 120 ++++ .../object/propertyisenumerable/index.html | 173 ++++++ .../global_objects/object/proto/index.html | 151 +++++ .../global_objects/object/prototype/index.html | 204 +++++++ .../global_objects/object/seal/index.html | 119 ++++ .../object/setprototypeof/index.html | 256 ++++++++ .../object/tolocalestring/index.html | 103 ++++ .../global_objects/object/tosource/index.html | 138 +++++ .../global_objects/object/tostring/index.html | 139 +++++ .../global_objects/object/unobserve/index.html | 97 +++ .../global_objects/object/unwatch/index.html | 93 +++ .../global_objects/object/valueof/index.html | 141 +++++ .../global_objects/object/values/index.html | 98 +++ .../global_objects/object/watch/index.html | 168 ++++++ .../global_objects/parallelarray/index.html | 52 ++ .../reference/global_objects/parsefloat/index.html | 136 +++++ .../reference/global_objects/parseint/index.html | 202 +++++++ .../global_objects/promise/all/index.html | 122 ++++ .../global_objects/promise/allsettled/index.html | 60 ++ .../global_objects/promise/any/index.html | 81 +++ .../global_objects/promise/catch/index.html | 157 +++++ .../global_objects/promise/finally/index.html | 98 +++ .../reference/global_objects/promise/index.html | 267 +++++++++ .../global_objects/promise/prototype/index.html | 66 ++ .../global_objects/promise/race/index.html | 115 ++++ .../global_objects/promise/reject/index.html | 76 +++ .../global_objects/promise/resolve/index.html | 138 +++++ .../global_objects/promise/then/index.html | 158 +++++ .../proxy/handler/deleteproperty/index.html | 131 ++++ .../global_objects/proxy/handler/index.html | 134 +++++ .../global_objects/proxy/handler/set/index.html | 179 ++++++ .../reference/global_objects/proxy/index.html | 482 +++++++++++++++ .../global_objects/proxy/proxy/apply/index.html | 111 ++++ .../global_objects/proxy/proxy/get/index.html | 127 ++++ .../global_objects/proxy/proxy/index.html | 125 ++++ .../global_objects/proxy/revocable/index.html | 91 +++ .../reference/global_objects/rangeerror/index.html | 151 +++++ .../global_objects/rangeerror/prototype/index.html | 122 ++++ .../global_objects/referenceerror/index.html | 131 ++++ .../referenceerror/prototype/index.html | 122 ++++ .../global_objects/reflect/apply/index.html | 101 ++++ .../global_objects/reflect/construct/index.html | 151 +++++ .../reflect/defineproperty/index.html | 98 +++ .../reflect/deleteproperty/index.html | 92 +++ .../global_objects/reflect/get/index.html | 99 +++ .../reference/global_objects/reflect/index.html | 153 +++++ .../global_objects/reflect/ownkeys/index.html | 89 +++ .../global_objects/regexp/@@search/index.html | 116 ++++ .../global_objects/regexp/@@split/index.html | 113 ++++ .../global_objects/regexp/exec/index.html | 228 +++++++ .../global_objects/regexp/flags/index.html | 120 ++++ .../global_objects/regexp/global/index.html | 115 ++++ .../global_objects/regexp/ignorecase/index.html | 115 ++++ .../reference/global_objects/regexp/index.html | 665 +++++++++++++++++++++ .../global_objects/regexp/input/index.html | 55 ++ .../global_objects/regexp/lastindex/index.html | 130 ++++ .../global_objects/regexp/lastmatch/index.html | 54 ++ .../global_objects/regexp/multiline/index.html | 115 ++++ .../reference/global_objects/regexp/n/index.html | 64 ++ .../global_objects/regexp/prototype/index.html | 140 +++++ .../global_objects/regexp/source/index.html | 121 ++++ .../global_objects/regexp/sticky/index.html | 139 +++++ .../global_objects/regexp/test/index.html | 143 +++++ .../global_objects/regexp/tosource/index.html | 106 ++++ .../global_objects/regexp/tostring/index.html | 116 ++++ .../global_objects/regexp/unicode/index.html | 70 +++ .../reference/global_objects/set/add/index.html | 76 +++ .../reference/global_objects/set/clear/index.html | 74 +++ .../reference/global_objects/set/delete/index.html | 93 +++ .../global_objects/set/entries/index.html | 71 +++ .../global_objects/set/foreach/index.html | 110 ++++ .../reference/global_objects/set/has/index.html | 91 +++ .../reference/global_objects/set/index.html | 242 ++++++++ .../global_objects/set/prototype/index.html | 80 +++ .../reference/global_objects/set/set/index.html | 72 +++ .../reference/global_objects/set/size/index.html | 68 +++ .../reference/global_objects/set/values/index.html | 72 +++ .../global_objects/sharedarraybuffer/index.html | 209 +++++++ .../global_objects/string/@@iterator/index.html | 131 ++++ .../global_objects/string/anchor/index.html | 131 ++++ .../reference/global_objects/string/big/index.html | 112 ++++ .../global_objects/string/blink/index.html | 117 ++++ .../global_objects/string/bold/index.html | 114 ++++ .../global_objects/string/charat/index.html | 270 +++++++++ .../global_objects/string/charcodeat/index.html | 205 +++++++ .../global_objects/string/codepointat/index.html | 174 ++++++ .../global_objects/string/concat/index.html | 121 ++++ .../global_objects/string/endswith/index.html | 145 +++++ .../global_objects/string/fixed/index.html | 108 ++++ .../global_objects/string/fontcolor/index.html | 119 ++++ .../global_objects/string/fontsize/index.html | 118 ++++ .../global_objects/string/fromcharcode/index.html | 138 +++++ .../global_objects/string/fromcodepoint/index.html | 213 +++++++ .../global_objects/string/includes/index.html | 127 ++++ .../reference/global_objects/string/index.html | 301 ++++++++++ .../global_objects/string/indexof/index.html | 194 ++++++ .../global_objects/string/italics/index.html | 114 ++++ .../global_objects/string/lastindexof/index.html | 155 +++++ .../global_objects/string/length/index.html | 116 ++++ .../global_objects/string/link/index.html | 131 ++++ .../global_objects/string/localecompare/index.html | 196 ++++++ .../global_objects/string/match/index.html | 177 ++++++ .../global_objects/string/matchall/index.html | 120 ++++ .../global_objects/string/normalize/index.html | 174 ++++++ .../global_objects/string/padend/index.html | 94 +++ .../global_objects/string/padstart/index.html | 92 +++ .../global_objects/string/prototype/index.html | 229 +++++++ .../global_objects/string/quote/index.html | 124 ++++ .../reference/global_objects/string/raw/index.html | 153 +++++ .../global_objects/string/repeat/index.html | 124 ++++ .../global_objects/string/replace/index.html | 289 +++++++++ .../global_objects/string/replaceall/index.html | 167 ++++++ .../global_objects/string/search/index.html | 149 +++++ .../global_objects/string/slice/index.html | 173 ++++++ .../global_objects/string/small/index.html | 109 ++++ .../global_objects/string/split/index.html | 229 +++++++ .../global_objects/string/startswith/index.html | 81 +++ .../global_objects/string/strike/index.html | 114 ++++ .../reference/global_objects/string/sub/index.html | 109 ++++ .../global_objects/string/substr/index.html | 116 ++++ .../global_objects/string/substring/index.html | 194 ++++++ .../reference/global_objects/string/sup/index.html | 109 ++++ .../string/tolocalelowercase/index.html | 110 ++++ .../string/tolocaleuppercase/index.html | 110 ++++ .../global_objects/string/tolowercase/index.html | 109 ++++ .../global_objects/string/tosource/index.html | 91 +++ .../global_objects/string/tostring/index.html | 111 ++++ .../global_objects/string/touppercase/index.html | 109 ++++ .../global_objects/string/trim/index.html | 135 +++++ .../global_objects/string/trimleft/index.html | 93 +++ .../global_objects/string/trimright/index.html | 93 +++ .../global_objects/string/valueof/index.html | 120 ++++ .../global_objects/symbol/@@toprimitive/index.html | 66 ++ .../reference/global_objects/symbol/for/index.html | 140 +++++ .../global_objects/symbol/hasinstance/index.html | 71 +++ .../reference/global_objects/symbol/index.html | 227 +++++++ .../symbol/isconcatspreadable/index.html | 148 +++++ .../global_objects/symbol/iterator/index.html | 135 +++++ .../global_objects/symbol/keyfor/index.html | 87 +++ .../global_objects/symbol/match/index.html | 113 ++++ .../global_objects/symbol/prototype/index.html | 106 ++++ .../global_objects/symbol/replace/index.html | 99 +++ .../global_objects/symbol/search/index.html | 54 ++ .../global_objects/symbol/species/index.html | 116 ++++ .../global_objects/symbol/split/index.html | 53 ++ .../global_objects/symbol/toprimitive/index.html | 92 +++ .../global_objects/symbol/tostringtag/index.html | 89 +++ .../global_objects/symbol/unscopables/index.html | 89 +++ .../global_objects/symbol/valueof/index.html | 94 +++ .../global_objects/syntaxerror/index.html | 174 ++++++ .../syntaxerror/prototype/index.html | 122 ++++ .../global_objects/typedarray/@@species/index.html | 130 ++++ .../typedarray/bytes_per_element/index.html | 119 ++++ .../reference/global_objects/typedarray/index.html | 258 ++++++++ .../global_objects/typedarray/join/index.html | 133 +++++ .../global_objects/typedarray/prototype/index.html | 128 ++++ .../global_objects/typedarray/set/index.html | 140 +++++ .../reference/global_objects/typeerror/index.html | 131 ++++ .../global_objects/typeerror/prototype/index.html | 122 ++++ .../global_objects/uint16array/index.html | 199 ++++++ .../global_objects/uint32array/index.html | 199 ++++++ .../reference/global_objects/uint8array/index.html | 199 ++++++ .../global_objects/uint8clampedarray/index.html | 256 ++++++++ .../reference/global_objects/undefined/index.html | 143 +++++ .../reference/global_objects/unescape/index.html | 126 ++++ .../reference/global_objects/uneval/index.html | 73 +++ .../reference/global_objects/urierror/index.html | 163 +++++ .../global_objects/urierror/prototype/index.html | 122 ++++ .../global_objects/weakmap/clear/index.html | 91 +++ .../global_objects/weakmap/delete/index.html | 114 ++++ .../global_objects/weakmap/get/index.html | 115 ++++ .../global_objects/weakmap/has/index.html | 118 ++++ .../reference/global_objects/weakmap/index.html | 158 +++++ .../global_objects/weakmap/prototype/index.html | 74 +++ .../global_objects/weakmap/set/index.html | 120 ++++ .../global_objects/weakset/add/index.html | 77 +++ .../global_objects/weakset/delete/index.html | 123 ++++ .../global_objects/weakset/has/index.html | 124 ++++ .../reference/global_objects/weakset/index.html | 109 ++++ .../global_objects/weakset/prototype/index.html | 141 +++++ .../global_objects/webassembly/compile/index.html | 83 +++ .../webassembly/compilestreaming/index.html | 79 +++ .../global_objects/webassembly/index.html | 161 +++++ .../global_objects/webassembly/table/index.html | 104 ++++ 485 files changed, 66191 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/@@species/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/concat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/copywithin/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/entries/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/every/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/fill/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/filter/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/find/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/findindex/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/flat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/flatmap/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/foreach/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/from/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/includes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/indexof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/isarray/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/join/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/keys/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/length/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/map/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/observe/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/of/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/pop/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/push/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/reduce/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/reduceright/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/reverse/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/shift/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/slice/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/some/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/sort/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/splice/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/unshift/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/array/values/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/arraybuffer/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/add/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/atomics/sub/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/bigint/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/boolean/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/dataview/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getdate/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getday/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/gethours/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getminutes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getmonth/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/gettime/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcday/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutchours/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/getyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/now/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/parse/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setdate/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/sethours/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setminutes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setmonth/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/settime/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutchours/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/setyear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/todatestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/toisostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tojson/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/totimestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/utc/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/date/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/decodeuri/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/encodeuri/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/filename/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/linenumber/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/message/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/name/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/stack/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/escape/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/eval/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/evalerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/float32array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/float64array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/apply/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/arguments/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/arity/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/bind/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/call/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/caller/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/displayname/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/length/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/name/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/function/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generator/next/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generator/return/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generator/throw/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generatorfunction/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/globalthis/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/infinity/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/int16array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/int32array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/int8array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/internalerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/collator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/listformat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/isfinite/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/isnan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/iterator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/json/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/json/parse/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/json/stringify/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/@@species/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/clear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/delete/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/entries/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/foreach/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/get/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/has/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/keys/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/size/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/map/values/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/abs/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/acos/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/acosh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/asin/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/asinh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/atan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/atan2/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/atanh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/cbrt/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/ceil/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/clz32/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/cos/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/cosh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/e/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/exp/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/expm1/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/floor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/fround/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/hypot/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/imul/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/ln10/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/ln2/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log10/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log10e/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log1p/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log2/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/log2e/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/max/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/min/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/pi/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/pow/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/random/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/round/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sign/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sin/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sinh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sqrt/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/tan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/tanh/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/math/trunc/index.html create mode 100644 "files/ru/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" create mode 100644 files/ru/web/javascript/reference/global_objects/nan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/null/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/epsilon/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/isfinite/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/isinteger/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/isnan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/max_value/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/min_value/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/nan/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/parseint/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/toexponential/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/tofixed/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/tointeger/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/toprecision/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/number/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/assign/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/constructor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/count/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/create/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/entries/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/eval/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/freeze/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/fromentries/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/is/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/isextensible/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/issealed/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/keys/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/observe/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/parent/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/proto/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/seal/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/unobserve/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/unwatch/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/values/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/object/watch/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/parallelarray/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/parsefloat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/parseint/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/all/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/any/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/catch/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/finally/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/race/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/reject/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/resolve/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/promise/then/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/handler/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/rangeerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/referenceerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/apply/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/construct/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/get/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/exec/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/flags/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/global/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/input/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/n/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/source/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/test/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/add/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/clear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/delete/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/entries/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/foreach/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/has/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/size/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/set/values/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/anchor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/big/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/blink/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/bold/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/charat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/codepointat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/concat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/endswith/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/fixed/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/fontsize/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/includes/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/indexof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/italics/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/length/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/link/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/localecompare/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/match/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/matchall/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/normalize/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/padend/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/padstart/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/quote/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/raw/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/repeat/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/replace/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/replaceall/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/search/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/slice/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/small/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/split/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/startswith/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/strike/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/sub/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/substr/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/substring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/sup/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/tostring/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/touppercase/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/trim/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/trimleft/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/trimright/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/string/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/for/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/match/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/replace/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/search/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/species/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/split/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/syntaxerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/join/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typedarray/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typeerror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/uint16array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/uint32array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/uint8array/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/undefined/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/unescape/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/uneval/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/urierror/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/get/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/has/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakmap/set/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakset/add/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakset/delete/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakset/has/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakset/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/webassembly/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/webassembly/table/index.html (limited to 'files/ru/web/javascript/reference/global_objects') diff --git a/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html new file mode 100644 index 0000000000..9de1e97f40 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html @@ -0,0 +1,138 @@ +--- +title: 'Array.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Начальное значение свойства @@iterator является тем же самым функциональным объектом, что и начальное значение, возвращаемое методом {{jsxref("Array.prototype.values()", "values()")}}.

+ +

Синтаксис

+ +
arr[Symbol.iterator]()
+ +

Примеры

+ +

Пример: итерация посредством цикла for...of

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+// ваш браузер должен поддерживать цикл for..of
+// и переменные с областью видимости let в циклах for
+for (let letter of arr) {
+  console.log(letter);
+}
+
+ +

Пример: альтернативный способ итерации

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var eArr = arr[Symbol.iterator]();
+console.log(eArr.next().value); // w
+console.log(eArr.next().value); // y
+console.log(eArr.next().value); // k
+console.log(eArr.next().value); // o
+console.log(eArr.next().value); // p
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("17")}} (.iterator)
+ {{CompatGeckoDesktop("27")}} (["@@iterator"])
+ {{CompatGeckoDesktop("36")}} ([Symbol.iterator])
{{CompatNo}}{{CompatOpera("25")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("17")}} (.iterator)
+ {{CompatGeckoMobile("27")}} (["@@iterator"])
+ {{CompatGeckoMobile("36")}} ([Symbol.iterator])
{{CompatNo}}{{CompatOpera("25")}}{{CompatNo}}
+
+ +

Примечания по Gecko

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/@@species/index.html b/files/ru/web/javascript/reference/global_objects/array/@@species/index.html new file mode 100644 index 0000000000..696d2b6312 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@species/index.html @@ -0,0 +1,78 @@ +--- +title: 'get Array[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@species +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species +--- +
{{JSRef}}
+ +

Метод Array[@@species]возвращает конструктор Array .

+ +

Синтаксис

+ +
Array[Symbol.species]
+
+ +

Возвращаемое значение

+ +

Конструктор {{jsxref("Array")}}.

+ +

Описание

+ +

Метод species  возвращает стандартный конструктор обьектов Array . Дочерние элементы могут переопределить метод для смены назначения конструктора.

+ +

Примеры

+ +

Метод species возвращает стандартное значение функции конструктора, то есть
+  Array конструктор для Array обьектов:

+ +
Array[Symbol.species]; // функция Array()
+ +

В полученном обьекте (на примере обычного массива MyArray),  MyArray является конструктором MyArray. В случае, если вы захотите вернуть родительские обьекты Array в полученных классовых методах, вы можете переопределить метод:

+ +
class MyArray extends Array {
+  //  Переписывает тип MyArray в родительский конструктор Array
+  static get [Symbol.species]() { return Array; }
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ES6')}}Изначальное
+ определение.
{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.@@species")}}

+
+ +

Смотрите также:

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html new file mode 100644 index 0000000000..7e4e7c9daa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html @@ -0,0 +1,76 @@ +--- +title: 'Array.prototype[@@unscopables]' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +tags: + - ECMAScript 2015 + - JavaScript + - Property + - Prototype + - Массив +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +--- +
{{JSRef}}
+ +

Свойства символа @@unscopable содержат свойства имён, которые не были включены в ECMAScript до версии ES2015. Эти свойства исключены из привязок оператора with.

+ +

Синтаксис

+ +
arr[Symbol.unscopables]
+ +

Описание

+ +

Стандартные свойства массива, которые исключены из привязок  with: copyWithin, entries, fill, find, findIndex, includes, keys, и values.

+ +

См. {{jsxref("Symbol.unscopables")}} о том, как установить unscopables для Ваших собственных объектов.

+ +

{{js_property_attributes(0,0,1)}}

+ +

Примеры

+ +

Приведённый код отлично работает в ES5 и ниже. Однако в ECMAScript 2015 и более поздних версиях был введён метод  {{jsxref("Array.prototype.keys()")}}. Это означает, что внутри окружения with, "ключи" будут методом, а не пременной. Вот где теперь встроенные свойства символа {{jsxref("Array.prototype[@@unscopables]")}} вступают в игру и препятствуют тому, чтобы некоторые из методов Array были включены в оператор with.

+ +
var keys = [];
+
+with (Array.prototype) {
+  keys.push('что-то');
+}
+
+Object.keys(Array.prototype[Symbol.unscopables]);
+// ["copyWithin", "entries", "fill", "find", "findIndex",
+//  "includes", "keys", "values"]
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.@@unscopables")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/concat/index.html b/files/ru/web/javascript/reference/global_objects/array/concat/index.html new file mode 100644 index 0000000000..b3c2fa6eea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/concat/index.html @@ -0,0 +1,135 @@ +--- +title: Array.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/Array/concat +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat +--- +
{{JSRef}}
+ +

Метод concat() возвращает новый массив, состоящий из массива, на котором он был вызван, соединённого с другими массивами и/или значениями, переданными в качестве аргументов.

+ +
{{EmbedInteractiveExample("pages/js/array-concat.html")}}
+ + + +

Синтаксис

+ +
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
+ +

Параметры

+ +
+
valueN
+
Массивы и/или значения, соединяемые в новый массив. Смотрите описание ниже.
+
+ +

Возвращаемое значение

+ +

Новый экземпляр {{jsxref("Array")}}.

+ +

Описание

+ +

Метод concat создаёт новый массив, состоящий из элементов в объекте, на котором он был вызван, за которыми по порядку следуют, для каждого аргумента, все его элементы (если аргумент является массивом), либо сам аргумент (если он массивом не является).

+ +

Метод concat не изменяет данный массив или любой из массивов, переданных в аргументах, а вместо этого возвращает поверхностную копию, содержащую копии тех элементов, что были объединены с исходными массивами. Элементы оригинальных массивов копируются в новый массив по следующим правилам:

+ + + +
+

Примечание: Соединение массивов и/или значений в новый массив оставит соединяемые массивы/значения неизменными. Кроме того, любая операция над новым массивом (если только элемент не является ссылкой) не будет затрагивать исходные массивы и наоборот.

+
+ +

Примеры

+ +

Соединение двух массивов

+ +

Следующий код соединяет два массива:

+ +
var alpha = ['a', 'b', 'c'],
+    numeric = [1, 2, 3];
+
+var alphaNumeric = alpha.concat(numeric);
+
+console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]
+
+ +

Соединение трёх массивов

+ +

Следующий код соединяет три массива:

+ +
var num1 = [1, 2, 3],
+    num2 = [4, 5, 6],
+    num3 = [7, 8, 9];
+
+var nums = num1.concat(num2, num3);
+
+console.log(nums); // Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+ +

Соединение значений в массив

+ +

Следующий код соединяет три значения в массив:

+ +
var alpha = ['a', 'b', 'c'];
+
+var alphaNumeric = alpha.concat(1, [2, 3]);
+
+console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.concat")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html b/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html new file mode 100644 index 0000000000..a914888989 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html @@ -0,0 +1,216 @@ +--- +title: Array.prototype.copyWithin() +slug: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод copyWithin() копирует последовательность элементов массива внутри него в позицию, начинающуюся по индексу target. Копия берётся по индексам, задаваемым вторым и третьим аргументами start и end. Аргумент end является необязательным и по умолчанию равен длине массива.

+ +

Синтаксис

+ +
arr.copyWithin(target, start[, end = this.length])
+ +

Параметры

+ +
+
target
+
Начальный индекс позиции цели, куда копировать элементы.
+
start
+
Начальный индекс позиции источника, откуда начинать копировать элементы.
+
end
+
Необязательный параметр. Конечный индекс позиции источника, где заканчивать копировать элементы.
+
+ +

Описание

+ +

Аргументы target, start и end приводятся к {{jsxref("Global_Objects/Number", "Number")}} и обрезаются до целых значений.

+ +

Если аргумент start является отрицательным, он трактуется как length+start где length — это длина массива. Если аргумент end является отрицательным, он трактуется как length+end.

+ +

Функция copyWithin намеренно является обобщённой, она не требует, чтобы значение this внутри неё было объектом {{jsxref("Global_Objects/Array", "Array")}}, и кроме того, функция copyWithin является изменяющим методом, она изменит объект this и вернёт его, а не просто вернёт копию.

+ +

Примеры

+ +
[1, 2, 3, 4, 5].copyWithin(0, 3);
+// [4, 5, 3, 4, 5]
+
+[1, 2, 3, 4, 5].copyWithin(0, 3, 4);
+// [4, 2, 3, 4, 5]
+
+[1, 2, 3, 4, 5].copyWithin(0, -2, -1);
+// [4, 2, 3, 4, 5]
+
+[].copyWithin.call({length: 5, 3: 1}, 0, 3);
+// {0: 1, 3: 1, length: 5}
+
+// Типизированные массивы ES6 являются подклассами Array
+var i32a = new Int32Array([1, 2, 3, 4, 5]);
+
+i32a.copyWithin(0, 2);
+// Int32Array [3, 4, 5, 4, 5]
+
+// На платформах, которые ещё не совместимы с ES6:
+[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
+// Int32Array [4, 2, 3, 4, 5]
+
+ +

Полифилл

+ +
if (!Array.prototype.copyWithin) {
+  Array.prototype.copyWithin = function(target, start/*, end*/) {
+    // Шаги 1-2.
+    if (this == null) {
+      throw new TypeError('this is null or not defined');
+    }
+
+    var O = Object(this);
+
+    // Шаги 3-5.
+    var len = O.length >>> 0;
+
+    // Шаги 6-8.
+    var relativeTarget = target >> 0;
+
+    var to = relativeTarget < 0 ?
+      Math.max(len + relativeTarget, 0) :
+      Math.min(relativeTarget, len);
+
+    // Шаги 9-11.
+    var relativeStart = start >> 0;
+
+    var from = relativeStart < 0 ?
+      Math.max(len + relativeStart, 0) :
+      Math.min(relativeStart, len);
+
+    // Шаги 12-14.
+    var end = arguments[2];
+    var relativeEnd = end === undefined ? len : end >> 0;
+
+    var final = relativeEnd < 0 ?
+      Math.max(len + relativeEnd, 0) :
+      Math.min(relativeEnd, len);
+
+    // Шаг 15.
+    var count = Math.min(final - from, len - to);
+
+    // Шаги 16-17.
+    var direction = 1;
+
+    if (from < to && to < (from + count)) {
+      direction = -1;
+      from += count - 1;
+      to += count - 1;
+    }
+
+    // Шаг 18
+    while (count > 0) {
+      if (from in O) {
+        O[to] = O[from];
+      } else {
+        delete O[to];
+      }
+
+      from += direction;
+      to += direction;
+      count--;
+    }
+
+    // Шаг 19.
+    return O;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerEdgeOperaSafari
Базовая поддержка{{CompatChrome("45")}}{{CompatGeckoDesktop("32")}}{{CompatNo}}12{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("32")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/entries/index.html b/files/ru/web/javascript/reference/global_objects/array/entries/index.html new file mode 100644 index 0000000000..291b14e5c0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/entries/index.html @@ -0,0 +1,116 @@ +--- +title: Array.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Array/entries +tags: + - Array + - ECMAScript6 + - Experimental + - Iterator + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод entries() возвращает новый объект итератора массива Array Iterator, содержащий пары ключ / значение для каждого индекса в массиве.

+ +

Синтаксис

+ +
arr.entries()
+ +

Описание

+ +
var arr = ['a', 'b', 'c'];
+var eArr = arr.entries();
+
+console.log(eArr.next().value); // [0, 'a']
+console.log(eArr.next().value); // [1, 'b']
+console.log(eArr.next().value); // [2, 'c']
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("28")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("28")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/every/index.html b/files/ru/web/javascript/reference/global_objects/array/every/index.html new file mode 100644 index 0000000000..db333915d9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/every/index.html @@ -0,0 +1,195 @@ +--- +title: Array.prototype.every() +slug: Web/JavaScript/Reference/Global_Objects/Array/every +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/every +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод every() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.

+ +
+

Обратите внимание: метод возвращает true при любом условии для пустого массива.

+
+ +

Синтаксис

+ +
arr.every(callback(currentValue[, index[, array]])[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция проверки каждого элемента, принимает три аргумента: +
+
currentValue
+
Текущий обрабатываемый элемент массива.
+
index{{Optional_inline}}
+
Индекс текущего обрабатываемого элемента массива.
+
array{{Optional_inline}}
+
Массив, по которому осуществляется проход.
+
+
+
thisArg{{Optional_inline}}
+
Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback.
+
+ +

Возвращаемое значение

+ +

true если функция проверки возвращает {{Glossary("truthy")}} значение для каждого элемента массива. Иначе, false.

+ +

Описание

+ +

Метод every() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого callback вернет ложное значение (значение, становящееся равным false при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод every() немедленно вернёт false. В противном случае, если callback вернёт true для всех элементов массива, метод every() вернёт true. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод every() был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно обычным правилам определения this, видимого из функции.

+ +

Метод every() не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом every(), устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода every(), не будут посещены функцией callback. Если существующие элементы массива изменятся, значения, переданные в функцию callback, будут значениями на тот момент времени, когда метод every() посетит их; удалённые элементы посещены не будут.

+ +

Метод every() действует подобно квантору всеобщности в математике. В частности, он вернёт true для пустого массива. Это так называемая бессодержательная истина (vacuously true) — все элементы пустого множества (англ.) удовлетворяют любому заданному условию.

+ +

Примеры

+ +

Пример: проверка размера всех элементов массива

+ +

Следующий пример проверяет, являются ли все элементы массива числами, большими 10.

+ +
function isBigEnough(element, index, array) {
+  return element >= 10;
+}
+[12, 5, 8, 130, 44].every(isBigEnough);   // false
+[12, 54, 18, 130, 44].every(isBigEnough); // true
+
+ +

Пример: использование стрелочных функций

+ +

Стрелочные функции предоставляют более краткий синтаксис для подобных проверок.

+ +
[12, 5, 8, 130, 44].every(elem => elem >= 10);   // false
+[12, 54, 18, 130, 44].every(elem => elem >= 10); // true
+
+ +

Полифилл

+ +

Метод every() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать every() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает что {{jsxref("Object")}} и {{jsxref("TypeError")}} имеют свои первоначальные значения и что callback.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.

+ +
if (!Array.prototype.every) {
+  Array.prototype.every = function(callbackfn, thisArg) {
+    'use strict';
+    var T, k;
+
+    if (this == null) {
+      throw new TypeError('this is null or not defined');
+    }
+
+    // 1. Положим O равным результату вызова ToObject над значением
+    //    this, переданным в качестве аргумента.
+    var O = Object(this);
+
+    // 2. Положим lenValue равным результату вызова внутреннего метода Get
+    //    объекта O с аргументом "length".
+    // 3. Положим len равным ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. Если IsCallable(callbackfn) равен false, выкинем исключение TypeError.
+    if (typeof callbackfn !== 'function') {
+      throw new TypeError();
+    }
+
+    // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
+    if (arguments.length > 1) {
+      T = thisArg;
+    }
+
+    // 6. Положим k равным 0.
+    k = 0;
+
+    // 7. Пока k < len, будем повторять
+    while (k < len) {
+
+      var kValue;
+
+      // a. Положим Pk равным ToString(k).
+      //   Это неявное преобразование для левостороннего операнда в операторе in
+      // b. Положим kPresent равным результату вызова внутреннего метода
+      //    HasProperty объекта O с аргументом Pk.
+      //   Этот шаг может быть объединён с шагом c
+      // c. Если kPresent равен true, то
+      if (k in O) {
+
+        // i. Положим kValue равным результату вызова внутреннего метода Get
+        //    объекта O с аргументом Pk.
+        kValue = O[k];
+
+        // ii. Положим testResult равным результату вызова внутреннего метода Call
+        //     функции callbackfn со значением T в качестве this и списком аргументов,
+        //     содержащим kValue, k и O.
+        var testResult = callbackfn.call(T, kValue, k, O);
+
+        // iii. Если ToBoolean(testResult) равен false, вернём false.
+        if (!testResult) {
+          return false;
+        }
+      }
+      k++;
+    }
+    return true;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Array.every")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/fill/index.html b/files/ru/web/javascript/reference/global_objects/array/fill/index.html new file mode 100644 index 0000000000..1bef1fd1ea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/fill/index.html @@ -0,0 +1,159 @@ +--- +title: Array.prototype.fill() +slug: Web/JavaScript/Reference/Global_Objects/Array/fill +tags: + - Array + - ECMAScript2015 + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill +--- +
{{JSRef}}
+ +

Метод fill() заполняет все элементы массива от начального до конечного индексов одним значением.

+ +
{{EmbedInteractiveExample("pages/js/array-fill.html")}}
+ + + +

Синтаксис

+ +
arr.fill(value[, start = 0[, end = this.length]])
+ +

Параметры

+ +
+
value
+
Значение, заполняющее массив.
+
start
+
Необязательный параметр. Начальный индекс.
+
end
+
Необязательный параметр. Конечный индекс.
+
+

Возвращаемое значение

+ +

Изменённый массив.

+
+
+ +

Описание

+ +

Элементы заполняются в полузакрытом интервале [start, end).

+ +

Метод fill принимает до трёх аргументов — value, start и end. Аргументы start и end являются необязательными со значениями по умолчанию, равными 0 и length объекта this соответственно.

+ +

Если аргумент start является отрицательным, он трактуется как length+start, где length — это длина массива. Если аргумент end является отрицательным, он трактуется как length+end.

+ +

Метод fill намеренно является обобщённым, он не требует, чтобы значение this внутри него было объектом Array.

+ +

Метод fill является изменяющим методом, он изменит объект this и вернёт его, а не просто вернёт копию.

+ +

Если аргумент value​​​​​ является объектом, тo метод fill заполнит массив ссылками на этот объект.

+ +

Примеры

+ +
[1, 2, 3].fill(4);               // [4, 4, 4]
+[1, 2, 3].fill(4, 1);            // [1, 4, 4]
+[1, 2, 3].fill(4, 1, 2);         // [1, 4, 3]
+[1, 2, 3].fill(4, 1, 1);         // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 3);         // [1, 2, 3]
+[1, 2, 3].fill(4, -3, -2);       // [4, 2, 3]
+[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
+[1, 2, 3].fill(4, 3, 5);         // [1, 2, 3]
+Array(3).fill(4);                // [4, 4, 4]
+[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}
+
+// Объекты заполняются по ссылке.
+var arr = Array(3).fill({}) // [{}, {}, {}];
+arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
+ +

Полифилл

+ +
if (!Array.prototype.fill) {
+  Object.defineProperty(Array.prototype, 'fill', {
+    value: function(value) {
+
+      // Шаги 1-2.
+      if (this == null) {
+        throw new TypeError('this is null or not defined');
+      }
+
+      var O = Object(this);
+
+      // Шаги 3-5.
+      var len = O.length >>> 0;
+
+      // Шаги 6-7.
+      var start = arguments[1];
+      var relativeStart = start >> 0;
+
+      // Шаг 8.
+      var k = relativeStart < 0 ?
+        Math.max(len + relativeStart, 0) :
+        Math.min(relativeStart, len);
+
+      // Шаги 9-10.
+      var end = arguments[2];
+      var relativeEnd = end === undefined ?
+        len : end >> 0;
+
+      // Шаг 11.
+      var final = relativeEnd < 0 ?
+        Math.max(len + relativeEnd, 0) :
+        Math.min(relativeEnd, len);
+
+      // Шаг 12.
+      while (k < final) {
+        O[k] = value;
+        k++;
+      }
+
+      // Шаг 13.
+      return O;
+    }
+  });
+}
+ +

Если вам нужно поддерживать действительно устаревшие движки JavaScript, которые не поддерживают Object.defineProperty, то лучше вообще не использовать полифилы для методов Array.prototype, так как вы не можете сделать их не перечисляемыми.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.fill")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/filter/index.html b/files/ru/web/javascript/reference/global_objects/array/filter/index.html new file mode 100644 index 0000000000..16333b09c6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/filter/index.html @@ -0,0 +1,302 @@ +--- +title: Array.prototype.filter() +slug: Web/JavaScript/Reference/Global_Objects/Array/filter +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - filter + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter +--- +
{{JSRef}}
+ +

Метод filter() создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.

+ +
{{EmbedInteractiveExample("pages/js/array-filter.html")}}
+ + + +

Синтаксис

+ +
let newArray = arr.filter(callback(element[, index, [array]])[, thisArg])
+
+ +

Параметры

+ +
+
callback
+
Функция, которая будет вызвана для каждого элемента массива. Если функция возвращает true, то элемент остаётся в массиве, если false, то удаляется.
+
В функцию будет передано три аргумента:
+
+
+
element
+
Текущий обрабатываемый элемент в массиве.
+
index{{optional_inline}}
+
Индекс текущего обрабатываемого элемента в массиве.
+
array{{optional_inline}}
+
Массив, по которому осуществляется проход.
+
+
+
thisArg {{optional_inline}}
+
Значение, используемое в качестве this при вызове функции callback.
+
+ +

Возвращаемое значение

+ +

Вернётся новый массив с элементами, которые проходят тест, то есть callback вернёт true. Если ни один элемент не пройдёт тест, то будет возвращён пустой массив.

+ +

Описание

+ +

Метод filter() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, и конструирует новый массив со всеми значениями, для которых функция callback вернула true или {{Glossary('Truthy', 'значение, становящееся true при приведении в boolean')}}. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались. Элементы массива, не прошедшие проверку функцией callback, просто пропускаются и не включаются в новый массив.

+ +

Функция callback вызывается с тремя аргументами:

+ +
    +
  1. значение элемента;
  2. +
  3. индекс элемента;
  4. +
  5. массив, по которому осуществляется проход.
  6. +
+ +

Если в метод filter() был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае, в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно {{jsxref('Operators/this', 'обычным правилам определения this, видимого из функции')}}.

+ +

Метод filter() не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом filter(), устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода filter(), не будут посещены функцией callback. Если существующие элементы массива изменятся, значения, переданные в функцию callback, будут значениями на тот момент времени, когда метод filter() посетит их; удалённые элементы посещены не будут.

+ +

Примеры

+ +

Отфильтровывание всех маленьких значений

+ +

Следующий пример использует filter() для создания отфильтрованного массива, все элементы которого больше или равны 10, а все меньшие 10 удалены.

+ +
function isBigEnough(value) {
+  return value >= 10;
+}
+
+let filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
+// массив filtered равен [12, 130, 44]
+
+ +

Найти все простые числа в массиве

+ +

Следующий пример возвращает все простые числа в массиве:

+ +
let array = [4, 6, 8, 9, 12, 53, -17, 2, 5, 7, 31, 97, -1, 17];
+
+function isPrime(num) {
+    if (num <= 1)
+        return false;
+    else if (num === 2)
+        return true;
+    else {
+        for (let i = 2; i < num; i++)
+            if (num % i === 0)
+                return false;
+        return true;
+    }
+}
+
+console.log(array.filter(isPrime));   // [53, 2, 5, 7, 31, 97, 17]
+ +

Фильтрация неверных записей в JSON

+ +

В следующем примере метод filter() используется для создания отфильтрованного объекта JSON, все элементы которого содержат ненулевое числовое поле id.

+ +
var arr = [
+    { id: 15 },
+    { id: -1 },
+    { id: 0 },
+    { id: 3 },
+    { id: 12.2 },
+    { },
+    { id: null },
+    { id: NaN },
+    { id: 'undefined' }
+];
+
+var invalidEntries = 0;
+
+function isNumber(obj) {
+    return obj!== undefined && typeof(obj) === 'number' && !isNaN(obj);
+}
+
+function filterByID(item) {
+    if (isNumber(item.id) && item.id !== 0) {
+        return true;
+    }
+    invalidEntries++;
+    return false;
+}
+
+var arrByID = arr.filter(filterByID);
+
+console.log('Отфильтрованный массив\n', arrByID);
+// Filtered Array
+// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
+
+console.log('Количество ошибочных записей = ', invalidEntries);
+// Number of Invalid Entries = 5
+
+
+ +

Поиск в массиве

+ +

В следующем примере filter() используется для фильтрации содержимого массива на основе входных данных.

+ +
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Элементы массива фильтруется на основе критериев поиска (query)
+*/
+function filterItems(query) {
+  return fruits.filter(function(el) {
+      return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
+  })
+}
+
+console.log(filterItems('ap')); // ['apple', 'grapes']
+console.log(filterItems('an')); // ['banana', 'mango', 'orange']
+ +

ES2015 реализация

+ +
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Элементы массива фильтруется на основе критериев поиска (query)
+ */
+const filterItems = (query) => {
+  return fruits.filter((el) =>
+    el.toLowerCase().indexOf(query.toLowerCase()) > -1
+  );
+}
+
+console.log(filterItems('ap')); // ['apple', 'grapes']
+console.log(filterItems('an')); // ['banana', 'mango', 'orange']
+
+
+ +

Влияние на начальный массив (изменение, добавление и удаление)

+ +

В следующих примерах проверяется поведение метода filter при изменении массива.

+ +
// Изменение всех элементов
+let words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present']
+
+const modifiedWords = words.filter( (word, index, arr) => {
+  arr[index+1] +=' extra'
+  return word.length < 6
+})
+
+console.log(modifiedWords)
+// Обратите внимание, что есть три слова длиной менее 6, но так как они были изменены,
+// возвращается одно слово ['spray']
+
+// Добавление новых элементов
+words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present']
+const appendedWords = words.filter( (word, index, arr) => {
+  arr.push('new')
+  return word.length < 6
+})
+
+console.log(appendedWords)
+// Только три слова удовлетворяют условию, хотя `words` теперь имеет куда больше слов,
+// длинной меньше 6 символов: ['spray', 'limit', 'elite']
+
+// Удаление элементов
+words = ['spray', 'limit', 'exuberant', 'destruction', 'elite', 'present']
+const deleteWords = words.filter( (word, index, arr) => {
+  arr.pop()
+  return word.length < 6
+})
+
+console.log(deleteWords)
+// Заметьте, что 'elite' не получено, так как удалено из `words` до того,
+// как filter смог получить его: ['spray', 'limit']
+ +

Полифилл

+ +

Метод filter() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать filter() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что fn.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}} и что {{jsxref("Array.prototype.push()")}} содержит своё оригинальное значение.

+ +
if (!Array.prototype.filter) {
+  Array.prototype.filter = function(fun/*, thisArg*/) {
+    'use strict';
+
+    if (this === void 0 || this === null) {
+      throw new TypeError();
+    }
+
+    var t = Object(this);
+    var len = t.length >>> 0;
+    if (typeof fun !== 'function') {
+      throw new TypeError();
+    }
+
+    var res = [];
+    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
+    for (var i = 0; i < len; i++) {
+      if (i in t) {
+        var val = t[i];
+
+        // ПРИМЕЧАНИЕ: Технически, здесь должен быть Object.defineProperty на
+        //             следующий индекс, поскольку push может зависеть от
+        //             свойств на Object.prototype и Array.prototype.
+        //             Но этот метод новый и коллизии должны быть редкими,
+        //             так что используем более совместимую альтернативу.
+        if (fun.call(thisArg, val, i, t)) {
+          res.push(val);
+        }
+      }
+    }
+
+    return res;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.filter")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/find/index.html b/files/ru/web/javascript/reference/global_objects/array/find/index.html new file mode 100644 index 0000000000..f4b8844a62 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/find/index.html @@ -0,0 +1,167 @@ +--- +title: Array.prototype.find() +slug: Web/JavaScript/Reference/Global_Objects/Array/find +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/find +--- +

{{JSRef}}

+ +

Сводка

+ +

Метод find() возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции.  В противном случае возвращается {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Также смотрите метод {{jsxref("Array.findIndex", "findIndex()")}}, который возвращает индекс найденного в массиве элемента вместо его значения.

+ +

Если вам нужно найти позицию элемента или наличие элемента в массиве, используйте {{jsxref("Array.prototype.indexOf()")}} или {{jsxref("Array.prototype.includes()")}} соответственно.

+ +

Синтаксис

+ +
arr.find(callback[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция, вызывающаяся для каждого значения в массиве, принимает три аргумента: +
+
element
+
Текущий обрабатываемый элемент в массиве.
+
index
+
Индекс текущего обрабатываемого элемента в массиве.
+
array
+
Массив, по которому осуществляется проход.
+
+
+
thisArg
+
Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback.
+
+ +

Возвращаемое значение

+ +

Значение элемента из массива, если элемент прошёл проверку, иначе {{jsxref("undefined")}}.

+ +

Описание

+ +

Метод find вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true. Если такой элемент найден, метод find немедленно вернёт значение этого элемента. В противном случае, метод find вернёт {{jsxref("Global_Objects/undefined", "undefined")}}. До Firefox 34 функция callback не вызывалась для «дырок» в массивах (bug 1058394).

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод find был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Метод find не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом find, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода find, не будут посещены функцией callback. Если существующие, непосещённые элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени когда метод find посетит их; удалённые элементы все еще будут посещены. 

+ +

Примеры

+ +

Пример: поиск простого числа в массиве

+ +

Следующий пример находит в массиве положительных чисел элемент, являющийся простым числом (либо возвращает {{jsxref("Global_Objects/undefined", "undefined")}}, если в массиве нет простых чисел).

+ +
function isPrime(element, index, array) {
+  var start = 2;
+  while (start <= Math.sqrt(element)) {
+    if (element % start++ < 1) {
+      return false;
+    }
+  }
+  return element > 1;
+}
+
+console.log([4, 6, 8, 12].find(isPrime)); // undefined, не найдено
+console.log([4, 5, 8, 12].find(isPrime)); // 5
+
+ +

Полифилл

+ +

Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий сниппет в качестве полифилла:

+ +
// https://tc39.github.io/ecma262/#sec-array.prototype.find
+if (!Array.prototype.find) {
+  Object.defineProperty(Array.prototype, 'find', {
+    value: function(predicate) {
+     // 1. Let O be ? ToObject(this value).
+      if (this == null) {
+        throw new TypeError('"this" is null or not defined');
+      }
+
+      var o = Object(this);
+
+      // 2. Let len be ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+      if (typeof predicate !== 'function') {
+        throw new TypeError('predicate must be a function');
+      }
+
+      // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+      var thisArg = arguments[1];
+
+      // 5. Let k be 0.
+      var k = 0;
+
+      // 6. Repeat, while k < len
+      while (k < len) {
+        // a. Let Pk be ! ToString(k).
+        // b. Let kValue be ? Get(O, Pk).
+        // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+        // d. If testResult is true, return kValue.
+        var kValue = o[k];
+        if (predicate.call(thisArg, kValue, k, o)) {
+          return kValue;
+        }
+        // e. Increase k by 1.
+        k++;
+      }
+
+      // 7. Return undefined.
+      return undefined;
+    },
+    configurable: true,
+    writable: true
+  });
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Array.find")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/findindex/index.html b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..7cbc30e738 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,138 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод findIndex() возвращает индекс в массиве, если элемент удовлетворяет условию проверяющей функции. В противном случае возвращается -1.

+ +

Также смотрите метод {{jsxref("Array.find", "find()")}}, который возвращает значение найденного в массиве элемента вместо его индекса.

+ +

Синтаксис

+ +
arr.findIndex(callback[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция, вызывающаяся для каждого значения в масиве, принимает три аргумента: +
+
element
+
Текущий обрабатываемый элемент в массиве.
+
index
+
Индекс текущего обрабатываемого элемента в массиве.
+
array
+
Массив, по которому осуществляется проход.
+
+
+
thisArg
+
Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback.
+
+ +

Описание

+ +

Метод findIndex вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true. Если такой элемент найден, метод findIndex немедленно вернёт индекс этого элемента. В противном случае, метод findIndex вернёт -1. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод findIndex был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Метод findIndex не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом findIndex, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода findIndex, не будут посещены функцией callback. Если существующие, непосещённые элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод findIndex посетит их; удалённые элементы посещены не будут.

+ +

Примеры

+ +

Пример: поиск индекса простого числа в массиве

+ +

Следующий пример находит в массиве индекс элемента, являющийся простым числом (либо возвращает -1, если в массиве нет простых чисел).

+ +
function isPrime(element, index, array) {
+  var start = 2;
+  while (start <= Math.sqrt(element)) {
+    if (element % start++ < 1) {
+      return false;
+    }
+  }
+  return element > 1;
+}
+
+console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, не найдено
+console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
+
+ +

Полифилл

+ +

Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий кусочек кода в качестве полифилла:

+ +
if (!Array.prototype.findIndex) {
+  Array.prototype.findIndex = function(predicate) {
+    if (this == null) {
+      throw new TypeError('Array.prototype.findIndex called on null or undefined');
+    }
+    if (typeof predicate !== 'function') {
+      throw new TypeError('predicate must be a function');
+    }
+    var list = Object(this);
+    var length = list.length >>> 0;
+    var thisArg = arguments[1];
+    var value;
+
+    for (var i = 0; i < length; i++) {
+      value = list[i];
+      if (predicate.call(thisArg, value, i, list)) {
+        return i;
+      }
+    }
+    return -1;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Array.findIndex")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/flat/index.html b/files/ru/web/javascript/reference/global_objects/array/flat/index.html new file mode 100644 index 0000000000..7ce48303ea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/flat/index.html @@ -0,0 +1,160 @@ +--- +title: Array.prototype.flat() +slug: Web/JavaScript/Reference/Global_Objects/Array/flat +tags: + - Массив + - Ссылка + - Экспериментальная + - метод + - прототип + - яваскрипт +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat +--- +
{{JSRef}}
+ +

Метод flat() возвращает новый массив, в котором все элементы вложенных подмассивов были рекурсивно "подняты" на указанный уровень depth.

+ + + + + +

Синтаксис

+ +
var newArray = arr.flat(depth);
+ +

Параметры

+ +
+
depth {{optional_inline}}
+
На сколько уровней вложенности уменьшается мерность исходного массива. По-умолчанию 1.
+
+ +

Возвращаемое значение

+ +

Новый массив с объединенными в него подмассивами.

+ +

Примеры

+ +

Упрощение вложенных массивов

+ +
var arr1 = [1, 2, [3, 4]];
+arr1.flat();
+// [1, 2, 3, 4]
+
+var arr2 = [1, 2, [3, 4, [5, 6]]];
+arr2.flat();
+// [1, 2, 3, 4, [5, 6]]
+
+var arr3 = [1, 2, [3, 4, [5, 6]]];
+arr3.flat(2);
+// [1, 2, 3, 4, 5, 6]
+
+var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
+arr4.flat(Infinity);
+// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ +

Упрощение и "дырки" в массивах

+ +

Метод flat удаляет пустые слоты из массива:

+ +
var arr4 = [1, 2, , 4, 5];
+arr4.flat();
+// [1, 2, 4, 5]
+
+ +

Альтернативы

+ +

reduce и concat

+ +
var arr1 = [1, 2, [3, 4]];
+arr1.flat();
+
+// В одномерный массив
+arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4]
+
+//или
+const flatSingle = arr => [].concat(...arr);
+
+ +
// Для развёртвания многомерных массивов используем рекурсию, reduce и concat
+const arr = [1, 2, [3, 4, [5, 6]]];
+
+function flatDeep(arr, d = 1) {
+   return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), [])
+                : arr.slice();
+};
+
+flatDeep(arr, Infinity);
+// [1, 2, 3, 4, 5, 6]
+ +
//не рекурсивное упрощение с использованием стэка
+var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
+function flatten(input) {
+  const stack = [...input];
+  const res = [];
+  while (stack.length) {
+    // забираем последнее значение
+    const next = stack.pop();
+    if (Array.isArray(next)) {
+      // добавляем к массиву элементы не модифицируя исходное значение
+      stack.push(...next);
+    } else {
+      res.push(next);
+    }
+  }
+  //разворачиваем массив, чтобы восстановить порядок элементов
+  return res.reverse();
+}
+flatten(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
+
+ +
//рекурсивно упрощаем массив
+function flatten(array) {
+  var flattend = [];
+  (function flat(array) {
+    array.forEach(function(el) {
+      if (Array.isArray(el)) flat(el);
+      else flattend.push(el);
+    });
+  })(array);
+  return flattend;
+}
+
+ + + +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
Array.prototype.flat proposalКандидат (3)
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.flat")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html b/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html new file mode 100644 index 0000000000..4465a92711 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html @@ -0,0 +1,126 @@ +--- +title: Array.prototype.flatMap() +slug: Web/JavaScript/Reference/Global_Objects/Array/flatMap +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap +--- +
{{JSRef}}
+ +

Метод flatMap() сначала применяет функцию к каждому элементу, а затем преобразует полученый результат в плоскую структуру и помещает в новый массив. Это идентично map функции, с последующим применением функции flat с параметром depth ( глубина ) равным 1, но flatMap часто бывает полезным, так как работает немного более эффективно.

+ + + + + +

Синтаксис

+ +
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
+    // возращает элемент для new_array
+}[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция которая производит элементы нового массива, принимает три аргумента: +
+
+
currentValue
+
Текущий обрабатываемый элемент массива.
+
index{{optional_inline}}
+
Индекс обрабатываемого элемента в массиве.
+
array{{optional_inline}}
+
Массив по которому осуществляется обход.
+
+
+
thisArg{{optional_inline}}
+
Значение используемое в качестве this при вызове функции callback.
+
+ +

Возвращаемое значение

+ +

Новый массив, каждый элемент которого является результатом выполнения функции callback и "поднят" на уровень 1.

+ +

Описание

+ +

Смотрите {{jsxref("Array.prototype.map()")}} для детального описания callback функции. Метод flatMap идентичен методу map с последующим вызовом flat с параметром depth 1.

+ +

Примеры

+ +

map и flatMap

+ +
let arr1 = [1, 2, 3, 4];
+
+arr1.map(x => [x * 2]);
+// [[2], [4], [6], [8]]
+
+arr1.flatMap(x => [x * 2]);
+// [2, 4, 6, 8]
+
+// выравнивается только один уровень
+arr1.flatMap(x => [[x * 2]]);
+// [[2], [4], [6], [8]]
+
+ +

Хотя результат полученый в примере выше можно было получить используя просто map, ниже мы рассмотрим пример где flatMap является более эффективным.

+ +

Давайте сгенерируем список слов из списка предложений.

+ +
let arr1 = ["it's Sunny in", "", "California"];
+
+arr1.map(x => x.split(" "));
+// [["it's","Sunny","in"],[""],["California"]]
+
+arr1.flatMap(x => x.split(" "));
+// ["it's","Sunny","in", "", "California"]
+ +

Обратите внимание, длина списка вывода может отличаться от длины списка ввода.

+ +
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
+ +

Альтернативное решение

+ +

reduce and concat

+ +
var arr1 = [1, 2, 3, 4];
+
+arr1.flatMap(x => [x * 2]);
+// is equivalent to
+arr1.reduce((acc, x) => acc.concat([x * 2]), []);
+// [2, 4, 6, 8]
+
+ +
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
+ +

Спецификация

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-array.prototype.flatmap', 'Array.prototype.flatMap')}}{{Spec2('ES6')}}
+ +

Поддержка браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.flatMap")}}

+
+ +

См так же:

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/foreach/index.html b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html new file mode 100644 index 0000000000..3787dc7e84 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html @@ -0,0 +1,388 @@ +--- +title: Array.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Array/forEach +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - forEach + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Метод forEach() выполняет указанную функцию один раз для каждого элемента в массиве.

+ +
{{EmbedInteractiveExample("pages/js/array-foreach.html")}}
+ + + +

Синтаксис

+ +
arr.forEach(function callback(currentValue, index, array) {
+    //your iterator
+}[, thisArg]);
+ +

Параметры

+ +
+
callback
+
Функция, которая будет вызвана для каждого элемента массива. Она принимает от одного до трех аргументов:
+
+
+
currentValue
+
Текущий обрабатываемый элемент в массиве.
+
index{{optional_inline}}
+
Индекс текущего обрабатываемого элемента в массиве.
+
array{{optional_inline}}
+
Массив, по которому осуществляется проход.
+
+
+
thisArg
+
Необязательный параметр. Значение, используемое в качестве this при вызове функции callback.
+
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Описание

+ +

Метод forEach() выполняет функцию callback один раз для каждого элемента, находящегося в массиве в порядке возрастания. Она не будет вызвана для удалённых или пропущенных элементов массива. Однако, она будет вызвана для элементов, которые присутствуют в массиве и имеют значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Функция callback будет вызвана с тремя аргументами:

+ + + +

Если в метод forEach() был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае, в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно {{jsxref('Operators/this', 'обычным правилам определения this, видимого из функции')}}.

+ +

Диапазон элементов, обрабатываемых методом forEach(), устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода forEach(), не будут посещены функцией callback. Если существующие элементы массива изменятся, значения, переданные в функцию callback, будут значениями на тот момент времени, когда метод forEach() посетит их; удалённые элементы посещены не будут. Если уже посещённые элементы удаляются во время итерации (например, с помощью {{jsxref("Array.prototype.shift()", "shift()")}}), последующие элементы будут пропущены. ({{jsxref('Global_Objects/Array/forEach', 'Смотри пример ниже', 'Модификация_массива_во_время_итерации')}})

+ +
+

Примечание: Не существует способа остановить или прервать цикл forEach() кроме как выбрасыванием исключения. Если вам необходимо такое поведение, метод forEach() неправильный выбор.

+ +

Досрочное прекращение может быть достигнуто с:

+ + + +

Если нужно протестировать элементы массива на условие и нужно вернуть булево значение, вы можете воспользоваться методами {{jsxref("Array.prototype.every()", "every()")}}, {{jsxref("Array.prototype.some()", "some()")}}, {{jsxref("Array.prototype.find()", "find()")}} или {{jsxref("Array.prototype.findIndex()", "findIndex()")}}.

+ +

Метод forEach() выполняет функцию callback один раз для каждого элемента массива; в отличие от методов {{jsxref("Array.prototype.every()", "every()")}} и {{jsxref("Array.prototype.some()", "some()")}}, он всегда возвращает значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+
+ +

Примеры

+ +

Нет операции для неинициализированных значений (разреженные массивы)

+ +
const arraySparse = [1,3,,7]
+let numCallbackRuns = 0
+
+arraySparse.forEach((element) => {
+  console.log(element)
+  numCallbackRuns++
+})
+
+console.log("numCallbackRuns: ", numCallbackRuns)
+
+// 1
+// 3
+// 7
+// numCallbackRuns: 3
+// комментарий: как вы видите пропущенное значение между 3 и 7 не вызывало функцию callback.
+ +

Конвертируем цикл for в forEach

+ +
const items = ['item1', 'item2', 'item3']
+const copy = []
+
+// до
+for (let i = 0; i < items.length; i++) {
+  copy.push(items[i])
+}
+
+// после
+items.forEach(function(item){
+  copy.push(item)
+})
+
+ +

Печать содержимого массива

+ +
+

Примечание: Для отображения содержимого массива в консоли вы можете использовать console.table(), который выводит отформатированную версию массива.

+ +

Следующий пример иллюстрирует альтернативный подход, использующий forEach().

+
+ +

Следующий код выводит каждый элемент массива на новой строке журнала:

+ +
function logArrayElements(element, index, array) {
+  console.log('a[' + index + '] = ' + element);
+}
+
+// Обратите внимание на пропуск по индексу 2, там нет элемента, поэтому он не посещается
+[2, 5, , 9].forEach(logArrayElements);
+// логи:
+// a[0] = 2
+// a[1] = 5
+// a[3] = 9
+
+ +

Использование thisArg

+ +

Следующий (надуманный) пример обновляет свойства объекта, когда перебирает записи массива:

+ +
function Counter() {
+  this.sum = 0
+  this.count = 0
+}
+Counter.prototype.add = function(array) {
+  array.forEach((entry) => {
+    this.sum += entry
+    ++this.count
+  }, this)
+  // ^---- Note
+}
+
+const obj = new Counter()
+obj.add([2, 5, 9])
+obj.count
+// 3
+obj.sum
+// 16
+
+ +

Поскольку в forEach()передан параметр thisArg (this), он затем передаётся в callback при каждом вызове. И callback использует его в качестве собственного значения this.

+ +
+

Примечание: Если при передаче callback функции используется {{jsxref('Functions/Arrow_functions', 'выражение стрелочной функции')}}, параметр thisArg может быть опущен, так как все стрелочные функции лексически привязываются к значению{{jsxref("Operators/this", "this")}}.

+
+ +

Прерывание цикла

+ +

Следующий код использует {{jsxref("Array.prototype.every()")}} для логирования содержимого массива и останавливается при превышении значением заданного порогового значения THRESHOLD.

+ +
var THRESHOLD = 12;
+var v = [5, 2, 16, 4, 3, 18, 20];
+var res;
+
+res = v.every(function(element, index, array) {
+  console.log('element:', element);
+  if (element >= THRESHOLD) {
+    return false;
+  }
+
+  return true;
+});
+console.log('res:', res);
+// логи:
+// element: 5
+// element: 2
+// element: 16
+// res: false
+
+res = v.some(function(element, index, array) {
+  console.log('element:', element);
+  if (element >= THRESHOLD) {
+    return true;
+  }
+
+  return false;
+});
+console.log('res:', res);
+// логи:
+// element: 5
+// element: 2
+// element: 16
+// res: true
+
+ +

Функция копирования объекта

+ +

Следующий код создаёт копию переданного объекта. Существует несколько способов создания копии объекта, и это один из них. Он позволяет понять, каким образом работает Array.prototype.forEach(), используя функции мета-свойств Object.* из ECMAScript 5.

+ +
function copy(o) {
+  var copy = Object.create(Object.getPrototypeOf(o));
+  var propNames = Object.getOwnPropertyNames(o);
+
+  propNames.forEach(function(name) {
+    var desc = Object.getOwnPropertyDescriptor(o, name);
+    Object.defineProperty(copy, name, desc);
+  });
+
+  return copy;
+}
+
+var o1 = { a: 1, b: 2 };
+var o2 = copy(o1); // теперь o2 выглядит также, как и o1
+
+ +

Модификация массива во время итерации

+ +

В следующем примере в лог выводится "one", "two", "four".

+ +

При достижении записи, содержащей значение 'two', первая запись всего массива удаляется, в результате чего все оставшиеся записи перемещаются на одну позицию вверх. Поскольку элемент 'four' теперь находится на более ранней позиции в массиве, 'three' будет пропущен.

+ +

forEach() не делает копию массива перед итерацией.

+ +
let words = ['one', 'two', 'three', 'four']
+words.forEach((word) => {
+  console.log(word)
+  if (word === 'two') {
+    words.shift()
+  }
+})
+// one
+// two
+// four
+
+ +

Выравнивание (уплощение) массива

+ +

Следующий пример приведен только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}

+ +
function flatten(arr) {
+  const result = []
+
+  arr.forEach((i) => {
+    if (Array.isArray(i)) {
+      result.push(...flatten(i))
+    } else {
+      result.push(i)
+    }
+  })
+
+  return result
+}
+
+// Usage
+const nested = [1, 2, 3, [4, 5, [6, 7], 8, 9]]
+
+flatten(nested) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+ +

Полифилл

+ +

Метод forEach() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать forEach() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Object")}} и {{jsxref("TypeError")}} имеют свои первоначальные значения и что callback.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.18
+// Ссылка (en): http://es5.github.io/#x15.4.4.18
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.18
+if (!Array.prototype.forEach) {
+
+  Array.prototype.forEach = function (callback, thisArg) {
+
+    var T, k;
+
+    if (this == null) {
+      throw new TypeError(' this is null or not defined');
+    }
+
+    // 1. Положим O равным результату вызова ToObject passing the |this| value as the argument.
+    var O = Object(this);
+
+    // 2. Положим lenValue равным результату вызова внутреннего метода Get объекта O с аргументом "length".
+    // 3. Положим len равным ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. Если IsCallable(callback) равен false, выкинем исключение TypeError.
+    // Смотрите: http://es5.github.com/#x9.11
+    if (typeof callback !== 'function') {
+        throw new TypeError(callback + ' is not a function');
+    }
+
+    // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
+    if (arguments.length > 1) {
+      T = thisArg;
+    }
+
+    // 6. Положим k равным 0
+    k = 0;
+
+    // 7. Пока k < len, будем повторять
+    while (k < len) {
+
+      var kValue;
+
+      // a. Положим Pk равным ToString(k).
+      //   Это неявное преобразование для левостороннего операнда в операторе in
+      // b. Положим kPresent равным результату вызова внутреннего метода HasProperty объекта O с аргументом Pk.
+      //   Этот шаг может быть объединён с шагом c
+      // c. Если kPresent равен true, то
+      if (k in O) {
+
+        // i. Положим kValue равным результату вызова внутреннего метода Get объекта O с аргументом Pk.
+        kValue = O[k];
+
+        // ii. Вызовем внутренний метод Call функции callback с объектом T в качестве значения this и
+        // списком аргументов, содержащим kValue, k и O.
+        callback.call(T, kValue, k, O);
+      }
+      // d. Увеличим k на 1.
+      k++;
+    }
+    // 8. Вернём undefined.
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.forEach")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/from/index.html b/files/ru/web/javascript/reference/global_objects/array/from/index.html new file mode 100644 index 0000000000..f373749ec7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/from/index.html @@ -0,0 +1,216 @@ +--- +title: Array.from() +slug: Web/JavaScript/Reference/Global_Objects/Array/from +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/from +--- +
{{JSRef}}
+ +

Метод Array.from() создаёт новый экземпляр Array из массивоподобного или итерируемого объекта.

+ +

{{EmbedInteractiveExample("pages/js/array-from.html")}}

+ +

Синтаксис

+ +
Array.from(arrayLike[, mapFn[, thisArg]])
+ +

Параметры

+ +
+
arrayLike
+
Массивоподобный или итерируемый объект, преобразуемый в массив.
+
mapFn {{Optional_inline}}
+
Отображающая функция, вызываемая для каждого элемента массива.
+
thisArg {{Optional_inline}}
+
Значение, используемое в качестве this при выполнении функции mapFn.
+
+ +

Возвращаемое значение

+ +

Новый экземпляр {{jsxref("Array")}}

+ +

Описание

+ +

Array.from() позволяет вам создавать массивы из:

+ + + +

Array.from() имеет необязательный параметр mapFn, который позволяет вам выполнять функцию {{jsxref("Array.prototype.map", "map")}} для каждого элемента создаваемого массива (или его подкласса). Проще говоря, вызов Array.from(obj, mapFn, thisArg) эквивалентен цепочке Array.from(obj).map(mapFn, thisArg), за исключением того, что он не создаёт промежуточного массива. Это особенно важно для некоторых подклассов массива, вроде типизированных массивов, поскольку промежуточный массив неизбежно приведёт к усечению значений, чтобы они подпали под подходящий тип.

+ +

Свойство length метода from() равно 1.

+ +

В ES2015 классовый синтаксис позволяет создавать подклассы как встроенных классов, так и классов, определённых пользователем; в результате статические методы класса, вроде Array.from «наследуются» подклассами {{jsxref("Global_Objects/Array", "Array")}} и создают новые экземпляры подкласса, а не класса {{jsxref("Global_Objects/Array", "Array")}}.

+ +

Примеры

+ +

Массив из строки String

+ +
Array.from('foo');
+// ['f', 'o', 'o']
+
+ +

Массив из Set

+ +
var s = new Set(['foo', window]);
+Array.from(s);
+// ['foo', window]
+
+ +

Массив из Map

+ +
var m = new Map([[1, 2], [2, 4], [4, 8]]);
+Array.from(m);
+// [[1, 2], [2, 4], [4, 8]]
+
+ +

Массив из массивоподобного объекта (arguments)

+ +
function f() {
+  return Array.from(arguments);
+}
+
+f(1, 2, 3);
+// [1, 2, 3]
+
+ +

Использование стрелочной функции и Array.from()

+ +
// Использование стрелочной функции в качестве функции отображения для
+
+// манипулирования элементами
+Array.from([1, 2, 3], x => x + x);
+// [2, 4, 6]
+
+// Генерирования последовательности чисел
+Array.from({ length: 5 }, (v, k) => k);
+// [0, 1, 2, 3, 4]
+ +

Полифилл

+ +

Метод Array.from был добавлен к стандарту ECMA-262 в 6-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать Array.from в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 6-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}} и {{jsxref("Global_Objects/TypeError", "TypeError")}} имеют свои первоначальные значения и что callback.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call")}}. Кроме того, поскольку истинные итерируемые объекты не могут быть заменены полифиллом, эта реализация не поддерживает общие итерируемые объекты, как они определены в 6-м издании ECMA-262.

+ +
// Шаги алгоритма ECMA-262, 6-е издание, 22.1.2.1
+// Ссылка: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from
+if (!Array.from) {
+  Array.from = (function() {
+    var toStr = Object.prototype.toString;
+    var isCallable = function(fn) {
+      return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
+    };
+    var toInteger = function (value) {
+      var number = Number(value);
+      if (isNaN(number)) { return 0; }
+      if (number === 0 || !isFinite(number)) { return number; }
+      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
+    };
+    var maxSafeInteger = Math.pow(2, 53) - 1;
+    var toLength = function (value) {
+      var len = toInteger(value);
+      return Math.min(Math.max(len, 0), maxSafeInteger);
+    };
+
+    // Свойство length метода from равно 1.
+    return function from(arrayLike/*, mapFn, thisArg */) {
+      // 1. Положим C равным значению this.
+      var C = this;
+
+      // 2. Положим items равным ToObject(arrayLike).
+      var items = Object(arrayLike);
+
+      // 3. ReturnIfAbrupt(items).
+      if (arrayLike == null) {
+        throw new TypeError('Array.from requires an array-like object - not null or undefined');
+      }
+
+      // 4. Если mapfn равен undefined, положим mapping равным false.
+      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
+      var T;
+      if (typeof mapFn !== 'undefined') {
+        // 5. иначе
+        // 5. a. Если вызов IsCallable(mapfn) равен false, выкидываем исключение TypeError.
+        if (!isCallable(mapFn)) {
+          throw new TypeError('Array.from: when provided, the second argument must be a function');
+        }
+
+        // 5. b. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
+        if (arguments.length > 2) {
+          T = arguments[2];
+        }
+      }
+
+      // 10. Положим lenValue равным Get(items, "length").
+      // 11. Положим len равным ToLength(lenValue).
+      var len = toLength(items.length);
+
+      // 13. Если IsConstructor(C) равен true, то
+      // 13. a. Положим A равным результату вызова внутреннего метода [[Construct]]
+      //     объекта C со списком аргументов, содержащим единственный элемент len.
+      // 14. a. Иначе, положим A равным ArrayCreate(len).
+      var A = isCallable(C) ? Object(new C(len)) : new Array(len);
+
+      // 16. Положим k равным 0.
+      var k = 0;
+      // 17. Пока k < len, будем повторять... (шаги с a по h)
+      var kValue;
+      while (k < len) {
+        kValue = items[k];
+        if (mapFn) {
+          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);
+        } else {
+          A[k] = kValue;
+        }
+        k += 1;
+      }
+      // 18. Положим putStatus равным Put(A, "length", len, true).
+      A.length = len;
+      // 20. Вернём A.
+      return A;
+    };
+  }());
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}{{Spec2('ESDraft')}}
{{SpecName('ES2015', '#sec-array.from', 'Array.from')}}{{Spec2('ES2015')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Array.from")}}
+ +
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/includes/index.html b/files/ru/web/javascript/reference/global_objects/array/includes/index.html new file mode 100644 index 0000000000..61bbdf1620 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/includes/index.html @@ -0,0 +1,171 @@ +--- +title: Array.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/Array/includes +tags: + - JavaScript + - Prototype + - Reference + - polyfill + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes +--- +
{{JSRef}}
+ +

Метод includes() определяет, содержит ли массив определённый элемент, возвращая в зависимости от этого true или false.

+ +
{{EmbedInteractiveExample("pages/js/array-includes.html")}}
+ +

Синтаксис

+ +
arr.includes(searchElement[, fromIndex = 0])
+
+ +

Параметры

+ +
+
searchElement
+
Искомый элемент.
+
fromIndex {{optional_inline}}
+
Позиция в массиве, с которой начинать поиск элемента  searchElement. При отрицательных значениях поиск производится начиная с индекса array.length + fromIndex по возрастанию. Значение по умолчанию равно 0.
+
+ +

Возвращаемое значение

+ +

{{jsxref("Boolean")}}.

+ +

Примеры

+ +
[1, 2, 3].includes(2);     // true
+[1, 2, 3].includes(4);     // false
+[1, 2, 3].includes(3, 3);  // false
+[1, 2, 3].includes(3, -1); // true
+[1, 2, NaN].includes(NaN); // true
+
+ +

fromIndex больше или равен длине массива

+ +

Если fromIndex больше или равен длине массива, то возвращается false. При этом поиск не производится.

+ +
var arr = ['a', 'b', 'c'];
+
+arr.includes('c', 3);   // false
+arr.includes('c', 100); // false
+ +

Вычисленный индекс меньше нуля 0

+ +

Если fromIndex отрицательный, то вычисляется индекс, начиная с которого будет производиться поиск элемента searchElement. Если вычисленный индекс меньше нуля, то поиск будет производиться во всём массиве.

+ +
// длина массива равна 3
+// fromIndex равен -100
+// вычисленный индекс равен 3 + (-100) = -97
+
+var arr = ['a', 'b', 'c'];
+
+arr.includes('a', -100); // true
+arr.includes('b', -100); // true
+arr.includes('c', -100); // true
+ +

Использование includes() в качестве общих метода

+ +

includes() специально сделан общим. Он не требует, чтобы this являлся массивом, так что он может быть применён к другим типам объектов (например, к массивоподобным объектам). Пример ниже показывает использование метода includes() на объекте arguments.

+ +
(function() {
+  console.log([].includes.call(arguments, 'a')); // true
+  console.log([].includes.call(arguments, 'd')); // false
+})('a','b','c');
+ +

Полифилл

+ +
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
+if (!Array.prototype.includes) {
+  Object.defineProperty(Array.prototype, 'includes', {
+    value: function(searchElement, fromIndex) {
+
+      if (this == null) {
+        throw new TypeError('"this" is null or not defined');
+      }
+
+      // 1. Let O be ? ToObject(this value).
+      var o = Object(this);
+
+      // 2. Let len be ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. If len is 0, return false.
+      if (len === 0) {
+        return false;
+      }
+
+      // 4. Let n be ? ToInteger(fromIndex).
+      //    (If fromIndex is undefined, this step produces the value 0.)
+      var n = fromIndex | 0;
+
+      // 5. If n ≥ 0, then
+      //  a. Let k be n.
+      // 6. Else n < 0,
+      //  a. Let k be len + n.
+      //  b. If k < 0, let k be 0.
+      var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+      function sameValueZero(x, y) {
+        return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
+      }
+
+      // 7. Repeat, while k < len
+      while (k < len) {
+        // a. Let elementK be the result of ? Get(O, ! ToString(k)).
+        // b. If SameValueZero(searchElement, elementK) is true, return true.
+        if (sameValueZero(o[k], searchElement)) {
+          return true;
+        }
+        // c. Increase k by 1.
+        k++;
+      }
+
+      // 8. Return false
+      return false;
+    }
+  });
+}
+
+ +

Если требуется поддержка устаревших движков JavaScript, которые не поддерживают Object.defineProperty, наилучшим решением будет вообще не делать полифилл для методов Array.prototype, так как не получится сделать их неперечисляемыми.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ES7')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}{{Spec2('ESDraft')}}
+ +

Поддержка браузерами

+ +
+

{{Compat("javascript.builtins.Array.includes")}}

+
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/index.html b/files/ru/web/javascript/reference/global_objects/array/index.html new file mode 100644 index 0000000000..263de030df --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/index.html @@ -0,0 +1,452 @@ +--- +title: Array +slug: Web/JavaScript/Reference/Global_Objects/Array +tags: + - Array + - JavaScript + - Reference + - Глобальные объекты +translation_of: Web/JavaScript/Reference/Global_Objects/Array +--- +
{{JSRef("Global_Objects", "Array")}}
+ +
 
+ +

Массив (Array) в JavaScript является глобальным объектом, который используется для создания массивов; которые представляют собой высокоуровневые спископодобные объекты.

+ +

Создание массива

+ +
var fruits = ['Яблоко', 'Банан'];
+
+console.log(fruits.length);
+// 2
+
+ +

Доступ к элементу массива по индексу

+ +
var first = fruits[0];
+// Яблоко
+
+var last = fruits[fruits.length - 1];
+// Банан
+
+ +

Итерирование по массиву

+ +
fruits.forEach(function(item, index, array) {
+  console.log(item, index);
+});
+// Яблоко 0
+// Банан 1
+
+ +

Добавление элемента в конец массива

+ +
var newLength = fruits.push('Апельсин');
+// ["Яблоко", "Банан", "Апельсин"]
+
+ +

Удаление последнего элемента массива

+ +
var last = fruits.pop(); // удалим Апельсин (из конца)
+// ["Яблоко", "Банан"];
+
+ +

Удаление первого элемента массива

+ +
var first = fruits.shift(); // удалим Яблоко (из начала)
+// ["Банан"];
+
+ +

Добавление элемента в начало массива

+ +
var newLength = fruits.unshift('Клубника') // добавляет в начало
+// ["Клубника", "Банан"];
+
+ +

Поиск номера элемента в массиве

+ +
fruits.push('Манго');
+// ["Клубника", "Банан", "Манго"]
+
+var pos = fruits.indexOf('Банан');
+// 1
+
+ +

Удаление элемента с определённым индексом

+ +
var removedItem = fruits.splice(pos, 1); // так можно удалить элемент
+
+// ["Клубника", "Манго"]
+ +

Удаление нескольких элементов, начиная с определённого индекса

+ +
var vegetables = ['Капуста', 'Репа', 'Редиска', 'Морковка'];
+console.log(vegetables);
+// ["Капуста", "Репа", "Редиска", "Морковка"]
+
+var pos = 1, n = 2;
+
+var removedItems = vegetables.splice(pos, n);
+// так можно удалить элементы, n определяет количество элементов для удаления,
+// начиная с позиции(pos) и далее в направлении конца массива.
+
+console.log(vegetables);
+// ["Капуста", "Морковка"] (исходный массив изменён)
+
+console.log(removedItems);
+// ["Репа", "Редиска"]
+ +

Создание копии массива

+ +
var shallowCopy = fruits.slice(); // так можно создать копию массива
+// ["Клубника", "Манго"]
+
+ +

Синтаксис

+ +
[element0, element1, ..., elementN]
+new Array(element0, element1[, ...[, elementN]])
+new Array(arrayLength)
+ +
+
elementN
+
Массив в JavaScript инициализируется с помощью переданных элементов, за исключением случая, когда в конструктор Array передаётся один аргумент и этот аргумент является числом (см. ниже). Стоит обратить внимание, что этот особый случай применяется только к JavaScript-массивам, создаваемым с помощью конструктора Array, а не к литеральным массивам, создаваемым с использованием скобочного синтаксиса.
+
arrayLength
+
Если конструктору Array передаётся единственный аргумент, являющийся целым числом в диапазоне от 0 до 232-1 (включительно), будет возвращён новый пустой JavaScript-массив, длина которого установится в это число (примечание: это означает массив, содержащий arrayLength пустых ячеек, а не ячеек со значениями undefined). Если аргументом будет любое другое число, возникнет исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.
+
+ +

Описание

+ +

Массивы являются спископодобными объектами, чьи прототипы содержат методы для операций обхода и изменения массива. Ни размер JavaScript-массива, ни типы его элементов не являются фиксированными. Поскольку размер массива может увеличиваться и уменьшаться в любое время, то нет гарантии, что массив окажется плотным. То есть, при работе с массивом может возникнуть ситуация, что элемент массива, к которому вы обратитесь, будет пустым и вернёт undefined. В целом, это удобная характеристика; но если эта особенность массива не желательна в вашем специфическом случае, вы можете рассмотреть возможность использования типизированных массивов.

+ +

Некоторые полагают, что вы не должны использовать массив в качестве ассоциативного массива. В любом случае, вместо него вы можете использовать простые {{jsxref("Global_Objects/Object", "объекты")}}, хотя у них есть и свои подводные камни. Смотрите пост Легковесные JavaScript-словари с произвольными ключами(англ.) в качестве примера.

+ +

Доступ к элементам массива

+ +

Массивы в JavaScript индексируются с нуля: первый элемент массива имеет индекс, равный 0, а индекс последнего элемента равен значению свойства массива {{jsxref("Array.length", "length")}} минус 1.

+ +
var arr = ['первый элемент', 'второй элемент', 'последний элемент'];
+console.log(arr[0]);              // напечатает 'первый элемент'
+console.log(arr[1]);              // напечатает 'второй элемент'
+console.log(arr[arr.length - 1]); // напечатает 'последний элемент'
+
+ +

Элементы массива являются свойствами, точно такими же, как, например, свойство toString, однако попытка получить элемент массива по имени его свойства приведёт к синтаксической ошибке, поскольку имя свойства не является допустимым именем JavaScript:

+ +
console.log(arr.0); // синтаксическая ошибка
+
+ +

Это не особенность массивов или их свойств. В JavaScript к свойствам, начинающимся с цифры, невозможно обратиться посредством точечной нотации; к ним можно обратиться только с помощью скобочной нотации. Например, если у вас есть объект со свойством, названным '3d', вы сможете обратиться к нему только посредством скобочной нотации. Примеры:

+ +
var years = [1950, 1960, 1970, 1980, 1990, 2000, 2010];
+console.log(years.0);   // синтаксическая ошибка
+console.log(years[0]);  // работает как положено
+
+ +
renderer.3d.setTexture(model, 'character.png');     // синтаксическая ошибка
+renderer['3d'].setTexture(model, 'character.png');  // работает как положено
+
+ +

Обратите внимание, что во втором примере 3d заключено в кавычки: '3d'. Индексы можно заключать в кавычки (например years['2'] вместо years[2]), но в этом нет необходимости. Значение 2 в выражении years[2] будет неявно приведено к строке движком JavaScript через метод преобразования toString. Именно по этой причине ключи '2' и '02' будут ссылаться на два разных элемента в объекте years и следующий пример выведет true:

+ +
console.log(years['2'] != years['02']);
+
+ +

Аналогично, к свойствам объекта, являющимся зарезервированными словами(!) можно получить доступ только посредством скобочной нотации:

+ +
var promise = {
+  'var'  : 'text',
+  'array': [1, 2, 3, 4]
+};
+
+console.log(promise['array']);
+
+ +

Взаимосвязь свойства length с числовыми свойствами

+ +

Свойство массивов {{jsxref("Array.length", "length")}} взаимосвязано с числовыми свойствами. Некоторые встроенные методы массива (например, {{jsxref("Array.join", "join")}}, {{jsxref("Array.slice", "slice")}}, {{jsxref("Array.indexOf", "indexOf")}} и т.д.) учитывают значение свойства length при своём вызове. Другие методы (например, {{jsxref("Array.push", "push")}}, {{jsxref("Array.splice", "splice")}} и т.д.) в результате своей работы также обновляют свойство length массива.

+ +
var fruits = [];
+fruits.push('банан', 'яблоко', 'персик');
+
+console.log(fruits.length); // 3
+
+ +

При установке свойства в массиве, если свойство имеет действительный индекс и этот индекс выходит за пределы текущих границ массива, движок соответствующим образом обновит свойство {{jsxref("Array.length", "length")}}:

+ +
fruits[5] = 'манго';
+console.log(fruits[5]);             // 'манго'
+console.log(Object.keys(fruits));   // ['0', '1', '2', '5']
+console.log(fruits.length);         // 6
+
+ +

Увеличиваем свойство length

+ +
fruits.length = 10;
+console.log(Object.keys(fruits));   // ['0', '1', '2', '5']
+console.log(fruits.length);         // 10
+
+ +

Однако, уменьшение свойства {{jsxref("Array.length", "length")}} приведёт к удалению элементов.

+ +
fruits.length = 2;
+console.log(Object.keys(fruits)); // ['0', '1']
+console.log(fruits.length); // 2
+
+ +

Более подробно эта тема освещена на странице, посвящённой свойству {{jsxref("Array.length")}}.

+ +

Создание массива с использованием результата сопоставления

+ +

Результатом сопоставления регулярного выражения строке является JavaScript-массив. Этот массив имеет свойства и элементы, предоставляющие информацию о сопоставлении. Подобные массивы возвращаются методами {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}} и {{jsxref("String.replace")}}. Чтобы было проще понять, откуда и какие появились свойства и элементы, посмотрите следующий пример и обратитесь к таблице ниже:

+ +
// Сопоставляется с одним символом d, за которым следует один
+// или более символов b, за которыми следует один символ d
+// Запоминаются сопоставившиеся символы b и следующий за ними символ d
+// Регистр игнорируется
+
+var myRe = /d(b+)(d)/i;
+var myArray = myRe.exec('cdbBdbsbz');
+
+ +

Свойства и элементы, возвращаемые из данного сопоставления, описаны ниже:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Свойство/ЭлементОписаниеПример
inputСвойство только для чтения, отражающее оригинальную строку, с которой сопоставлялось регулярное выражение.cdbBdbsbz
indexСвойство только для чтения, являющееся индексом (отсчёт начинается с нуля) в строке, с которого началось сопоставление.1
[0]Элемент только для чтения, определяющий последние сопоставившиеся символы.dbBd
[1], ...[n]Элементы только для чтения, определяющие сопоставившиеся подстроки, заключённые в круглые скобки, если те включены в регулярное выражение. Количество возможных подстрок не ограничено.[1]: bB
+ [2]: d
+ +

Свойства

+ +
+
{{jsxref("Array.length")}}
+
Значение свойства length конструктора массива равно 1.
+
{{jsxref("Array.prototype")}}
+
Позволяет добавлять свойства ко всем объектам массива.
+
+ +

Методы

+ +
+
{{jsxref("Array.from()")}} {{experimental_inline}}
+
Создаёт новый экземпляр Array из массивоподобного или итерируемого объекта.
+
{{jsxref("Array.isArray()")}}
+
Возвращает true, если значение является массивом, иначе возвращает false.
+
{{jsxref("Array.observe()")}} {{experimental_inline}}
+
Асинхронно наблюдает за изменениями в массиве, подобно методу {{jsxref("Object.observe()")}} для объектов. Метод предоставляет поток изменений в порядке их возникновения.
+
{{jsxref("Array.of()")}} {{experimental_inline}}
+
Создаёт новый экземпляр Array из любого количества аргументов, независимо от их количества или типа.
+
+ +

Экземпляры массива

+ +

Все экземпляры массива наследуются от {{jsxref("Array.prototype")}}. Изменения в объекте прототипа конструктора массива затронет все экземпляры Array.

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Properties')}}
+ +

Методы

+ +

Методы изменения

+ +
{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Mutator_methods')}}
+ +

Методы доступа

+ +
{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Accessor_methods')}}
+ +

Методы обхода

+ +
{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Iteration_methods')}}
+ +

Общие методы массива

+ +

Иногда хочется применить методы массива к строкам или другим массивоподобным объектам (например, к {{jsxref("Functions_and_function_scope/arguments", "аргументам", "", 1)}} функции). Делая это, вы трактуете строку как массив символов (другими словами, рассматриваете не-массив в качестве массива). Например, в порядке проверки каждого символа в переменной str на то, что он является буквой (латинского алфавита), вы пишете следущий код:

+ +
function isLetter(character) {
+  return character >= 'a' && character <= 'z';
+}
+
+if (Array.prototype.every.call(str, isLetter)) {
+  console.log("Строка '" + str + "' содержит только (латинские) буквы!");
+}
+
+ +

Эта запись довольно расточительна и в JavaScript 1.6 введён общий сокращённый вид:

+ +
if (Array.every(str, isLetter)) {
+  console.log("Строка '" + str + "' содержит только (латинские) буквы!");
+}
+
+ +

{{jsxref("Global_Objects/String", "Общие методы", "#String_generic_methods", 1)}} также доступны для объекта {{jsxref("Global_Objects/String", "String")}}.

+ +

В настоящее время они не являются частью стандартов ECMAScript (хотя в ES2015 для достижения поставленной цели можно использовать Array.from()). Следующая прослойка позволяет использовать их во всех браузерах:

+ +
// Предполагаем, что дополнения массива уже присутствуют (для них так же можно использовать polyfill'ы)
+(function() {
+  'use strict';
+
+  var i,
+    // Мы могли построить массив методов следующим образом, однако метод
+    //  getOwnPropertyNames() нельзя реализовать на JavaScript:
+    // Object.getOwnPropertyNames(Array).filter(function(methodName) {
+    //   return typeof Array[methodName] === 'function'
+    // });
+    methods = [
+      'join', 'reverse', 'sort', 'push', 'pop', 'shift', 'unshift',
+      'splice', 'concat', 'slice', 'indexOf', 'lastIndexOf',
+      'forEach', 'map', 'reduce', 'reduceRight', 'filter',
+      'some', 'every'
+    ],
+    methodCount = methods.length,
+    assignArrayGeneric = function(methodName) {
+      if (!Array[methodName]) {
+        var method = Array.prototype[methodName];
+        if (typeof method === 'function') {
+          Array[methodName] = function() {
+            return method.call.apply(method, arguments);
+          };
+        }
+      }
+    };
+
+  for (i = 0; i < methodCount; i++) {
+    assignArrayGeneric(methods[i]);
+  }
+}());
+
+ +

Примеры

+ +

Пример: создание массива

+ +

Следующий пример создаёт массив msgArray с длиной 0, присваивает значения элементам msgArray[0] и msgArray[99], что изменяет длину массива на 100.

+ +
var msgArray = [];
+msgArray[0] = 'Привет';
+msgArray[99] = 'мир';
+
+if (msgArray.length === 100) {
+  console.log('Длина равна 100.');
+}
+
+ +

Пример: создание двумерного массива

+ +

Следующий код создаёт шахматную доску в виде двумерного массива строк. Затем он перемещает пешку путём копирования символа 'p' в позиции (6,4) на позицию (4,4). Старая позиция (6,4) затирается пустым местом.

+ +
var board = [
+  ['R','N','B','Q','K','B','N','R'],
+  ['P','P','P','P','P','P','P','P'],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  [' ',' ',' ',' ',' ',' ',' ',' '],
+  ['p','p','p','p','p','p','p','p'],
+  ['r','n','b','q','k','b','n','r'] ];
+
+console.log(board.join('\n') + '\n\n');
+
+// Двигаем королевскую пешку вперёд на две клетки
+board[4][4] = board[6][4];
+board[6][4] = ' ';
+console.log(board.join('\n'));
+
+ +

Ниже показан вывод:

+ +
R,N,B,Q,K,B,N,R
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+ , , , , , , ,
+p,p,p,p,p,p,p,p
+r,n,b,q,k,b,n,r
+
+R,N,B,Q,K,B,N,R
+P,P,P,P,P,P,P,P
+ , , , , , , ,
+ , , , , , , ,
+ , , , ,p, , ,
+ , , , , , , ,
+p,p,p,p, ,p,p,p
+r,n,b,q,k,b,n,r
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.4', 'Array')}}{{Spec2('ES5.1')}}Добавлены новые методы: {{jsxref("Array.isArray")}}, {{jsxref("Array.prototype.indexOf", "indexOf")}}, {{jsxref("Array.prototype.lastIndexOf", "lastIndexOf")}}, {{jsxref("Array.prototype.every", "every")}}, {{jsxref("Array.prototype.some", "some")}}, {{jsxref("Array.prototype.forEach", "forEach")}}, {{jsxref("Array.prototype.map", "map")}}, {{jsxref("Array.prototype.filter", "filter")}}, {{jsxref("Array.prototype.reduce", "reduce")}}, {{jsxref("Array.prototype.reduceRight", "reduceRight")}}.
{{SpecName('ES2015', '#sec-array-objects', 'Array')}}{{Spec2('ES2015')}}Добавлены новые методы: {{jsxref("Array.from")}}, {{jsxref("Array.of")}}, {{jsxref("Array.prototype.find", "find")}}, {{jsxref("Array.prototype.findIndex", "findIndex")}}, {{jsxref("Array.prototype.fill", "fill")}}, {{jsxref("Array.prototype.copyWithin", "copyWithin")}}.
{{SpecName('ES7', '#sec-array-objects', 'Array')}}{{Spec2('ES7')}}Добавлен новый метод: {{jsxref("Array.prototype.includes()")}}
+ +

Поддержка браузерами

+ +

{{Compat("javascript.builtins.Array")}}

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/indexof/index.html b/files/ru/web/javascript/reference/global_objects/array/indexof/index.html new file mode 100644 index 0000000000..ef6820df41 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/indexof/index.html @@ -0,0 +1,175 @@ +--- +title: Array.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод indexOf() возвращает первый индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет.

+ +

Синтаксис

+ +
arr.indexOf(searchElement[, fromIndex = 0])
+ +

Параметры

+ +
+
searchElement
+
Искомый элемент в массиве.
+
fromIndex
+
Индекс, с которого начинать поиск. Если индекс больше или равен длине массива, возвращается -1, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу. Если рассчитанный индекс оказывается меньше 0, поиск ведётся по всему массиву. Значение по умолчанию равно 0, что означает, что просматривается весь массив.
+
+ +

Описание

+ +

Метод indexOf() сравнивает искомый элемент searchElement с элементами в массиве, используя строгое сравнение (тот же метод используется оператором ===, тройное равно).

+ +

Примеры

+ +

Пример: использование indexOf()

+ +

В следующем примере indexOf() используется для поиска значений в массиве.

+ +
var array = [2, 5, 9];
+array.indexOf(2);     // 0
+array.indexOf(7);     // -1
+array.indexOf(9, 2);  // 2
+array.indexOf(2, -1); // -1
+array.indexOf(2, -3); // 0
+
+ +

Пример: нахождение всех вхождений элемента

+ +

В следующем примере indexOf() используется для поиска всех индексов элемента в указанном массиве, которые с помощью {{jsxref("Array.prototype.push()", "push()")}} добавляются в другой массив.

+ +
var indices = [];
+var array = ['a', 'b', 'a', 'c', 'a', 'd'];
+var element = 'a';
+var idx = array.indexOf(element);
+while (idx != -1) {
+  indices.push(idx);
+  idx = array.indexOf(element, idx + 1);
+}
+
+console.log(indices);
+// [0, 2, 4]
+
+ +

Полифилл

+ +

Метод indexOf() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать indexOf() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/TypeError", "TypeError")}} и {{jsxref("Math.abs()")}} имеют свои первоначальные значения.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.14
+// Ссылка (en): http://es5.github.io/#x15.4.4.14
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.14
+if (!Array.prototype.indexOf) {
+  Array.prototype.indexOf = function(searchElement, fromIndex) {
+    var k;
+
+    // 1. Положим O равным результату вызова ToObject с передачей ему
+    //    значения this в качестве аргумента.
+    if (this == null) {
+      throw new TypeError('"this" is null or not defined');
+    }
+
+    var O = Object(this);
+
+    // 2. Положим lenValue равным результату вызова внутреннего метода Get
+    //    объекта O с аргументом "length".
+    // 3. Положим len равным ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. Если len равен 0, вернём -1.
+    if (len === 0) {
+      return -1;
+    }
+
+    // 5. Если был передан аргумент fromIndex, положим n равным
+    //    ToInteger(fromIndex); иначе положим n равным 0.
+    var n = +fromIndex || 0;
+
+    if (Math.abs(n) === Infinity) {
+      n = 0;
+    }
+
+    // 6. Если n >= len, вернём -1.
+    if (n >= len) {
+      return -1;
+    }
+
+    // 7. Если n >= 0, положим k равным n.
+    // 8. Иначе, n<0, положим k равным len - abs(n).
+    //    Если k меньше нуля 0, положим k равным 0.
+    k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+    // 9. Пока k < len, будем повторять
+    while (k < len) {
+      // a. Положим Pk равным ToString(k).
+      //   Это неявное преобразование для левостороннего операнда в операторе in
+      // b. Положим kPresent равным результату вызова внутреннего метода
+      //    HasProperty объекта O с аргументом Pk.
+      //   Этот шаг может быть объединён с шагом c
+      // c. Если kPresent равен true, выполним
+      //    i.  Положим elementK равным результату вызова внутреннего метода Get
+      //        объекта O с аргументом ToString(k).
+      //   ii.  Положим same равным результату применения
+      //        Алгоритма строгого сравнения на равенство между
+      //        searchElement и elementK.
+      //  iii.  Если same равен true, вернём k.
+      if (k in O && O[k] === searchElement) {
+        return k;
+      }
+      k++;
+    }
+    return -1;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Array.indexOf")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/isarray/index.html b/files/ru/web/javascript/reference/global_objects/array/isarray/index.html new file mode 100644 index 0000000000..a9599389e8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/isarray/index.html @@ -0,0 +1,120 @@ +--- +title: Array.isArray() +slug: Web/JavaScript/Reference/Global_Objects/Array/isArray +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод Array.isArray() возвращает true, если объект является массивом и false, если он массивом не является.

+ +

Синтаксис

+ +
Array.isArray(obj)
+ +

Параметры

+ +
+
obj
+
Объект для проверки.
+
+ +

Возвращаемое значение

+ +

true если объект является {{jsxref("Array")}}; иначе, false.

+ +

Описание

+ +

За подробностям обращайтесь к статье «Абсолютно точное определение того, является ли JavaScript-объект массивом или нет».

+ +

Примеры

+ +
// Все следующие вызовы вернут true
+Array.isArray([]);
+Array.isArray([1]);
+Array.isArray(new Array());
+// Малоизвестный факт: Array.prototype сам является массивом:
+Array.isArray(Array.prototype);
+
+// Все следующие вызовы вернут false
+Array.isArray();
+Array.isArray({});
+Array.isArray(null);
+Array.isArray(undefined);
+Array.isArray(17);
+Array.isArray("Array");
+Array.isArray(true);
+Array.isArray(false);
+Array.isArray({ __proto__: Array.prototype });
+
+ +

instanceof vs isArray

+ +

Когда проверяем экземпляр ArrayArray.isArray предпочтительней, чем instanceof, потому что он работает и с iframes.

+ +
var iframe = document.createElement('iframe');
+document.body.appendChild(iframe);
+xArray = window.frames[window.frames.length-1].Array;
+var arr = new xArray(1,2,3); // [1,2,3]
+
+// Correctly checking for Array
+Array.isArray(arr);  // true
+// Considered harmful, because doesn't work through iframes
+arr instanceof Array; // false
+
+ +

Полифилл

+ +

Выполнение следующего кода перед любым другим кодом создаст метод Array.isArray(), если он ещё не реализован в браузере.

+ +
if (!Array.isArray) {
+  Array.isArray = function(arg) {
+    return Object.prototype.toString.call(arg) === '[object Array]';
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.isArray")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/join/index.html b/files/ru/web/javascript/reference/global_objects/array/join/index.html new file mode 100644 index 0000000000..28ae457276 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/join/index.html @@ -0,0 +1,110 @@ +--- +title: Array.prototype.join() +slug: Web/JavaScript/Reference/Global_Objects/Array/join +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/join +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод join() объединяет все элементы массива (или массивоподобного объекта) в строку.

+ +

{{EmbedInteractiveExample("pages/js/array-join.html")}}

+ +

Синтаксис

+ +
arr.join([separator])
+ +

Параметры

+ +
+
separator {{optional_inline}}
+
Определяет строку, разделяющую элементы массива. В случае необходимости тип разделителя приводится к типу Строка. Если он не задан, элементы массива разделяются запятой ','. Если разделитель - пустая строка, элементы массива ничем не разделяются в возвращаемой строке.
+
+ +

Возвращаемое значение

+ +

Строка, содержащая все элементы массива. Если arr.length == 0,  то будет возвращена пустая строка.

+ +

Описание

+ +

Преобразует все элементы массива в строки и объединяет их в одну большую строку. Элемент массива с типом undefined или null преобразуется в пустую строку.

+ +

Примеры

+ +

Соединение массива четырьмя различными способами

+ +

В следующем примере создаётся массив a с тремя элементами, затем они четыре раза объединяются в строку: с использованием разделителя по умолчанию, запятой с пробелом, плюса, окружённого пробелами, и пустой строки.

+ +
var a = ['Ветер', 'Дождь', 'Огонь'];
+var myVar1 = a.join();      // присвоит 'Ветер,Дождь,Огонь' переменной myVar1
+var myVar2 = a.join(', ');  // присвоит 'Ветер, Дождь, Огонь' переменной myVar2
+var myVar3 = a.join(' + '); // присвоит 'Ветер + Дождь + Огонь' переменной myVar3
+var myVar4 = a.join('');    // присвоит 'ВетерДождьОгонь' переменной myVar4
+
+ +

Соединение элементов массивоподобного объекта

+ +

В следующем примере соединяется массивоподобный объект (в данном случае список аргументов функции) с использованием вызова {{jsxref("Function.prototype.call")}} для Array.prototype.join.

+ +
function f(a, b, c) {
+  var s = Array.prototype.join.call(arguments);
+  console.log(s); // '1,a,true'
+}
+f(1, 'a', true);
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.join")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/keys/index.html b/files/ru/web/javascript/reference/global_objects/array/keys/index.html new file mode 100644 index 0000000000..94cc84dd43 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/keys/index.html @@ -0,0 +1,90 @@ +--- +title: Array.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Array/keys +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys +--- +
{{JSRef}}
+ + + +

Метод keys() возвращает новый итератор массива Array Iterator, содержащий ключи каждого индекса в массиве.

+ +
{{EmbedInteractiveExample("pages/js/array-keys.html")}}
+ + + +

Синтаксис

+ +
arr.keys()
+ +

Примеры

+ +

Пример: базовое использование

+ +
var arr = ['a', 'b', 'c'];
+var iterator = arr.keys();
+
+console.log(iterator.next()); // { value: 0, done: false }
+console.log(iterator.next()); // { value: 1, done: false }
+console.log(iterator.next()); // { value: 2, done: false }
+console.log(iterator.next()); // { value: undefined, done: true }
+
+ +

Пример: итератор, возвращаемый методом keys(), не пропускает дырки в массиве

+ +
var arr = ['a', , 'c'];
+var sparseKeys = Object.keys(arr);
+var denseKeys = [...arr.keys()];
+console.log(sparseKeys); // [0, 2]
+console.log(denseKeys);  // [0, 1, 2]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES2015', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ESDraft')}} 
+ + +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.keys")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html new file mode 100644 index 0000000000..d5125cd9e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html @@ -0,0 +1,167 @@ +--- +title: Array.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +--- +
{{JSRef}}
+ +

Метод lastIndexOf() возвращает последний индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет. Массив просматривается от конца к началу, начиная с индекса fromIndex.

+ +
{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}
+ + +

Синтаксис

+ +
arr.lastIndexOf(searchElement[, fromIndex = arr.length])
+ +

Параметры

+ +
+
searchElement
+
Искомый элемент в массиве.
+
fromIndex
+
Необязательный параметр. Индекс, с которого начинать поиск в обратном направлении. Если индекс больше или равен длине массива, просматривается весь массив. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от конца к началу. Если рассчитанный индекс оказывается меньше 0, массив даже не просматривается. Значение по умолчанию равно длине массива, что означает, что просматривается весь массив.
+
+ +

Описание

+ +

Метод lastIndexOf() сравнивает искомый элемент searchElement с элементами в массиве, используя строгое сравнение (тот же метод используется оператором ===, тройное равно).

+ +

Примеры

+ +

Пример: использование lastIndexOf()

+ +

В следующем примере метод lastIndexOf() используется для поиска значений в массиве.

+ +
var array = [2, 5, 9, 2];
+array.lastIndexOf(2);     // 3
+array.lastIndexOf(7);     // -1
+array.lastIndexOf(2, 3);  // 3
+array.lastIndexOf(2, 2);  // 0
+array.lastIndexOf(2, -2); // 0
+array.lastIndexOf(2, -1); // 3
+
+ +

Пример: нахождение всех вхождений элемента

+ +

В следующем примере метод lastIndexOf() используется для поиска всех индексов элемента в указанном массиве, которые с помощью метода {{jsxref("Array.prototype.push()", "push()")}} добавляются в другой массив.

+ +
var indices = [];
+var array = ['a', 'b', 'a', 'c', 'a', 'd'];
+var element = 'a';
+var idx = array.lastIndexOf(element);
+while (idx != -1) {
+  indices.push(idx);
+  idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
+}
+
+console.log(indices);
+// [4, 2, 0]
+
+ +

Обратите внимание, что мы обрабатываем случай idx == 0 отдельно, поскольку элемент всегда будет найден, независимо от параметра fromIndex, если он является первым элементом в массиве. Этим он отличается от метода {{jsxref("Array.prototype.indexOf()", "indexOf()")}}.

+ +

Полифилл

+ +

Метод lastIndexOf() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать lastIndexOf() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, {{jsxref("Global_Objects/Number", "Number")}}, {{jsxref("Math.floor()")}}, {{jsxref("Math.abs()")}} и {{jsxref("Math.min()")}} имеют свои первоначальные значения.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.15
+// Ссылка (en): http://es5.github.io/#x15.4.4.15
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.15
+if (!Array.prototype.lastIndexOf) {
+  Array.prototype.lastIndexOf = function(searchElement/*, fromIndex*/) {
+    'use strict';
+
+    if (this === void 0 || this === null) {
+      throw new TypeError();
+    }
+
+    var n, k,
+        t = Object(this),
+        len = t.length >>> 0;
+    if (len === 0) {
+      return -1;
+    }
+
+    n = len - 1;
+    if (arguments.length > 1) {
+      n = Number(arguments[1]);
+      if (n != n) {
+        n = 0;
+      }
+      else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
+        n = (n > 0 || -1) * Math.floor(Math.abs(n));
+      }
+    }
+
+    for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) {
+      if (k in t && t[k] === searchElement) {
+        return k;
+      }
+    }
+    return -1;
+  };
+}
+
+ +

И снова обратите внимание, что данная реализация нацелена на абсолютную совместимость с методом lastIndexOf(), реализованным в Firefox и движке JavaScript SpiderMonkey, включая несколько случаев, которые являются спорными крайними случаями. Если вы используете этот код в реальных приложениях, вы можете вычислять параметр from менее сложным образом, игнорируя эти случаи.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.lastIndexOf")}}

+
+ +

Замечания по совместимости

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/length/index.html b/files/ru/web/javascript/reference/global_objects/array/length/index.html new file mode 100644 index 0000000000..402e1005a4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/length/index.html @@ -0,0 +1,146 @@ +--- +title: Array.length +slug: Web/JavaScript/Reference/Global_Objects/Array/length +tags: + - Array + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Array/length +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Cвойство length объекта, который является экземпляром типа Array , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.

+ +
var items = ['shoes', 'shirts', 'socks', 'sweaters'];
+items.length;
+
+// возвращает 4
+ +

Синтаксис

+ +
arr.length
+ +

Описание

+ +

Свойство length является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (232).

+ +
var namelistA = new Array(4294967296); //2 в 32 степени = 4294967296
+var namelistC = new Array(-100) //отрицательная величина
+
+console.log(namelistA.length); //RangeError: Invalid array length
+console.log(namelistC.length); //RangeError: Invalid array length
+
+
+
+var namelistB = [];
+namelistB.length = Math.pow(2,32)-1; //устанавливает длину массива меньше 2 в 32 степени
+console.log(namelistB.length);
+
+//4294967295
+
+ +

В любой момент вы можете установить свойство length для обрезки массива. Когда вы расширяете массив, изменяя его свойство length, реальное количество элементов в массиве увеличивается; например, если вы установите свойство length в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно undefined .

+ +
var arr = [1, 2, 3];
+printEntries(arr);
+
+arr.length = 5; // устанавливает длину массива 5.
+printEntries(arr);
+
+function printEntries(arr) {
+  var goNext = true;
+  var entries = arr.entries();
+  while (goNext) {
+    var result = entries.next();
+    if (result.done !== true) {
+      console.log(result.value[1]);
+      goNext = true;
+    } else
+      goNext = false;
+  }
+  console.log('=== printed ===');
+}
+
+// 1
+// 2
+// 3
+// === printed ===
+// 1
+// 2
+// 3
+// undefined
+// undefined
+// === printed ===
+ +

Таким образом, свойство length ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел Взаимосвязь свойства length с числовыми свойствами.

+ +

{{js_property_attributes(1, 0, 0)}}

+ +

Примеры

+ +

Пример: итерирование по массиву

+ +

В следующем примере массив numbers итерируется до значения свойства length, показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.

+ +
var numbers = [1, 2, 3, 4, 5];
+
+for (var i = 0; i < numbers.length; i++) {
+  numbers[i] *= 2;
+}
+// Массив numbers теперь равен [2, 4, 6, 8, 10];
+
+ +

Пример: сокращение массива

+ +

Следующий пример сокращает массив statesUS до длины в 50 элементов, если текущая длина массива больше 50.

+ +
if (statesUS.length > 50) {
+  statesUS.length = 50;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}{{Spec2('ESDraft')}}    
+ +

Совместимость с браузерами

+ +
+

{{Compat("javascript.builtins.Array.length")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/map/index.html b/files/ru/web/javascript/reference/global_objects/array/map/index.html new file mode 100644 index 0000000000..95e63de892 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/map/index.html @@ -0,0 +1,284 @@ +--- +title: Array.prototype.map() +slug: Web/JavaScript/Reference/Global_Objects/Array/map +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/map +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод map() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.

+ +

Синтаксис

+ +
let new_array = arr.map(function callback( currentValue[, index[, array]]) {
+    // Возвращает элемент для new_array
+}[, thisArg])
+ +

Параметры

+ +
+
callback
+
+

Функция, вызываемая для каждого элемента массива arr. Каждый раз, когда callback выполняется, возвращаемое значение добавляется в new_array.

+ +

Функция callback, создающая элемент в новом массиве, принимает три аргумента:

+ +
+
currentValue
+
Текущий обрабатываемый элемент массива.
+
index{{optional_inline}}
+
Индекс текущего обрабатываемого элемента в массиве.
+
array{{optional_inline}}
+
Массив, по которому осуществляется проход.
+
+
+
thisArg{{optional_inline}}
+
Необязательный параметр. Значение, используемое в качестве this при вызове функции callback
+
+ +

Возвращаемое значение

+ +

Новый массив, где каждый элемент является результатом callback функции.

+ +

Описание

+ +

Метод map вызывает переданную функцию callback один раз для каждого элемента, в порядке их появления и конструирует новый массив из результатов её вызова. Функция callback вызывается только для индексов массива, имеющих присвоенные значения, включая {{jsxref("Global_Objects/undefined", "undefined")}}. Она не вызывается для пропущенных элементов массива (то есть для индексов, которые никогда не были заданы, которые были удалены или которым никогда не было присвоено значение.

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод map был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно обычным правилам определения this, видимого из функции.

+ +

Метод map не изменяет массив, для которого он был вызван (хотя функция callback может это делать).

+ +

Диапазон элементов, обрабатываемых методом map, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода map, не будут посещены функцией callback. Если существующие элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод map посетит их; удалённые элементы посещены не будут.

+ +

Примеры

+ +

Пример: отображение массива чисел на массив квадратных корней

+ +

Следующий код берёт массив чисел и создаёт новый массив, содержащий квадратные корни чисел из первого массива.

+ +
var numbers = [1, 4, 9];
+var roots = numbers.map(Math.sqrt);
+// теперь roots равен [1, 2, 3], а numbers всё ещё равен [1, 4, 9]
+
+ +

Пример: отображение массива чисел с использованием функции, содержащей аргумент

+ +

Следующий код показывает, как работает отображение, когда функция требует один аргумент. Аргумент будет автоматически присваиваться каждому элементу массива, когда map проходит по оригинальному массиву.

+ +
var numbers = [1, 4, 9];
+var doubles = numbers.map(function(num) {
+  return num * 2;
+});
+// теперь doubles равен [2, 8, 18], а numbers всё ещё равен [1, 4, 9]
+
+ +

Пример: обобщённое использование map

+ +

Этот пример показывает, как использовать map на объекте строки {{jsxref("Global_Objects/String", "String")}} для получения массива байт в кодировке ASCII, представляющего значения символов:

+ +
var map = Array.prototype.map;
+var a = map.call('Hello World', function(x) { return x.charCodeAt(0); });
+// теперь a равен [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
+
+ +

Пример: обобщённое использование map вместе с querySelectorAll

+ +

Этот пример показывает, как пройтись по коллекции объектов, собранных с помощью querySelectorAll. В данном случае мы получаем все выбранные опции на экране и печатаем их в консоль:

+ +
var elems = document.querySelectorAll('select option:checked');
+var values = [].map.call(elems, function(obj) {
+  return obj.value;
+});
+
+ +

Более простым способом будет использование метода {{jsxref("Array.from()")}}.

+ +

Пример: использование map для переворачивания строки

+ +
var str = '12345';
+[].map.call(str, function(x) {
+  return x;
+}).reverse().join('');
+
+// Вывод: '54321'
+// Бонус: используйте '===' для проверки того, является ли строка палиндромом
+
+ +

Более простым способом будет использование метода {{jsxref("String.split()")}} (см. пример обращение строки при помощи метода split()).

+ +

Пример: хитрый вариант использования

+ +

(навеяно этой записью в блоге)

+ +

Распространённой практикой является использование функции обратного вызова с одним аргументом (элемент, над которым производится операция). Некоторые функции также широко используется с одним аргументом, хотя они принимают дополнительные необязательные аргументы. Эти привычки могут привести к неожиданному поведению программы.

+ +
// Рассмотрим пример:
+['1', '2', '3'].map(parseInt);
+// Хотя ожидаемый результат вызова равен [1, 2, 3],
+// в действительности получаем [1, NaN, NaN]
+
+// Функция parseInt часто используется с одним аргументом, но она принимает два.
+// Первый аргумент является выражением, а второй - основанием системы счисления.
+// В функцию callback Array.prototype.map передаёт 3 аргумента:
+// элемент, его индекс и сам массив.
+// Третий аргумент игнорируется parseInt, но не второй, следовательно,
+// возможна путаница. Смотрите запись в блоге для дополнительной информации.
+
+function returnInt(element) {
+  return parseInt(element, 10);
+}
+
+['1', '2', '3'].map(returnInt);
+// Результатом является массив чисел (как и ожидалось)
+
+// Простейший способ добиться вышеозначенного поведения и избежать чувства "чё за!?":
+['1', '2', '3'].map(Number); // [1, 2, 3]
+
+ +

Полифилл

+ +

Метод map был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать map в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}} и {{jsxref("Global_Objects/Array", "Array")}} имеют свои первоначальные значения и что callback.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call")}}.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.19
+// Ссылка (en): http://es5.github.com/#x15.4.4.19
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.19
+if (!Array.prototype.map) {
+
+  Array.prototype.map = function(callback, thisArg) {
+
+    var T, A, k;
+
+    if (this == null) {
+      throw new TypeError(' this is null or not defined');
+    }
+
+    // 1. Положим O равным результату вызова ToObject с передачей ему
+    //    значения |this| в качестве аргумента.
+    var O = Object(this);
+
+    // 2. Положим lenValue равным результату вызова внутреннего метода Get
+    //    объекта O с аргументом "length".
+    // 3. Положим len равным ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. Если вызов IsCallable(callback) равен false, выкидываем исключение TypeError.
+    // Смотрите (en): http://es5.github.com/#x9.11
+    // Смотрите (ru): http://es5.javascript.ru/x9.html#x9.11
+    if (typeof callback !== 'function') {
+      throw new TypeError(callback + ' is not a function');
+    }
+
+    // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined.
+    if (arguments.length > 1) {
+      T = thisArg;
+    }
+
+    // 6. Положим A равным новому масиву, как если бы он был создан выражением new Array(len),
+    //    где Array является стандартным встроенным конструктором с этим именем,
+    //    а len является значением len.
+    A = new Array(len);
+
+    // 7. Положим k равным 0
+    k = 0;
+
+    // 8. Пока k < len, будем повторять
+    while (k < len) {
+
+      var kValue, mappedValue;
+
+      // a. Положим Pk равным ToString(k).
+      //   Это неявное преобразование для левостороннего операнда в операторе in
+      // b. Положим kPresent равным результату вызова внутреннего метода HasProperty
+      //    объекта O с аргументом Pk.
+      //   Этот шаг может быть объединён с шагом c
+      // c. Если kPresent равен true, то
+      if (k in O) {
+
+        // i. Положим kValue равным результату вызова внутреннего метода Get
+        //    объекта O с аргументом Pk.
+        kValue = O[k];
+
+        // ii. Положим mappedValue равным результату вызова внутреннего метода Call
+        //     функции callback со значением T в качестве значения this и списком
+        //     аргументов, содержащим kValue, k и O.
+        mappedValue = callback.call(T, kValue, k, O);
+
+        // iii. Вызовем внутренний метод DefineOwnProperty объекта A с аргументами
+        // Pk, Описатель Свойства
+        // { Value: mappedValue,
+        //   Writable: true,
+        //   Enumerable: true,
+        //   Configurable: true }
+        // и false.
+
+        // В браузерах, поддерживающих Object.defineProperty, используем следующий код:
+        // Object.defineProperty(A, k, {
+        //   value: mappedValue,
+        //   writable: true,
+        //   enumerable: true,
+        //   configurable: true
+        // });
+
+        // Для лучшей поддержки браузерами, используем следующий код:
+        A[k] = mappedValue;
+      }
+      // d. Увеличим k на 1.
+      k++;
+    }
+
+    // 9. Вернём A.
+    return A;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.map")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/observe/index.html b/files/ru/web/javascript/reference/global_objects/array/observe/index.html new file mode 100644 index 0000000000..f8d7d9cd07 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/observe/index.html @@ -0,0 +1,138 @@ +--- +title: Array.observe() +slug: Web/JavaScript/Reference/Global_Objects/Array/observe +tags: + - Array + - ECMAScript7 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) +translation_of: Archive/Web/JavaScript/Array.observe +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод Array.observe() используется для асинхронного обзора изменений в массивах, подобно тому, как метод {{jsxref("Object.observe()")}} используется для тех же целей для объектов. Он предоставляет поток изменений в порядке их возникновения.

+ +

Синтаксис

+ +
Array.observe(arr, callback)
+ +

Параметры

+ +
+
arr
+
Обозреваемый массив.
+
callback
+
Функция, вызываемая на каждое сделанное изменение со следующими аргументами: +
+
changes
+
Массив объектов, каждый из которых представляет одно изменение. Эти объекты обладают следующими свойствами: +
    +
  • name: название изменённого свойства.
  • +
  • object: изменённый массив, после применения этого изменения.
  • +
  • type: строка, указывающая тип произошедшего изменения. Может быть одной из "add", "update", "delete" или "splice".
  • +
  • oldValue: только для типов "update" и "delete". Значение до изменения.
  • +
  • index: только для типа "splice". Индекс, по которому произошло изменение.
  • +
  • removed: только для типа "splice". Массив с удалёнными элементами.
  • +
  • addedCount: только для типа "splice". Количество добавленных элементов.
  • +
+
+
+
+
+ +

Описание

+ +

Функция callback вызывается каждый раз, когда с массивом arr происходят какие-либо изменения. Параметром в неё передаётся массив со всеми произошедшими изменениями в порядке их возникновения.

+ +
+

Изменения через методы объекта {{jsxref("Array")}}, например, посредством метода {{jsxref("Array.prototype.pop()")}}, будут зарегистрированы как изменения типа "splice". Присваивание по индексу, в результате которого размер массива не изменится, может быть зарегистрировано, как изменение типа "update".

+
+ +

Примеры

+ +

Пример: журналирование всех трёх типов событий

+ +
var arr = ['a', 'b', 'c'];
+
+Array.observe(arr, function(changes) {
+  console.log(changes);
+});
+
+arr[1] = 'B';
+// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}]
+
+arr[3] = 'd';
+// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}]
+
+arr.splice(1, 2, 'beta', 'gamma', 'delta');
+// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}]
+
+ +

Спецификации

+ +

Черновое предложение к обсуждению для ECMAScript 7.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/of/index.html b/files/ru/web/javascript/reference/global_objects/array/of/index.html new file mode 100644 index 0000000000..3f798e0516 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/of/index.html @@ -0,0 +1,99 @@ +--- +title: Array.of() +slug: Web/JavaScript/Reference/Global_Objects/Array/of +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/of +--- +
{{JSRef}}
+ +

Метод Array.of() создаёт новый экземпляр массива Array из произвольного числа аргументов, вне зависимости от числа или типа аргумента.

+ +

Разница между Array.of() и конструктором Array заключается в обработке целочисленных аргументов: Array.of(7) создаёт массив с одним элементом 7, а Array(7) создаёт пустой массив со значением свойства length равным 7 (Замечание: подразумевается 7 пустых слотов, а не слоты со значением undefined).

+ +
Array.of(7);       // [7]
+Array.of(1, 2, 3); // [1, 2, 3]
+
+Array(7);          // массив с 7 пустыми слотами
+Array(1, 2, 3);    // [1, 2, 3]
+ +

Синтаксис

+ +
Array.of(element0[, element1[, ...[, elementN]]])
+ +

Параметры

+ +
+
elementN
+
Элементы, из которых создаётся массив.
+
+ +

Возвращаемое значение

+ +

Новый массив {{jsxref("Array")}}.

+ +

Описание

+ +

Эта функция является частью стандарта ECMAScript 6. Для дополнительной информации смотрите предложение по Array.of и Array.from и полифилл для Array.of.

+ +

Примеры

+ +
Array.of(1);         // [1]
+Array.of(1, 2, 3);   // [1, 2, 3]
+Array.of(undefined); // [undefined]
+
+ +

Полифилл

+ +

Выполнение следующего кода перед любым другим кодом создаст метод Array.of(), если он ещё не реализован в браузере.

+ +
if (!Array.of) {
+  Array.of = function() {
+    return Array.prototype.slice.call(arguments);
+    // Or
+    let vals = []
+    for(let prop in arguments){
+        vals.push(arguments[prop])
+    }
+    return vals.slice()
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.of', 'Array.of')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Array.of")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/pop/index.html b/files/ru/web/javascript/reference/global_objects/array/pop/index.html new file mode 100644 index 0000000000..0f6ba275f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/pop/index.html @@ -0,0 +1,99 @@ +--- +title: Array.prototype.pop() +slug: Web/JavaScript/Reference/Global_Objects/Array/pop +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop +--- +
{{JSRef}}
+ +

Сводка

+ +

Метод pop() удаляет последний элемент из массива и возвращает его значение.

+ +

Синтаксис

+ +
arr.pop()
+ +

Возвращаемое значение

+ +

Последний элемент массива или {{jsxref("undefined")}}, если массив пуст.

+ +

Описание

+ +

Метод pop удаляет последний элемент из массива и возвращает удалённое значение.

+ +

Метод pop не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к массивоподобным объектам. Объекты, не содержащие свойство length, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.

+ +

Если вы вызовете pop() на пустом массиве, он вернёт значение {{jsxref("undefined")}}.

+ +

Примеры

+ +

Удаление последнего элемента массива

+ +

Следующий код создаёт массив myFish, содержащий четыре элемента, а затем удаляет последний элемент.

+ +
var myFish = ['ангел', 'клоун', 'мандарин', 'хирург'];
+
+console.log(myFish); // ['ангел', 'клоун', 'мандарин', 'хирург']
+
+var popped = myFish.pop();
+
+console.log(myFish); // ['ангел', 'клоун', 'мандарин']
+
+console.log(popped); // 'хирург'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+
+ + +

{{Compat("javascript.builtins.Array.pop")}}

+
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/prototype/index.html b/files/ru/web/javascript/reference/global_objects/array/prototype/index.html new file mode 100644 index 0000000000..4d04fc0736 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/prototype/index.html @@ -0,0 +1,171 @@ +--- +title: Array.prototype +slug: Web/JavaScript/Reference/Global_Objects/Array/prototype +tags: + - Array + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Свойство Array.prototype представляет прототип для конструктора {{jsxref("Global_Objects/Array", "Array", "массива")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Экземпляры Array наследуются от Array.prototype. Как и с остальными конструкторами, вы можете изменять прототип конструктора объекта для применения изменений ко всем экземплярам класса Array.

+ +

Небольшой факт: Array.prototype сам является экземпляром Array:

+ +
Array.isArray(Array.prototype); // true
+ +

Свойства

+ +
+
Array.prototype.constructor
+
Определяет функцию, создающую прототип объекта.
+
{{jsxref("Array.prototype.length")}}
+
Отражает количество элементов в массиве.
+
+ +

Методы

+ +

Методы изменения

+ +

Эти методы изменяют массив:

+ +
+
{{jsxref("Array.prototype.copyWithin()")}} {{experimental_inline}}
+
Копирует последовательность элементов массива внутри массива.
+
{{jsxref("Array.prototype.fill()")}} {{experimental_inline}}
+
Заполняет все элементы массива от начального индекса до конечного индекса указанным значением.
+
{{jsxref("Array.prototype.pop()")}}
+
Удаляет последний элемент из массива и возвращает его.
+
{{jsxref("Array.prototype.push()")}}
+
Добавляет один или более элементов в конец массива и возвращает новую длину массива.
+
{{jsxref("Array.prototype.reverse()")}}
+
Переворачивает порядок элементов в массиве — первый элемент становится последним, а последний — первым.
+
{{jsxref("Array.prototype.shift()")}}
+
Удаляет первый элемент из массива и возвращает его.
+
{{jsxref("Array.prototype.sort()")}}
+
Сортирует элементы массива на месте и возвращает отсортированный массив.
+
{{jsxref("Array.prototype.splice()")}}
+
Добавляет и/или удаляет элементы из массива.
+
{{jsxref("Array.prototype.unshift()")}}
+
Добавляет один или более элементов в начало массива и возвращает новую длину массива.
+
+ +

Методы доступа

+ +

Эти методы не изменяют массив, а просто возвращают его в ином представлении.

+ +
+
{{jsxref("Array.prototype.concat()")}}
+
Возвращает новый массив, состоящий из данного массива, соединённого с другим массивом и/или значением (списком массивов/значений).
+
{{jsxref("Array.prototype.includes()")}} {{experimental_inline}}
+
Определяет, содержится ли в массиве указанный элемент, возвращая, соответственно, true или false.
+
{{jsxref("Array.prototype.join()")}}
+
Объединяет все элементы массива в строку.
+
{{jsxref("Array.prototype.slice()")}}
+
Извлекает диапазон значений и возвращает его в виде нового массива.
+
{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает литеральное представление указанного массива; вы можете использовать это значение для создания нового массива. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Array.prototype.toString()")}}
+
Возвращает строковое представление массива и его элементов. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Array.prototype.toLocaleString()")}}
+
Возвращает локализованное строковое представление массива и его элементов. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.
+
{{jsxref("Array.prototype.indexOf()")}}
+
Возвращает первый (наименьший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.
+
{{jsxref("Array.prototype.lastIndexOf()")}}
+
Возвращает последний (наибольший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.
+
+ +

Методы обхода

+ +

Некоторые методы принимают в качестве аргументов функции, вызываемые при обработке массива. Когда вызываются эти методы, достаётся длина массива, и любой элемент, добавленный свыше этой длины изнутри функции обратного вызова не посещается. Другие изменения в массиве (установка значения или удаление элемента) могут повлиять на результаты операции, если изменённый элемент метод посещает после изменения. Хотя специфическое поведение этих методов в таких случаях хорошо определено, вы не должны на него полагаться, чтобы не запутывать других людей, читающих ваш код. Если вам нужно изменить массив, лучше вместо этого скопируйте его в новый массив.

+ +
+
{{jsxref("Array.prototype.forEach()")}}
+
Вызывает функцию для каждого элемента в массиве.
+
{{jsxref("Array.prototype.entries()")}} {{experimental_inline}}
+
Возвращает новый объект итератора массива Array Iterator, содержащий пары ключ / значение для каждого индекса в массиве.
+
{{jsxref("Array.prototype.every()")}}
+
Возвращает true, если каждый элемент в массиве удовлетворяет условию проверяющей функции.
+
{{jsxref("Array.prototype.some()")}}
+
Возвращает true, если хотя бы один элемент в массиве удовлетворяет условию проверяющей функции.
+
{{jsxref("Array.prototype.filter()")}}
+
Создаёт новый массив со всеми элементами этого массива, для которых функция фильтрации возвращает true.
+
{{jsxref("Array.prototype.find()")}} {{experimental_inline}}
+
Возвращает искомое значение в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или {{jsxref("Global_Objects/undefined", "undefined")}}, если такое значение не найдено.
+
{{jsxref("Array.prototype.findIndex()")}} {{experimental_inline}}
+
Возвращает искомый индекс в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или -1, если такое значение не найдено.
+
{{jsxref("Array.prototype.keys()")}} {{experimental_inline}}
+
Возвращает новый итератор массива, содержащий ключи каждого индекса в массиве.
+
{{jsxref("Array.prototype.map()")}}
+
Создаёт новый массив с результатами вызова указанной функции на каждом элементе данного массива.
+
{{jsxref("Array.prototype.reduce()")}}
+
Применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.
+
{{jsxref("Array.prototype.reduceRight()")}}
+
Применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.
+
{{jsxref("Array.prototype.values()")}} {{experimental_inline}}
+
Возвращает новый объект итератора массива Array Iterator, содержащий значения для каждого индекса в массиве.
+
{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}} {{experimental_inline}}
+
Возвращает новый объект итератора массива Array Iterator, содержащий значения для каждого индекса в массиве.
+
+ +

Общие методы

+ +

Многие методы JavaScript-массива спроектированы таким образом, чтобы иметь возможность применяться ко всем объектам, «выглядящим похоже» на массивы. То есть, они могут использоваться на любом объекте, имеющим свойство length и к элементам которого можно получить доступ через числовые имена свойств (как при индексации: array[5]). TODO: предоставить примеры с Array.prototype.forEach.call и добавлением методов к объекту, как сделано для {{jsxref("Global_Objects/JavaArray", "JavaArray")}} или {{jsxref("Global_Objects/String", "String")}}. Некоторые методы, например {{jsxref("Array.join", "join")}}, только читают свойство length и числовые свойства объекта, на котором они вызываются. Другие, вроде {{jsxref("Array.reverse", "reverse")}} требуют, чтобы числовые свойства и свойство length объекта были изменяемыми; эти методы не могут вызываться на объектах вроде {{jsxref("Global_Objects/String", "String")}}, которые не позволяют установку своего свойства length или синтезирование числовых свойств.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Array.prototype")}}

+ +

 

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/push/index.html b/files/ru/web/javascript/reference/global_objects/array/push/index.html new file mode 100644 index 0000000000..d746b2cd88 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/push/index.html @@ -0,0 +1,111 @@ +--- +title: Array.prototype.push() +slug: Web/JavaScript/Reference/Global_Objects/Array/push +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/push +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод push() добавляет один или более элементов в конец массива и возвращает новую длину массива.

+ +

Синтаксис

+ +
arr.push(element1, ..., elementN)
+ +

Параметры

+ +
+
elementN
+
Элементы, добавляемые в конец массива.
+
+ +

Возвращаемое значение

+ +

Новое значение свойства {{jsxref("Array.length", "length")}} объекта, для которого был вызван данный метод.

+ +

Описание

+ +

Метод push присоединяет значения к массиву.

+ +

Метод push не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Метод опирается на свойство length для определения места вставки значений. Если свойство length не может быть преобразовано в число, будет использовать индекс 0. Сюда входит случай несуществования свойства length, в этом случае оно также будет создано.

+ +

Единственными родными массивоподобными объектами являются {{jsxref("Global_Objects/String", "строки", "", 1)}}, хотя к ним он не может быть применён, поскольку строки являются неизменяемыми.

+ +

Примеры

+ +

Пример: добавление элементов в массив

+ +

Следующий код создаёт массив sports, содержащий два элемента, а затем добавляет к нему ещё два элемента. Переменная total будет содержать новую длину массива.

+ +
var sports = ['футбол', 'бейсбол'];
+var total = sports.push('американский футбол', 'плавание');
+
+console.log(sports); // ['футбол', 'бейсбол', 'американский футбол', 'плавание']
+console.log(total);  // 4
+
+ +

Пример: слияние двух массивов

+ +

В этом примере используется функция {{jsxref("Function.apply", "apply()")}} для помещения всех элементов из второго массива в первый.

+ +
var vegetables = ['пастернак', 'картошка'];
+var moreVegs = ['сельдерей', 'свёкла'];
+
+// Сливает второй массив с первым
+// Эквивалентно вызову vegetables.push('сельдерей', 'свёкла');
+Array.prototype.push.apply(vegetables, moreVegs);
+
+console.log(vegetables); // ['пастернак', 'картошка', 'сельдерей', 'свёкла']
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е изданиеСтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+
+ + +

{{Compat("javascript.builtins.Array.push")}}

+
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/reduce/index.html b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html new file mode 100644 index 0000000000..b65fb98ed4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html @@ -0,0 +1,314 @@ +--- +title: Array.prototype.reduce() +slug: Web/JavaScript/Reference/Global_Objects/Array/Reduce +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.8 + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce +--- +
{{JSRef}}
+ +

Метод reduce() применяет функцию reducer к каждому элементу массива (слева-направо), возвращая одно результирующее значение.

+ +
{{EmbedInteractiveExample("pages/js/array-reduce.html")}}
+ + + +

Синтаксис

+ +
array.reduce(callback[, initialValue])
+ +

Параметры

+ +
+
callback
+
Функция, выполняющаяся для каждого элемента массива, принимает четыре аргумента: +
+
accumulator
+
Аккумулятор, аккумулирующий значение, которое возвращает функция callback после посещения очередного элемента, либо значение initialValue, если оно предоставлено (смотрите пояснения ниже).
+
currentValue
+
Текущий обрабатываемый элемент массива.
+
index{{optional_inline}}
+
Индекс текущего обрабатываемого элемента массива.
+
array{{optional_inline}}
+
Массив, для которого была вызвана функция reduce.
+
+
+
initialValue{{optional_inline}}
+
Необязательный параметр. Объект, используемый в качестве первого аргумента при первом вызове функции callback.
+
+ +

Описание

+ +

Метод reduce() выполняет функцию callback один раз для каждого элемента, присутствующего в массиве, за исключением пустот, принимая четыре аргумента: начальное значение (или значение от предыдущего вызова callback), значение текущего элемента, текущий индекс и массив, по которому происходит итерация.

+ +

При первом вызове функции, параметры accumulator и currentValue могут принимать одно из двух значений. Если при вызове reduce() передан аргумент initialValue, то значение accumulator будет равным значению initialValue, а значение currentValue будет равным первому значению в массиве. Если аргумент initialValue не задан, то значение accumulator будет равным первому значению в массиве, а значение currentValue будет равным второму значению в массиве.

+ +

Если массив пустой и аргумент initialValue не указан, будет брошено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Если массив состоит только из одного элемента (независимо от его положения в массиве) и аргумент initialValue не указан, или если аргумент initialValue указан, но массив пустой, то будет возвращено одно это значение, без вызова функции callback.

+ +

Предположим, что reduce() используется следующим образом:

+ +
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) {
+  return previousValue + currentValue;
+});
+
+ +

Функция обратного вызова будет вызвана четыре раза, аргументы и возвращаемое значение при каждом вызове будут следующими:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
previousValuecurrentValueindexarrayвозвращаемое значение
первый вызов011[0, 1, 2, 3, 4]1
второй вызов122[0, 1, 2, 3, 4]3
третий вызов333[0, 1, 2, 3, 4]6
четвёртый вызов644[0, 1, 2, 3, 4]10
+ +

Значение, возвращённое методом reduce() будет равным последнему результату выполнения функции обратного вызова (10).

+ +

Если же вы зададите начальное значение initialValue, результат будет выглядеть так:

+ +
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, index, array) {
+  return accumulator + currentValue;
+}, 10);
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulatorcurrentValueindexarrayвозвращаемое значение
первый вызов1000[0, 1, 2, 3, 4]10
второй вызов1011[0, 1, 2, 3, 4]11
третий вызов1122[0, 1, 2, 3, 4]13
четвёртый вызов1333[0, 1, 2, 3, 4]16
пятый вызов1644[0, 1, 2, 3, 4]20
+ +

Значение, возвращённое методом reduce() на этот раз, конечно же, будет равным 20.

+ +

Примеры

+ +

Суммирование всех значений в массиве

+ +
var total = [0, 1, 2, 3].reduce(function(a, b) {
+  return a + b;
+});
+// total == 6
+
+ +

Суммирование значений в массиве объектов

+ +

Чтобы суммировать значения, содержащиеся в массиве объектов, вы должны указать initialValue, чтобы каждый элемент смог пройти через callback.

+ +
var initialValue = 0;
+var sum = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulator, currentValue) {
+    return accumulator + currentValue.x;
+}, initialValue)
+// sum == 6
+
+ +

Тоже самое, но со стрелочной функцией: 

+ +
var initialValue = 0;
+var sum = [{x: 1}, {x:2}, {x:3}].reduce(
+    (accumulator, currentValue) => accumulator + currentValue.x,
+    initialValue
+);
+// sum == 6
+
+ +

Разворачивание массива массивов

+ +
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
+  return a.concat(b);
+});
+// flattened равен [0, 1, 2, 3, 4, 5]
+
+ +

Пример: склеивание массивов, содержащихся в объектах массива, с использованием оператора расширения и initialValue

+ +
// friends - список из объектов(друзей)
+// где поле "books" - список любимых книг друга
+var friends = [
+{ name: "Anna", books: ["Bible", "Harry Potter"], age: 21 },
+{ name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26 },
+{ name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18 }
+]
+
+// allbooks - список, который будет содержать все книги друзей +
+// дополнительный список указанный в initialValue
+var allbooks = friends.reduce(function(prev, curr) {
+  return [...prev, ...curr.books];
+}, ["Alphabet"]);
+
+// allbooks = ["Alphabet", "Bible", "Harry Potter", "War and peace",
+// "Romeo and Juliet", "The Lord of the Rings", "The Shining"]
+
+ +

Полифилл

+ +

Метод Array.prototype.reduce() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать reduce() в реализациях, которые не поддерживают этот метод.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.21
+// Ссылка (en): http://es5.github.io/#x15.4.4.21
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.21
+if (!Array.prototype.reduce) {
+  Array.prototype.reduce = function(callback/*, initialValue*/) {
+    'use strict';
+    if (this == null) {
+      throw new TypeError('Array.prototype.reduce called on null or undefined');
+    }
+    if (typeof callback !== 'function') {
+      throw new TypeError(callback + ' is not a function');
+    }
+    var t = Object(this), len = t.length >>> 0, k = 0, value;
+    if (arguments.length >= 2) {
+      value = arguments[1];
+    } else {
+      while (k < len && ! (k in t)) {
+        k++;
+      }
+      if (k >= len) {
+        throw new TypeError('Reduce of empty array with no initial value');
+      }
+      value = t[k++];
+    }
+    for (; k < len; k++) {
+      if (k in t) {
+        value = callback(value, t[k], k, t);
+      }
+    }
+    return value;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce()')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.
{{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.reduce")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html b/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html new file mode 100644 index 0000000000..08bb7e978d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html @@ -0,0 +1,290 @@ +--- +title: Array.prototype.reduceRight() +slug: Web/JavaScript/Reference/Global_Objects/Array/reduceRight +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.8 + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+

Метод reduceRight() применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.

+ +

Синтаксис

+
arr.reduceRight(callback[, initialValue])
+ +

Параметры

+
+
callback
+
Функция, выполняющаяся для каждого элемента массива, принимает четыре аргумента: +
+
previousValue
+
Значение, возвращённое предыдущим выполнением функции callback, либо значение initialValue, если оно предоставлено (смотрите пояснения ниже).
+
currentValue
+
Текущий обрабатываемый элемент массива.
+
index
+
Индекс текущего обрабатываемого элемента массива.
+
array
+
Массив, для которого была вызвана функция reduceRight.
+
+
+
initialValue
+
Необязательный параметр. Объект, используемый в качестве первого аргумента при первом вызове функции callback.
+
+ +

Описание

+

Метод reduceRight() выполняет функцию callback один раз для каждого элемента, присутствующего в массиве, за исключением пустот, принимая четыре аргумента: начальное значение (или значение от предыдущего вызова callback), значение текущего элемента, текущий индекс и массив, по которому происходит итерация.

+

Вызов функции обратного вызова callback будет выглядеть так:

+
array.reduceRight(function(previousValue, currentValue, index, array) {
+  // ...
+});
+
+

При первом вызове функции, параметры previousValue и currentValue могут принимать одно из двух значений. Если при вызове reduceRight() передан аргумент initialValue, то значение previousValue будет равным значению initialValue, а значение currentValue будет равным последнему значению в массиве. Если аргумент initialValue не задан, то значение previousValue будет равным последнему значению в массиве, а значение currentValue будет равным второму с конца значению в массиве.

+

Если массив пустой и аргумент initialValue не указан, будет брошено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Если массив состоит только из одного элемента (независимо от его положения в массиве) и аргумент initialValue не указан, или если аргумент initialValue указан, но массив пустой, то будет возвращено одно это значение, без вызова функции callback.

+

Вот так будут выглядеть некоторый примеры прогона функции:

+
[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) {
+  return previousValue + currentValue;
+});
+
+

Функция обратного вызова будет вызвана четыре раза, аргументы и возвращаемое значение при каждом вызове будут следующими:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 previousValuecurrentValueindexarrayвозвращаемое значение
первый вызов433[0, 1, 2, 3, 4]7
второй вызов722[0, 1, 2, 3, 4]9
третий вызов911[0, 1, 2, 3, 4]10
четвёртый вызов1000[0, 1, 2, 3, 4]10
+

Значение, возвращённое методом reduceRight() будет равным последнему результату выполнения функции обратного вызова (10).

+

Если же вы зададите начальное значение initialValue, результат будет выглядеть так:

+
[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) {
+  return previousValue + currentValue;
+}, 10);
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 previousValuecurrentValueindexarrayвозвращаемое значение
первый вызов1044[0, 1, 2, 3, 4]14
второй вызов1433[0, 1, 2, 3, 4]17
третий вызов1722[0, 1, 2, 3, 4]19
четвёртый вызов1911[0, 1, 2, 3, 4]20
пятый вызов2000[0, 1, 2, 3, 4]20
+

Значение, возвращённое методом reduceRight() на этот раз, конечно же, будет равным 20.

+ +

Примеры

+ +

Пример: суммирование всех значений в массиве

+
var total = [0, 1, 2, 3].reduceRight(function(a, b) {
+  return a + b;
+});
+// total == 6
+
+ +

Пример: разворачивание массива массивов

+
var flattened = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) {
+  return a.concat(b);
+}, []);
+// flattened равен [4, 5, 2, 3, 0, 1]
+
+ +

Полифилл

+

Метод Array.prototype.reduceRight() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать reduceRight() в реализациях, которые не поддерживают этот метод.

+
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.22
+// Ссылка (en): http://es5.github.io/#x15.4.4.22
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.22
+if ('function' !== typeof Array.prototype.reduceRight) {
+  Array.prototype.reduceRight = function(callback/*, initialValue*/) {
+    'use strict';
+    if (null === this || 'undefined' === typeof this) {
+      throw new TypeError('Array.prototype.reduce called on null or undefined');
+    }
+    if ('function' !== typeof callback) {
+      throw new TypeError(callback + ' is not a function');
+    }
+    var t = Object(this), len = t.length >>> 0, k = len - 1, value;
+    if (arguments.length >= 2) {
+      value = arguments[1];
+    } else {
+      while (k >= 0 && !k in t) {
+        k--;
+      }
+      if (k < 0) {
+        throw new TypeError('Reduce of empty array with no initial value');
+      }
+      value = t[k--];
+    }
+    for (; k >= 0; k--) {
+      if (k in t) {
+        value = callback(value, t[k], k, t);
+      }
+    }
+    return value;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.
{{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("4.0")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/array/reverse/index.html b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html new file mode 100644 index 0000000000..15bb946242 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html @@ -0,0 +1,96 @@ +--- +title: Array.prototype.reverse() +slug: Web/JavaScript/Reference/Global_Objects/Array/reverse +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse +--- +
{{JSRef}}
+ +

Метод reverse() на месте обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым.

+ +
{{EmbedInteractiveExample("pages/js/array-reverse.html")}}
+ + + +

Синтаксис

+ +
array.reverse()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Перевернутный массив

+ +

Описание

+ +

Метод reverse() на месте переставляет элементы массива, на котором он был вызван, изменяет массив и возвращает ссылку на него.

+ +

Примеры

+ +

Пример: обращение порядка элементов в массиве

+ +

В следующем примере создаётся массив myArray, содержащий три элемента, а затем массив переворачивается.

+ +
var myArray = ['один', 'два', 'три'];
+myArray.reverse();
+
+console.log(myArray) // ['три', 'два', 'один']
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}{{Spec2('ESDraft')}} 
+ + +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.reverse")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/shift/index.html b/files/ru/web/javascript/reference/global_objects/array/shift/index.html new file mode 100644 index 0000000000..081339bd93 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/shift/index.html @@ -0,0 +1,139 @@ +--- +title: Array.prototype.shift() +slug: Web/JavaScript/Reference/Global_Objects/Array/shift +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод shift() удаляет первый элемент из массива и возвращает его значение. Этот метод изменяет длину массива.

+ +

Синтаксис

+ +
arr.shift()
+ +

Описание

+ +

Метод shift удаляет элемент по нулевому индексу, сдвигает значения по последовательным индексам вниз, а затем возвращает удалённое значение. Если свойство {{jsxref("Array.length", "length")}} массива равно 0, вернётся значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Метод shift не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Объекты, не содержащие свойство length, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.

+ +

Примеры

+ +

Пример: удаление элемента из массива

+ +

Следующий код показывает массив myFish до и после удаления его первого элемента. Также он показывает удалённый элемент:

+ +
var myFish = ['ангел', 'клоун', 'мандарин', 'хирург'];
+
+console.log('myFish до: ' + myFish);
+//myFish до: ангел,клоун,мандарин,хирург
+
+var shifted = myFish.shift();
+
+console.log('myFish после: ' + myFish);
+//myFish после: клоун,мандарин,хирург
+
+console.log('Удалён этот элемент: ' + shifted);
+//Удалён этот элемент: ангел
+
+ +

Вывод этого примера будет следующим:

+ +
myFish до: ангел,клоун,мандарин,хирург
+myFish после: клоун,мандарин,хирург
+Удалён этот элемент: ангел
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/slice/index.html b/files/ru/web/javascript/reference/global_objects/array/slice/index.html new file mode 100644 index 0000000000..1b35c36e24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/slice/index.html @@ -0,0 +1,242 @@ +--- +title: Array.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/Array/slice +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice +--- +
{{JSRef}}
+ +

Метод slice() возвращает новый массив, содержащий копию части исходного массива.

+ +
{{EmbedInteractiveExample("pages/js/array-slice.html")}}
+ + + +

Синтаксис

+ +
arr.slice([begin[, end]])
+ +

Параметры

+ +
+
begin {{optional_inline}}
+
Индекс (счёт начинается с нуля), по которому начинать извлечение.
+
Если индекс отрицательный, begin указывает смещение от конца последовательности. Вызов slice(-2) извлечёт два последних элемента последовательности.
+
Если begin неопределен, slice() начинает работать с индекса 0.
+
Если begin больше длины последовательности вернется пустой массив.
+
end {{optional_inline}}
+
Индекс (счёт начинается с нуля), по которому заканчивать извлечение. Метод slice() извлекает элементы с индексом меньше end.
+
Вызов slice(1, 4) извлечёт элементы со второго по четвёртый (элементы по индексам 1, 2 и 3).
+
Если индекс отрицательный, end указывает смещение от конца последовательности. Вызов slice(2, -1) извлечёт из последовательности элементы начиная с третьего элемента с начала и заканчивая вторым с конца.
+
Если end опущен, slice() извлекает все элементы до конца последовательности (arr.length).
+
+ +

Возвращаемое значение

+ +

Новый массив, содержащий извлеченные элементы.

+ +

Описание

+ +

Метод slice() не изменяет исходный массив, а возвращает новую «одноуровневую» копию, содержащую копии элементов, вырезанных из исходного массива. Элементы исходного массива копируются в новый массив по следующим правилам:

+ + + +

Если к любому массиву будет добавлен новый элемент, это никак не повлияет на другой массив.

+ +

Примеры

+ +

Пример: возврат части существующего массива

+ +
// Пример: наши хорошие друзья цитрусовые среди фруктов
+var fruits = ['Банан', 'Апельсин', 'Лимон', 'Яблоко', 'Манго'];
+var citrus = fruits.slice(1, 3);
+
+// citrus содержит ['Апельсин', 'Лимон']
+
+ +

Пример: использование метода slice()

+ +

В следующем примере метод slice() создаёт новый массив, newCar, из массива myCar. Оба содержат ссылку на объект myHonda. Когда цвет в объекте myHonda изменяется на багровый, оба массива замечают это изменение.

+ +
// Используя slice, создаём newCar из myCar.
+var myHonda = { color: 'красный', wheels: 4, engine: { cylinders: 4, size: 2.2 } };
+var myCar = [myHonda, 2, 'в хорошем состоянии', 'приобретена в 1997'];
+var newCar = myCar.slice(0, 2);
+
+// Отображаем значения myCar, newCar и цвет myHonda
+//  по ссылкам из обоих массивов.
+console.log('myCar = ' + myCar.toSource());
+console.log('newCar = ' + newCar.toSource());
+console.log('myCar[0].color = ' + myCar[0].color);
+console.log('newCar[0].color = ' + newCar[0].color);
+
+// Изменяем цвет myHonda.
+myHonda.color = 'багровый';
+console.log('Новый цвет моей Honda - ' + myHonda.color);
+
+// Отображаем цвет myHonda по ссылкам из обоих массивов.
+console.log('myCar[0].color = ' + myCar[0].color);
+console.log('newCar[0].color = ' + newCar[0].color);
+
+ +

Этот скрипт выведет:

+ +
myCar = [{color:'красный', wheels:4, engine:{cylinders:4, size:2.2}}, 2,
+         'в хорошем состоянии', 'приобретена в 1997']
+newCar = [{color:'красный', wheels:4, engine:{cylinders:4, size:2.2}}, 2]
+myCar[0].color = красный
+newCar[0].color = красный
+Новый цвет моей Honda - багровый
+myCar[0].color = багровый
+newCar[0].color = багровый
+
+ +

Массивоподобные объекты

+ +

Метод slice() также может использоваться для преобразования массивоподобных объектов / коллекций в новый массив Array. Вам просто нужно привязать метод к объекту. Псевдомассив {{jsxref("Functions_and_function_scope/arguments", "arguments")}} внутри функции как раз является примером «массивоподобного объекта».

+ +
function list() {
+  return Array.prototype.slice.call(arguments, 0);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+ +

Привязка может быть осуществлена посредством функции .call() из прототипа функции {{jsxref("Function.prototype")}}, также запись может быть сокращена до [].slice.call(arguments) вместо использования Array.prototype.slice.call(). В любом случае, она может быть упрощена посредством использования функции {{jsxref("Function.prototype.bind()", "bind()")}}.

+ +
var unboundSlice = Array.prototype.slice;
+var slice = Function.prototype.call.bind(unboundSlice);
+
+function list() {
+  return slice(arguments, 0);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+ +

Совершенствование кросс-браузерного поведения

+ +

Хотя спецификация не требует от хост-объектов (например, объектов DOM) следовать поведению Mozilla при преобразовании с помощью Array.prototype.slice() и IE < 9 так не делает, версии IE, начиная с 9-й это умеют. «Прокладывание» позволяет добиться надёжного кросс-браузерного поведения. Пока другие современные браузеры будут поддерживать эту способность, что и делают в настоящее время IE, Mozilla, Chrome, Safari и Opera, разработчики, читая (поддерживающий DOM) код функции slice(), опирающийся на эту прокладку, не будут вводиться в заблуждение его семантикой; они могут смело полагаться на текущую семантику, являющуюся, видимо, де-факто стандартным поведением. (Прокладка также исправляет поведение IE, позволяя работать со вторым аргументом slice(), явно определённым как {{jsxref("Global_Objects/null", "null")}}/{{jsxref("Global_Objects/undefined", "undefined")}}, поскольку более ранние версии IE такое не позволяют, но все современные браузеры, в том числе IE >= 9, поддерживают данное поведение.)

+ +
/**
+ * Прокладка для "исправления" отсутствия поддержки в IE < 9 применения slice
+ * к хост-объектам вроде NamedNodeMap, NodeList и HTMLCollection
+ * (технически, поскольку хост-объекты зависят от реализации,
+ * по крайней мере, до ES2015, IE не обязан так работать).
+ * Также работает для строк, исправляет поведение IE < 9, позволяя явно указывать undefined
+ * вторым аргументом (как в Firefox), и предотвращает ошибки, возникающие при
+ * вызове на других объектах DOM.
+ */
+(function () {
+  'use strict';
+  var _slice = Array.prototype.slice;
+
+  try {
+    // Не может использоваться с элементами DOM в IE < 9
+    _slice.call(document.documentElement);
+  } catch (e) { // В IE < 9 кидается исключение
+    // Функция будет работать для истинных массивов, массивоподобных объектов,
+    // NamedNodeMap (атрибуты, сущности, примечания),
+    // NodeList (например, getElementsByTagName), HTMLCollection (например, childNodes)
+    // и не будет падать на других объектах DOM (как это происходит на элементах DOM в IE < 9)
+    Array.prototype.slice = function(begin, end) {
+      // IE < 9 будет недоволен аргументом end, равным undefined
+      end = (typeof end !== 'undefined') ? end : this.length;
+
+      // Для родных объектов Array мы используем родную функцию slice
+      if (Object.prototype.toString.call(this) === '[object Array]') {
+        return _slice.call(this, begin, end);
+      }
+
+      // Массивоподобные объекты мы обрабатываем самостоятельно
+      var i, cloned = [],
+          size, len = this.length;
+
+      // Обрабатываем отрицательное значение begin
+      var start = begin || 0;
+      start = (start >= 0) ? start: len + start;
+
+      // Обрабатываем отрицательное значение end
+      var upTo = (end) ? end : len;
+      if (end < 0) {
+        upTo = len + end;
+      }
+
+      // Фактически ожидаемый размер среза
+      size = upTo - start;
+
+      if (size > 0) {
+        cloned = new Array(size);
+        if (this.charAt) {
+          for (i = 0; i < size; i++) {
+            cloned[i] = this.charAt(start + i);
+          }
+        } else {
+          for (i = 0; i < size; i++) {
+            cloned[i] = this[start + i];
+          }
+        }
+      }
+
+      return cloned;
+    };
+  }
+}());
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Array.slice")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/some/index.html b/files/ru/web/javascript/reference/global_objects/array/some/index.html new file mode 100644 index 0000000000..ee4c18f9f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/some/index.html @@ -0,0 +1,215 @@ +--- +title: Array.prototype.some() +slug: Web/JavaScript/Reference/Global_Objects/Array/some +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - Référence(2) + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/some +--- +
{{JSRef}}
+ +

Метод some() проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции.

+ +
+

Обратите внимание: метод возвращает false при любом условии для пустого массива.

+
+ +

{{EmbedInteractiveExample("pages/js/array-some.html")}}

+ +

Синтаксис

+ +
arr.some(callback(element[, index[, array]])[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция проверки каждого элемента, принимает три аргумента: +
+
element
+
Текущий обрабатываемый элемент массива.
+
index{{Optional_inline}}
+
Индекс текущего обрабатываемого элемента массива.
+
array{{Optional_inline}}
+
Массив, по которому осуществляется проход.
+
+
+
thisArg{{Optional_inline}}
+
Значение, используемое в качестве this при выполнении функции callback.
+
+ +

Возвращаемое значение

+ +

true, если функция проверки возвращает {{Glossary("truthy")}} значение хотя бы для одного элемента массива. Иначе, false.

+ +

Описание

+ +

Метод some() вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого callback вернет истинное значение (значение, становящееся равным true при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод some() немедленно вернёт true. В противном случае, если callback вернёт false для всех элементов массива, метод some() вернёт false. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод some() был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно обычным правилам определения this, видимого из функции.

+ +

Метод some() не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом some(), устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода some(), не будут посещены функцией callback. Если существующие элементы массива изменятся, значения, переданные в функцию callback, будут значениями на тот момент времени, когда метод some() посетит их; удалённые элементы посещены не будут.

+ +

Примеры

+ +

Проверка значений элементов массива

+ +

Следующий пример проверяет наличие в массиве элемента, который больше 10.

+ +
function isBiggerThan10(element, index, array) {
+  return element > 10;
+}
+[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
+[12, 5, 8, 1, 4].some(isBiggerThan10); // true
+
+ +

{{ EmbedLiveSample('Проверка_значений_элементов_массива', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}

+ +

Проверка элементов массива с использованием стрелочных функций

+ +

Стрелочные функции предоставляют более краткий синтаксис для подобных проверок.

+ +
[2, 5, 8, 1, 4].some(elem => elem > 10);  // false
+[12, 5, 8, 1, 4].some(elem => elem > 10); // true
+
+ +

{{ EmbedLiveSample('Проверка_элементов_массива_с_использованием_стрелочных_функций', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}

+ +

Проверка наличия элемента в массиве

+ +

Чтобы имитировать функцию метода includes(), эта пользовательская функция возвращает true, если элемент существует в массиве:

+ +
const fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+  return arr.some(function(arrVal) {
+    return val === arrVal;
+  });
+}
+
+checkAvailability(fruits, 'kela');   // false
+checkAvailability(fruits, 'banana'); // true
+ +

{{ EmbedLiveSample('Проверка_наличия_элемента_в_массиве', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}

+ +

Проверка наличия элемента в массиве с использованием стрелочной функции

+ +
const fruits = ['apple', 'banana', 'mango', 'guava'];
+
+function checkAvailability(arr, val) {
+  return arr.some(arrVal => val === arrVal);
+}
+
+checkAvailability(fruits, 'kela');   // false
+checkAvailability(fruits, 'banana'); // true
+ +

{{ EmbedLiveSample('Проверка_наличия_элемента_в_массиве_с_использованием_стрелочной_функции', '', '', '', 'Experiment:StaticExamplesOnTop/JavaScript/Array/some') }}

+ +

Приведение значения к логическому типу

+ +
const TRUTHY_VALUES = [true, 'true', 1];
+
+function getBoolean(value) {
+  'use strict';
+
+  if (typeof value === 'string') {
+    value = value.toLowerCase().trim();
+  }
+
+  return TRUTHY_VALUES.some(function(t) {
+    return t === value;
+  });
+}
+
+getBoolean(false);   // false
+getBoolean('false'); // false
+getBoolean(1);       // true
+getBoolean('true');  // true
+ +

{{ EmbedLiveSample('Приведение_значения_к_логическому_типу', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}

+ +

Полифилл

+ +

Метод some() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать some() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает, что {{jsxref("Global_Objects/Object", "Object")}} и {{jsxref("Global_Objects/TypeError", "TypeError")}} имеют свои первоначальные значения и что callback.call вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.

+ +
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.17
+// Ссылка (en): http://es5.github.io/#x15.4.4.17
+// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.17
+if (!Array.prototype.some) {
+  Array.prototype.some = function(fun/*, thisArg*/) {
+    'use strict';
+
+    if (this == null) {
+      throw new TypeError('Array.prototype.some called on null or undefined');
+    }
+
+    if (typeof fun !== 'function') {
+      throw new TypeError();
+    }
+
+    var t = Object(this);
+    var len = t.length >>> 0;
+
+    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
+    for (var i = 0; i < len; i++) {
+      if (i in t && fun.call(thisArg, t[i], i, t)) {
+        return true;
+      }
+    }
+
+    return false;
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Array.some")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/sort/index.html b/files/ru/web/javascript/reference/global_objects/array/sort/index.html new file mode 100644 index 0000000000..06769275e6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/sort/index.html @@ -0,0 +1,234 @@ +--- +title: Array.prototype.sort() +slug: Web/JavaScript/Reference/Global_Objects/Array/sort +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод sort() на месте сортирует элементы массива и возвращает отсортированный массив. Сортировка не обязательно устойчива (англ.). Порядок cортировки по умолчанию соответствует порядку кодовых точек Unicode.

+ +

Синтаксис

+ +
arr.sort([compareFunction])
+ +

Параметры

+ +
+
compareFunction
+
Необязательный параметр. Указывает функцию, определяющую порядок сортировки. Если опущен, массив сортируется в соответствии со значениями кодовых точек каждого символа Unicode, полученных путём преобразования каждого элемента в строку.
+
+ +

Возвращаемое значение

+ +

Отсортированный массив. Важно, что копия массива не создается - массив сортируется на месте.

+ +

Описание

+ +

Если функция сравнения compareFunction не предоставляется, элементы сортируются путём преобразования их в строки и сравнения строк в порядке следования кодовых точек Unicode. Например, слово "Вишня" идёт перед словом "бананы". При числовой сортировке, 9 идёт перед 80, но поскольку числа преобразуются в строки, то "80" идёт перед "9" в соответствии с порядком в Unicode.

+ +
var fruit = ['арбузы', 'бананы', 'Вишня'];
+fruit.sort(); // ['Вишня', 'арбузы', 'бананы']
+
+var scores = [1, 2, 10, 21];
+scores.sort(); // [1, 10, 2, 21]
+
+var things = ['слово', 'Слово', '1 Слово', '2 Слова'];
+things.sort(); // ['1 Слово', '2 Слова', 'Слово', 'слово']
+// В Unicode, числа находятся перед буквами в верхнем регистре,
+// а те, в свою очередь, перед буквами в нижнем регистре.
+
+ +

Если функция сравнения compareFunction предоставлена, элементы массива сортируются в соответствии с её возвращаемым значением. Если сравниваются два элемента a и b, то:

+ + + +

Итак, функция сравнения имеет следующую форму:

+ +
function compare(a, b) {
+  if (a меньше b по некоторому критерию сортировки) {
+    return -1;
+  }
+  if (a больше b по некоторому критерию сортировки) {
+    return 1;
+  }
+  // a должно быть равным b
+  return 0;
+}
+
+ +

Для числового сравнения, вместо строкового, функция сравнения может просто вычитать b из a. Следующая функция будет сортировать массив по возрастанию:

+ +
function compareNumbers(a, b) {
+  return a - b;
+}
+
+ +

Метод sort можно удобно использовать с {{jsxref("Operators/function", "функциональными выражениями", "", 1)}} (и замыканиями):

+ +
var numbers = [4, 2, 5, 1, 3];
+numbers.sort(function(a, b) {
+  return a - b;
+});
+console.log(numbers); // [1, 2, 3, 4, 5]
+
+ +

Объекты могут быть отсортированы по значению одного из своих свойств.

+ +
var items = [
+  { name: 'Edward', value: 21 },
+  { name: 'Sharpe', value: 37 },
+  { name: 'And', value: 45 },
+  { name: 'The', value: -12 },
+  { name: 'Magnetic' },
+  { name: 'Zeros', value: 37 }
+];
+items.sort(function (a, b) {
+  if (a.name > b.name) {
+    return 1;
+  }
+  if (a.name < b.name) {
+    return -1;
+  }
+  // a должно быть равным b
+  return 0;
+});
+
+ +

Примеры

+ +

Пример: создание, отображение и сортировка массива

+ +

В следующем примере создаётся четыре массива, сначала отображается первоначальный массив, а затем они сортируются. Числовые масивы сортируются сначала без, а потом с функцией сравнения.

+ +
var stringArray = ['Голубая', 'Горбатая', 'Белуга'];
+var numericStringArray = ['80', '9', '700'];
+var numberArray = [40, 1, 5, 200];
+var mixedNumericArray = ['80', '9', '700', 40, 1, 5, 200];
+
+function compareNumbers(a, b) {
+  return a - b;
+}
+
+// снова предполагаем, что функция печати определена
+console.log('stringArray:', stringArray.join());
+console.log('Сортировка:', stringArray.sort());
+
+console.log('numberArray:', numberArray.join());
+console.log('Сортировка без функции сравнения:', numberArray.sort());
+console.log('Сортировка с функцией compareNumbers:', numberArray.sort(compareNumbers));
+
+console.log('numericStringArray:', numericStringArray.join());
+console.log('Сортировка без функции сравнения:', numericStringArray.sort());
+console.log('Сортировка с функцией compareNumbers:', numericStringArray.sort(compareNumbers));
+
+console.log('mixedNumericArray:', mixedNumericArray.join());
+console.log('Сортировка без функции сравнения:', mixedNumericArray.sort());
+console.log('Сортировка с функцией compareNumbers:', mixedNumericArray.sort(compareNumbers));
+
+ +

Этот пример произведёт следующий вывод. Как показывает вывод, когда используется функция сравнения, числа сортируются корректно вне зависимости от того, являются ли они собственно числами или строками с числами.

+ +
stringArray: Голубая,Горбатая,Белуга
+Сортировка: Белуга,Голубая,Горбатая
+
+numberArray: 40,1,5,200
+Сортировка без функции сравнения: 1,200,40,5
+Сортировка с функцией compareNumbers: 1,5,40,200
+
+numericStringArray: 80,9,700
+Сортировка без функции сравнения: 700,80,9
+Сортировка с функцией compareNumbers: 9,80,700
+
+mixedNumericArray: 80,9,700,40,1,5,200
+Сортировка без функции сравнения: 1,200,40,5,700,80,9
+Сортировка с функцией compareNumbers: 1,5,9,40,80,200,700
+
+ +

Пример: сортировка не-ASCII символов

+ +

Для сортировки строк с не-ASCII символами, то есть строк с символами акцента (e, é, è, a, ä и т.д.), строк, с языками, отличными от английского: используйте {{jsxref("String.localeCompare")}}. Эта функция может сравнивать эти символы, чтобы они становились в правильном порядке.

+ +
var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
+items.sort(function (a, b) {
+  return a.localeCompare(b);
+});
+
+// items равен ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']
+
+ +

Пример: сортировка c помощью map

+ +

Функция сравнения (compareFunction) может вызываться несколько раз для каждого элемента в массиве. В зависимости от природы функции сравнения, это может привести к высоким расходам ресурсов. Чем более сложна функция сравнения и чем больше элементов требуется отсортировать, тем разумнее использовать map для сортировки. Идея состоит в том, чтобы обойти массив один раз, чтобы извлечь фактические значения, используемые для сортировки, во временный массив, отсортировать временный массив, а затем обойти временный массив для получения правильного порядка.

+ +
// массив для сортировки
+var list = ['Дельта', 'альфа', 'ЧАРЛИ', 'браво'];
+
+// временный массив содержит объекты с позицией и значением сортировки
+var mapped = list.map(function(el, i) {
+return { index: i, value: el.toLowerCase() };
+});
+
+// сортируем массив, содержащий уменьшенные значения
+mapped.sort(function(a, b) {
+  if (a.value > b.value) {
+    return 1; }
+  if (a.value < b.value) {
+    return -1; }
+  return 0;
+});
+
+// контейнер для результа
+var result = mapped.map(function(el) {
+  return list[el.index];
+});
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Array.sort")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/splice/index.html b/files/ru/web/javascript/reference/global_objects/array/splice/index.html new file mode 100644 index 0000000000..a714590fab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/splice/index.html @@ -0,0 +1,142 @@ +--- +title: Array.prototype.splice() +slug: Web/JavaScript/Reference/Global_Objects/Array/splice +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод splice() изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые.

+ +

Синтаксис

+ +
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
+
+ +

Параметры

+ +
+
start
+
Индекс, по которому начинает изменять массив. Если больше длины массива, реальный индекс будет установлен на длину массива. Если отрицателен, указывает индекс элемента с конца.
+
deleteCount {{optional_inline}}
+
Целое число, показывающее количество старых удаляемых из массива элементов. Если deleteCount равен 0, элементы не удаляются. В этом случае вы должны указать как минимум один новый элемент. Если deleteCount больше количества элементов, оставшихся в массиве, начиная с индекса start, то будут удалены все элементы до конца массива.
+
item{{optional_inline}}
+
Необязательные параметры. Добавляемые к массиву элементы. Если вы не укажете никакого элемента, splice() просто удалит элементы из массива.
+
+ +

Возвращаемое значение

+ +

Массив, содержащий удалённые элементы. Если будет удалён только один элемент, вернётся массив из одного элемента. Если никакие элементы не будут удалены, вернётся пустой массив.

+ +

Описание

+ +

Если количество указанных вставляемых элементов будет отличным от количества удаляемых элементов, массив изменит длину после вызова.

+ +

Примеры

+ +

Удаляет 0 элементов по индексу 2 и вставляет "drum"

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(2, 0, 'drum');
+
+// myFish равен ["angel", "clown", "drum", "mandarin", "sturgeon"]
+// removed равен [], ничего не удалено
+ +

Удаляет 1 элемент по индексу 3

+ +
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(3, 1);
+
+// removed равен ["mandarin"]
+// myFish равен ["angel", "clown", "drum", "sturgeon"]
+ +

Удаляет 1 элемент по индексу 2 и вставляет "trumpet"

+ +
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
+var removed = myFish.splice(2, 1, 'trumpet');
+
+// myFish равен ["angel", "clown", "trumpet", "sturgeon"]
+// removed равен ["drum"]
+ +

Удаляет 2 элемента начиная с индекса 0 и вставляет "parrot", "anemone" и "blue"

+ +
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
+var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
+
+// myFish равен ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
+// removed равен ["angel", "clown"]
+ +

Удаляет 2 элемента начиная с индекса 2

+ +
var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
+var removed = myFish.splice(myFish.length - 3, 2);
+
+// myFish равен ["parrot", "anemone", "sturgeon"]
+// removed равен ["blue", "trumpet"]
+ +

Удаляет 1 элемент по индексу -2

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(-2, 1);
+
+// myFish равен ["angel", "clown", "sturgeon"]
+// removed равен s ["mandarin"]
+ +

Удаляет все элементы после индекса 2 (включительно)

+ +
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
+var removed = myFish.splice(2);
+
+// myFish равен ["angel", "clown"]
+// removed равен ["mandarin", "sturgeon"]
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Array.splice")}}

+ +

Обратная совместимость

+ +

В JavaScript 1.2 метод splice() возвращал удалённый элемент только если был удалён один элемент (параметр deleteCount равен 1); в противном случае метод возвращал массив с удалёнными элементами. Обратите внимание, что последним браузером, использующим JavaScript 1.2, был Netscape Navigator 4, так что вы можете считать, что splice() всегда возвращает массив.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html new file mode 100644 index 0000000000..ed3f4f6088 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html @@ -0,0 +1,134 @@ +--- +title: Array.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +tags: + - Array + - Internationalization + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод toLocaleString() возвращает строковое представление элементов массива. Элементы преобразуются в строки с использованием своих собственных методов toLocaleString и эти строки разделяются локале-зависимой строкой (например, запятой «,»).

+ +

Синтаксис

+ +
arr.toLocaleString();
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Элементы массива преобразуются в строки с использованием своих собственных методов toLocaleString:

+ + + +

Примеры

+ +

Пример: использование toLocaleString

+ +
var number = 1337;
+var date = new Date();
+var myArr = [number, date, 'foo'];
+
+var str = myArr.toLocaleString();
+
+console.log(str);
+// напечатает '1337,6.12.2013 19:37:35,foo',
+// если работает под германской локалью (de-DE) с временной зоной Европа/Берлин
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.2.4.3', 'Array.prototype.toLocaleString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/tosource/index.html b/files/ru/web/javascript/reference/global_objects/array/tosource/index.html new file mode 100644 index 0000000000..c4d30c1287 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tosource/index.html @@ -0,0 +1,94 @@ +--- +title: Array.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Array/toSource +tags: + - Array + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource +--- +
+ {{JSRef("Global_Objects", "Array")}} {{non-standard_header}}
+

Сводка

+

Метод toSource() возвращает строковое представление исходного кода массива.

+

Синтаксис

+
arr.toSource()
+

Параметры

+

Нет.

+

Описание

+

Метод toSource возвращает следующие значения:

+ +

Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде. Вы можете вызвать toSource во время отладки для просмотра содержимого массива.

+

Примеры

+

Пример: рассмотрение исходного кода массива

+

Для просмотра исходного кода массива:

+
var alpha = new Array('a', 'b', 'c');
+
+alpha.toSource();   // вернёт ['a', 'b', 'c']
+
+

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/array/tostring/index.html b/files/ru/web/javascript/reference/global_objects/array/tostring/index.html new file mode 100644 index 0000000000..f2877df269 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tostring/index.html @@ -0,0 +1,122 @@ +--- +title: Array.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toString +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод toString() возвращает строковое представление указанного массива и его элементов.

+ +

Синтаксис

+ +
arr.toString()
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Объект {{jsxref("Global_Objects/Array", "Array")}} переопределяет метод toString объекта {{jsxref("Global_Objects/Object", "Object")}}. Для объектов класса Array, метод toString соединяет массив и возвращает одну строку, содержащую каждый элемент массива, разделённый запятыми. Например, следующий код создаёт массив и использует метод toString для преобразования массива в строку.

+ +
var monthNames = ['Янв', 'Фев', 'Мар', 'Апр'];
+var myVar = monthNames.toString(); // присваивает 'Янв,Фев,Мар,Апр' переменной myVar.
+
+ +

JavaScript вызывает метод toString автоматически, когда массив представляется текстовым значением или когда массив находится в контексте конкатенации строк.

+ +

Семантика ECMAScript 5

+ +

Начиная с JavaScript 1.8.5 (Firefox 4), и в соответствии с сементикой ECMAScript 5-го издания, метод toString() является обобщённым и может использоваться с любым объектом. В случае с массивами, если он имеет метод join(), он будет вызван и результат его работы будет возвращён. В противном случае будет вызван метод {{jsxref("Object.prototype.toString()")}}, и будет возвращён результат его работы.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/unshift/index.html b/files/ru/web/javascript/reference/global_objects/array/unshift/index.html new file mode 100644 index 0000000000..1d3e095ead --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/unshift/index.html @@ -0,0 +1,89 @@ +--- +title: Array.prototype.unshift() +slug: Web/JavaScript/Reference/Global_Objects/Array/unshift +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод unshift() добавляет один или более элементов в начало массива и возвращает новую длину массива.

+ +

Синтаксис

+ +
arr.unshift(element1[, ...[, elementN]])
+ +

Параметры

+ +
+
element1, ..., elementN
+
Элементы, добавляемые в начало массива.
+
+ +

Возвращаемое значение

+ +

Новое свойство {{jsxref("Array.length", "length")}} объекта, над которым был вызван метод unshift.

+ +

Описание

+ +

Метод unshift вставляет переданные значения в начало массивоподобного объекта.

+ +

Метод unshift не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Объекты, не содержащие свойство length, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.

+ +

Примеры

+ +
var arr = [1, 2];
+
+arr.unshift(0); // результат вызова равен 3, новой длине массива
+// arr равен [0, 1, 2]
+
+arr.unshift(-2, -1); // = 5
+// arr равен [-2, -1, 0, 1, 2]
+
+arr.unshift([-3]);
+// arr равен[[-3], -2, -1, 0, 1, 2]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Array.unshift")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/array/values/index.html b/files/ru/web/javascript/reference/global_objects/array/values/index.html new file mode 100644 index 0000000000..bdd8c8c2f6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/values/index.html @@ -0,0 +1,136 @@ +--- +title: Array.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Array/values +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/values +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод values() возвращает новый объект итератора массива Array Iterator, содержащий значения для каждого индекса в массиве.

+ +

Синтаксис

+ +
arr.values()
+ +

Примеры

+ +

Пример: итерация через цикл for...of

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var eArr = arr.values();
+// ваш браузер должен поддерживать цикл for...of и переменные,
+// объявленные через let в циклах for
+for (let letter of eArr) {
+  console.log(letter);
+}
+
+ +

Пример: альтернативный способ итерации

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var eArr = arr.values();
+console.log(eArr.next().value); // w
+console.log(eArr.next().value); // y
+console.log(eArr.next().value); // k
+console.log(eArr.next().value); // o
+console.log(eArr.next().value); // p
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}9
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Примечание по Firefox

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html new file mode 100644 index 0000000000..3dfc1687ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html @@ -0,0 +1,145 @@ +--- +title: ArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +tags: + - Буфер + - Типизированные массивы +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +--- +
{{JSRef}}
+ +

Объект ArrayBuffer используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не дает. Вместо этого, вы можете создать типизированный массив или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в ArrayBuffer

+ +

Синтаксис

+ +
new ArrayBuffer(length)
+
+ +

Параметры

+ +
+
length
+
Длина создаваемого буфера в байтах.
+
+ +

Возвращаемое значение

+ +

Новый объект ArrayBuffer определенного размера. Изначально содержимое равно 0.

+ +

Описание

+ +

Конструктор ArrayBuffer создает новый ArrayBuffer установленного в байтах размера.

+ +

Создание буфера

+ + + +

Свойства

+ +
+
ArrayBuffer.length
+
Длина конструктора ArrayBuffer, которая равна 1.
+
{{jsxref("ArrayBuffer.prototype")}}
+
Позволяет расширить прототип всех ArrayBuffer объектов.
+
+ +

Методы

+ +
+
{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
+
Возвращает true если arg – одно из представлений ArrayBuffer, например типизированный массив или {{jsxref("DataView")}}. Вернет false в остальных случаях.
+
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
+
+
Вернет новый ArrayBuffer, контент которого будет взят из данных oldBuffer, а затем усечен или дополнен нулевыми значениями до newByteLength.
+
+
+ +

Пример

+ +

В этом примере мы создаем 8-байтный буфер с {{jsxref("Global_Objects/Int32Array", "Int32Array")}} представлением:

+ +
var buffer = new ArrayBuffer(8);
+var view   = new Int32Array(buffer);
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Заменен спецификацией ECMAScript 6.
{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ES6')}}Первичное определение в ECMA стандарте.
+ +

Таблица совместимости

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support7.0{{CompatGeckoDesktop("2")}}1011.65.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support4.0{{CompatVersionUnknown}}{{CompatGeckoMobile("2")}}1011.64.2
+
+ +

Также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html new file mode 100644 index 0000000000..22971e53cd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html @@ -0,0 +1,88 @@ +--- +title: ArrayBuffer.isView() +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView +tags: + - ArrayBuffer + - JavaScript + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView +--- +
{{JSRef}}
+ +

Метод ArrayBuffer.isView(arg) возвращает true, если arg является одним из таких видов ArrayBuffer, как типизированные массивы или {{jsxref("DataView")}}; в ином случае возвращает false.

+ +
{{EmbedInteractiveExample("pages/js/arraybuffer-isview.html")}}
+ + + +

Синтаксис

+ +
ArrayBuffer.isView(arg)
+ +

Параметры

+ +
+
arg
+
Проверяемое значение.
+
+ +

Возвращаемое значение

+ +

true, если переданный аргумент является одним из видов ArrayBuffer; в противном случае false.

+ +

Примеры

+ +
ArrayBuffer.isView();                    // false
+ArrayBuffer.isView([]);                  // false
+ArrayBuffer.isView({});                  // false
+ArrayBuffer.isView(null);                // false
+ArrayBuffer.isView(undefined);           // false
+ArrayBuffer.isView(new ArrayBuffer(10)); // false
+
+ArrayBuffer.isView(new Uint8Array());    // true
+ArrayBuffer.isView(new Float32Array());  // true
+ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true
+
+var buffer = new ArrayBuffer(2);
+var dv = new DataView(buffer);
+ArrayBuffer.isView(dv); // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусПримечание
{{SpecName('Typed Array')}}УстарелоЗаменено в ECMAScript 2015.
{{SpecName('ES2015', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}{{Spec2('ES2015')}}Изначальное определене в стандарте ECMA.
{{SpecName('ESDraft', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}{{Spec2('ESDraft')}}
+ +

Совместимость

+ + + +

{{Compat("javascript.builtins.ArrayBuffer.isView")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html new file mode 100644 index 0000000000..84b8592a5e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html @@ -0,0 +1,125 @@ +--- +title: ArrayBuffer.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice +--- +
{{JSRef}}
+ +

Метод slice() вернет новый ArrayBuffer, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).

+ +

Syntax

+ +
arraybuffer.slice(begin[, end])
+ +

Parameters

+ +
+
begin
+
Указывает с какого индекса начинать slice, начинается с нуля.
+
+ +
+
end
+
Указывает до какого индекса делать slice. Если не указан - slice будет выполнен до конца ArrayBuffer. Разница между begin и end должна быть положительной и быть не более длины ArrayBuffer, в противном случае будет выставлен 0.
+
+ +

Return value

+ +

Новый  объект ArrayBuffer.

+ +

Description

+ +

Метод slice копирует, до индекса в параметре end (не включительно) .  В случае если begin или end негативен, то индекс считается с конца массива.

+ +

Examples

+ +

Копируем ArrayBuffer

+ +
var buf1 = new ArrayBuffer(8);
+var buf2 = buf1.slice(0);
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by EMCAScript 6.
{{SpecName('ES6', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{ CompatGeckoDesktop("12") }}11{{CompatVersionUnknown}}6
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("12") }}11{{CompatVersionUnknown}}6.0
+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..b1475ad6e3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,166 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +
{{JSRef}}
+ +

Конструктор AsyncFunction создает новый объект {{jsxref("Statements/async_function", "async function")}}. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.

+ +

Обратите внимание, что AsyncFunction не является глобальным объектом. Её можно получить, выполнив следующий код.

+ +
Object.getPrototypeOf(async function(){}).constructor
+
+ +

Синтаксис

+ +
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
+ +

Параметры

+ +
+
arg1, arg2, ... argN
+
Имена, используемые функцией как формальные имена аргументов. Каждое имя должно быть строкой, которая соответствует действительному идентификатору JavaScript или списку таких строк, разделенных запятой; например, "x", "theValue", или "a,b". 
+
functionBody
+
Строка, содержащая в себе определение функции в исходном коде JavaScript .
+
+ +

Описание

+ +

Объекты {{jsxref("Statements/async_function", "async function")}}, созданные с помощью AsyncFunction constructor  будут распарсены в момент, когда функция создается. Это менее эффективно, чем объявлять асинхронную функцию с помощью {{jsxref("Statements/async_function", "async function expression")}} и вызывать ее внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.

+ +

Все аргументы, переданные функции, рассматриваются как имена идентификаторов параметров в создаваемой функции в том порядке, в котором они передаются.

+ +
+

Обратите внимание: объекты {{jsxref("Statements/async_function", "async functions")}} созданные с помощью AsyncFunction constructor , не создают замыкания на создающие их контексты; Они всегда создаются в глобальной области видимости. При их запуске они смогут получить доступ только к своим локальным переменным и к глобальным переменным, но не имеют доступа к тем областям видимости, в которых был вызван AsyncFunction constructor. Это отличается от использования {{jsxref("Global_Objects/eval", "eval")}} с кодом для async function. 

+
+ +

Вызов AsyncFunction constructor как функции (без использования оператора new ) имеет тот же эффект, что и вызов его как конструктора.

+ +

Свойства

+ +
+
AsyncFunction.length
+
Свойство length AsyncFunction constructor, значение которого равно 1.
+
{{jsxref("AsyncFunction.prototype")}}
+
Позволяет добавлять свойства ко всем объектам async function.
+
+ +

AsyncFunction prototype object

+ +

Свойства

+ +
{{page('/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Properties')}}
+ +

Экземпляры AsyncFunction

+ +

Экземпляры AsyncFunction наследуют методы и свойства от {{jsxref("AsyncFunction.prototype")}}. Как и для всех конструкторов, вы можете изменить объект-прототип конструктора, чтобы внести изменения во все экземпляры AsyncFunction.

+ +

Примеры

+ +

Создание async function с помощью AsyncFunction constructor

+ +
function resolveAfter2Seconds(x) {
+  return new Promise(resolve => {
+    setTimeout(() => {
+      resolve(x);
+    }, 2000);
+  });
+}
+
+var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
+
+var a = new AsyncFunction('a',
+                          'b',
+                          'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');
+
+a(10, 20).then(v => {
+  console.log(v); // напечатает 30 через 4 секунды
+});
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Изначальное определение в ES2017.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet Explorer EdgeOperaSafari (WebKit)
Базовая поддержка{{CompatChrome(55)}}{{CompatGeckoDesktop("52.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("52.0")}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}{{CompatChrome(55)}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html new file mode 100644 index 0000000000..9d0c21f241 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html @@ -0,0 +1,55 @@ +--- +title: AsyncFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +--- +
{{JSRef}}
+ +

Свойство AsyncFunction.prototype представляет прототип объекта  {{jsxref("AsyncFunction")}} .

+ +

Описание

+ +

Объект {{jsxref("AsyncFunction")}} наследуется от AsyncFunction.prototype. AsyncFunction.prototype не может быть модифицирован.

+ +

Свойства

+ +
+
AsyncFunction.constructor
+
Начальное значение {{jsxref("AsyncFunction")}}.
+
AsyncFunction.prototype[@@toStringTag]
+
Возвращает "AsyncFunction".
+
+ +

Specifications

+ + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-async-function-constructor-prototype', 'AsyncFunction.prototype')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.AsyncFunction.prototype")}}

+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/atomics/add/index.html b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html new file mode 100644 index 0000000000..a426517362 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html @@ -0,0 +1,126 @@ +--- +title: Atomics.add() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/add +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add +--- +
{{JSRef}}
+ +

Статический метод Atomics.add() добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

+ +

Синтаксис

+ +
Atomics.add(typedArray, index, value)
+
+ +

Параметры

+ +
+
typedArray
+
Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
+
index
+
Позиция в typedArray для добавления value.
+
value
+
Число для добавления.
+
+ +

Возвращаемое значение

+ +

Предыдущее значение в указанной позиции (typedArray[index]).

+ +

Исключения

+ + + +

Примеры

+ +
var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+
+Atomics.add(ta, 0, 12); // возвращает 0, предыдущее значение
+Atomics.load(ta, 0); // 12
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/atomics/index.html b/files/ru/web/javascript/reference/global_objects/atomics/index.html new file mode 100644 index 0000000000..8ac33321f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/index.html @@ -0,0 +1,168 @@ +--- +title: Atomics +slug: Web/JavaScript/Reference/Global_Objects/Atomics +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics +--- +
{{JSRef}}
+ +
Объект Atomics предоставляет атомарные операции как статические методы. Используется вместе с объектом {{jsxref("SharedArrayBuffer")}}. 
+ +
 
+ +

Атомарные операции установлены в модуле Atomics. В отличие от других глобальных объектов, Atomics не является конструктором. Его нельзя использовать вместе с оператором new или вызывать объект Atomics как функцию. Все свойства и методы Atomics статические (как у объекта {{jsxref("Math")}}, к примеру).

+ +

Свойства

+ +
+
Atomics[Symbol.toStringTag]
+
Значение этого свойства - "Atomics".
+
+ +

Методы

+ +

Атомарные операции

+ +

Когда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнет свою работу, и они не будут прерваны.

+ +
+
{{jsxref("Atomics.add()")}}
+
Добавляет представленное значение к текущему по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.and()")}}
+
Вычисляет побитовое AND в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.compareExchange()")}}
+
Сохраняет представленное значение в указанную позицию массива, если оно эквивалентно представленному значению. Возвращает предыдущее значение.
+
{{jsxref("Atomics.exchange()")}}
+
Сохраняет представленное значение в указанную позицию массива. Возвращает предыдущее значение.
+
+ +
+
{{jsxref("Atomics.load()")}}
+
Возвращает значение из указаной позиции массива.
+
{{jsxref("Atomics.or()")}}
+
Вычисляет побитовое OR в указанной позиции массивая. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.store()")}}
+
Сохраняет представленное значение в указанную позицию массива. Возвращает значение.
+
{{jsxref("Atomics.sub()")}}
+
Вычитает представленное значение из текущего по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.
+
{{jsxref("Atomics.xor()")}}
+
Вычисляет побитовое XOR в указанной позиции массива. Возвращает предыдущее значение в этой позиции.
+
+ +

Wait и notify

+ +

wait() и wake() методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определенное состояние не станет true, и обычно используется как блокирующие конструкции.

+ +
+
{{jsxref("Atomics.wait()")}}
+
+

Проверяет, содержится в указанной позиции массива все еще представленное значение и спит в ожидании или тайм-аут. Возвращает "ok", "not-equal" или "timed-out". Если ожидание не разрешено в вызывающем агенете, тогда выбросит ошибку исключения (большинство браузеров не разрешают wait() в главном потоке барузера).

+
+
{{jsxref("Atomics.wake()")}}
+
Пробуждает некоторых агентов, которые спят в очереди ожидания в указанной позиции массива. Возвращает количество агентов, которые были разбужены.
+
{{jsxref("Atomics.isLockFree()", "Atomics.isLockFree(size)")}}
+
+

Оптимизационный примитив, который может быть использован для определения использовать ли блокирующие операции или атомарные. Возвращает true, если атомарные операции над массивaми с указанным размерами элеменатов будут выполнены с использованием аппаратных атомарных опреаций (как противоположность блокирующим). Только для специалистов.

+
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
{{SpecName('ES8', '#sec-atomics-object', 'Atomics')}}{{Spec2('ES8')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Похожие заметки

+ +

До SpiderMonkey 48 {{geckoRelease(48)}}, финальные имена API и сематика не были еще реализованы. Изменения между Firefox v. 46 и v. 48:

+ + + +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html new file mode 100644 index 0000000000..6535d885e5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html @@ -0,0 +1,128 @@ +--- +title: Atomics.sub() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/sub +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub +--- +
{{JSRef}}
+ +

Статический метод Atomics.sub() вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.

+ +

Синтаксис

+ +
Atomics.sub(typedArray, index, value)
+
+ +

Параметры

+ +
+
typedArray
+
Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.
+
index
+
Позиция в typedArray для добавления value.
+
value
+
Число для вычитания.
+
+ +

Возвращаемое значение

+ +

Предыдущее значение в указанной позиции (typedArray[index]).

+ +

Исключения

+ + + +

Примеры

+ +
var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+ta[0] = 48;
+
+Atomics.sub(ta, 0, 12); // возвращает 48, предыдущее значение
+Atomics.load(ta, 0); // 36
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html b/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html new file mode 100644 index 0000000000..67f371ecf6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html @@ -0,0 +1,79 @@ +--- +title: BigInt.asIntN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +tags: + - BigInt + - JavaScript + - Method + - Reference + - asIntN +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +--- +
{{JSRef}}
+ +

BigInt.asIntN — это статический метод, который позволяет перенести BigInt-значение в целое число со знаком между  -2ширина-1 and 2ширина-1-1.

+ +
\{{EmbedInteractiveExample("pages/js/bigint-asintn.html")}}
+ + + +

Синтаксис

+ +
BigInt.asIntN(width, bigint);
+ +

Аргументы

+ +
+
width
+
Количество битов, доступных для целочисленного размера.
+
bigint
+
Целое число для зажима, чтобы соответствовать поставляемым битам.
+
+ +

Возвращаемое значение

+ +

Значение bigint по модулю 2width как целое число со знаком.

+ +

Примеры

+ +

Пребывание в 64-битных диапазонах

+ +

Метод  BigInt.asIntN() может быть полезен, чтобы оставаться в диапазоне 64-битной арифметики.

+ +
const max = 2n ** (64n - 1n) - 1n;
+
+BigInt.asIntN(64, max);
+// ↪ 9223372036854775807n
+
+BigInt.asIntN(64, max + 1n);
+// ↪ -9223372036854775807n
+// отрицательное число из-за переполнения
+
+ +

Спецификации

+ + + + + + + + + + + + +
СпецификацииСтатус
BigInt proposalStage 3
+ +

Совместимость браузеров

+ + + +

{{Compat("javascript.builtins.BigInt.asIntN")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html b/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html new file mode 100644 index 0000000000..6f3c09ba56 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html @@ -0,0 +1,72 @@ +--- +title: BigInt.asUintN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +--- +
{{JSRef}}
+ +

The BigInt.asUintN static method is used to wrap a BigInt value to an unsigned integer between 0 and 2width-1.

+ +
{{EmbedInteractiveExample("pages/js/bigint-asuintn.html", "taller")}}
+ + + +

Syntax

+ +
BigInt.asUintN(width, bigint);
+ +

Parameters

+ +
+
width
+
The amount of bits available for the integer size.
+
bigint
+
The integer to clamp to fit into the supplied bits.
+
+ +

Returns

+ +

The value of bigint modulo 2width as an unsigned integer.

+ +

Examples

+ +

Staying in 64-bit ranges

+ +

The BigInt.asUintN() method can be useful to stay in the range of 64-bit arithmetic.

+ +
const max = 2n ** 64n - 1n;
+
+BigInt.asUintN(64, max);
+// ↪ 18446744073709551615n
+
+BigInt.asUintN(64, max + 1n);
+// ↪ 0n
+// zero because of overflow
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-bigint.asuintn', 'BigInt.asUintN()')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.BigInt.asUintN")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/bigint/index.html b/files/ru/web/javascript/reference/global_objects/bigint/index.html new file mode 100644 index 0000000000..9760700391 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/index.html @@ -0,0 +1,294 @@ +--- +title: BigInt +slug: Web/JavaScript/Reference/Global_Objects/BigInt +tags: + - BigInt + - JavaScript + - методы BigInt + - свойства BigInt +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt +--- +

{{JSRef}}

+ +

BigInt это встроенный объект, который предоставляет способ представлять целые числа больше 253 - 1, наибольшего числа, которое JavaScript может надежно представить с {{JSxRef("Number")}} примитивом. Это максимальное значение можно получить, обратившись к {{JSxRef("Number.MAX_SAFE_INTEGER")}}.

+ +
+
+ +

Описание

+ +

BigInt создается путем добавления n в конец целочисленного литерала — 10n — или вызовом функции BigInt().

+ +
const theBiggestInt = 9007199254740991n;
+
+const alsoHuge = BigInt(9007199254740991);
+// ↪ 9007199254740991n
+
+const hugeString = BigInt("9007199254740991");
+// ↪ 9007199254740991n
+
+const hugeHex = BigInt("0x1fffffffffffff");
+// ↪ 9007199254740991n
+
+const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111");
+// ↪ 9007199254740991n
+
+ +

В некотором смысле он похож на {{JSxRef ("Number")}}, но отличается в некоторых ключевых моментах — его нельзя использовать с методами во встроенном объекте {{JSxRef ("Math")}} и нельзя смешивать в операциях с любыми экземплярами Number.

+ +
+

{{JSxRef("Number")}} и BigInt нельзя смешивать в операциях — они должны быть приведены к тому же типу.

+ +

Будте осторожны приводя значения туда и обратно,  так как точность BigInt может быть потеряна при приведении к числу (Number).

+
+ +

Тип

+ +

При проверке с использованием оператора typeof, BigInt выдает тип "bigint":

+ +
typeof 1n === 'bigint'; // true
+typeof BigInt('1') === 'bigint'; // true
+
+ +

При оборачивании в объект, BigInt будет представлен как обычный объект:

+ +
typeof Object(1n) === 'object'; // true
+
+ +

Операторы

+ +

Следующие операторы могут использоваться с BigInt (или объектом-оберткой BigInt): +, *, -, **, %.

+ +

Побитовые операции также поддерживаются, кроме >>> (сдвиг вправо с заполнением нулями).

+ +

Не поддерживаемый унарный оператор (+) больше не ломает asm.js.

+ +
const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER);
+// ↪ 9007199254740991n
+
+const maxPlusOne = previousMaxSafe + 1n;
+// ↪ 9007199254740992n
+
+const theFuture = previousMaxSafe + 2n;
+// ↪ 9007199254740993n, это работает!
+
+const multi = previousMaxSafe * 2n;
+// ↪ 18014398509481982n
+
+const subtr = multi – 10n;
+// ↪ 18014398509481972n
+
+const mod = multi % 10n;
+// ↪ 2n
+
+const bigN = 2n ** 54n;
+// ↪ 18014398509481984n
+
+bigN * -1n
+// ↪ –18014398509481984n
+
+ +

Оператор / также работает, как и ожидалось, с целыми числами. Однако, поскольку это BigInt, эта операция будет округляться в меньшую сторону, то есть она не будет возвращать какие-либо дробные цифры.

+ +
+

Результат операции с дробным результатом будет округлен в меньшую сторону при использовании  BigInt.

+
+ +
const expected = 4n / 2n;
+// ↪ 2n
+
+const rounded = 5n / 2n;
+// ↪ 2n, not 2.5n
+
+
+ +

Сравнения

+ +

BigInt равен {{JSxRef ("Number")}} только при нестрогом сравнении.

+ +
0n === 0
+// ↪ false
+
+0n == 0
+// ↪ true
+ +

{{JSxRef("Global_Objects/Number", "Обычные числа")}} и BigInt можно сравнивать как обычно.

+ +
1n < 2
+// ↪ true
+
+2n > 1
+// ↪ true
+
+2 > 2
+// ↪ false
+
+2n > 2
+// ↪ false
+
+2n >= 2
+// ↪ true
+ +

Они могут быть смешаны в массивах и отсортированы:

+ +
const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
+// ↪  [4n, 6, -12n, 10, 4, 0, 0n]
+
+mixed.sort();
+// ↪ [-12n, 0, 0n, 10, 4n, 4, 6]
+
+ +

Обратите внимание, что сравнения с обьектом-оберткой BigInt действуют как с другими объектами, указывая на равенство только когда сравинивается идентичный экземпляр объекта:

+ +
0n === Object(0n); // false
+Object(0n) === Object(0n); // false
+
+const o = Object(0n);
+o === o // true
+
+ +

Условные выражения

+ +

BigInt ведёт себя как {{JSxRef("Global_Objects/Number", "обычное число")}} в следующих случаях:

+ + + +
if (0n) {
+  console.log('Привет из if!');
+} else {
+  console.log('Привет из else!');
+}
+
+// ↪ "Привет из else!"
+
+0n || 12n
+// ↪ 12n
+
+0n && 12n
+// ↪ 0n
+
+Boolean(0n)
+// ↪ false
+
+Boolean(12n)
+// ↪ true
+
+!12n
+// ↪ false
+
+!0n
+// ↪ true
+
+ +

Конструктор

+ +
+
BigInt()
+
Создаёт объект {{jsxref("BigInt")}}.
+
+ +

Статические методы

+ +
+
{{JSxRef("BigInt.asIntN()")}}
+
Оборачивает BigInt в пределах от -2width-1 до 2width-1-1
+
{{JSxRef("BigInt.asUintN()")}}
+
Оборачивает a BigInt в пределах от 0 до 2width-1
+
+ +

Методы экземпляра

+ +
+
{{JSxRef("BigInt.prototype.toLocaleString()")}}
+
Возвращает строку с языко-зависимым представлением числа. Переопредедяет метод {{JSxRef("Object.prototype.toLocaleString()")}}.
+
{{JSxRef("BigInt.prototype.toString()")}}
+
Возвращает строку, представляющую указанный объект по указанному основанию системы счисления. Переопределяет метод {{JSxRef("Object.prototype.toString()")}}.
+
{{JSxRef("BigInt.prototype.valueOf()")}}
+
Возвращает примитивное значение указанного объекта. Переопределяет метод {{JSxRef("Object.prototype.valueOf()")}}.
+
+ +

Рекомендации по использованию

+ +

Приведение

+ +

Поскольку приведение между {{JSxRef("Number")}} и BigInt может привести к потере точности, рекомендуется использовать BigInt только тогда, когда разумно ожидаются значения, превышающие 253 и не приводить между двумя типами.

+ +

Криптография

+ +

Операции поддерживаемые BigInt не постоянны во времени. BigInt следовательно не пригоден для использования в криптографии.

+ +

Использование вместе с JSON

+ +

Использование {{jsxref("JSON.stringify()")}} с любым значением типа BigInt приведёт к TypeError, поскольку значения BigInt не преобразуется в JSON по умолчанию, однако вы можете реализовать свой собственный метод toJSON, если вам необходимо:

+ +
BigInt.prototype.toJSON = function() { return this.toString() }
+
+ +

Теперь вместо ошибки, JSON.stringify будет создавать строку:

+ +
JSON.stringify(BigInt(1))
+// '"1"'
+
+ +

Примеры

+ +

Расчет простых чисел

+ +
// Возвращает true, если BigInt — простое число
+function isPrime(p) {
+  for (let i = 2n; i * i <= p; i++) {
+    if (p % i === 0n) return false;
+  }
+  return true;
+}
+
+// Берет BigInt в качестве аргумента и возвращает BigInt
+function nthPrime(nth) {
+  let maybePrime = 2n;
+  let prime = 0n;
+
+  while (nth >= 0n) {
+    if (isPrime(maybePrime)) {
+      nth--;
+      prime = maybePrime;
+    }
+    maybePrime++;
+  }
+
+  return prime;
+}
+
+nthPrime(20n)
+// ↪ 73n
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
{{SpecName("ESDraft", "#sec-bigint-objects", "BigInt objects")}}
+ +

Совместимость браузера

+ +
+ + +

{{Compat("javascript.builtins.BigInt")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/boolean/index.html b/files/ru/web/javascript/reference/global_objects/boolean/index.html new file mode 100644 index 0000000000..00d4637117 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/index.html @@ -0,0 +1,200 @@ +--- +title: Boolean +slug: Web/JavaScript/Reference/Global_Objects/Boolean +tags: + - Boolean + - Constructor + - JavaScript + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +
{{JSRef()}}
+ +

Объект Boolean является объектом-обёрткой над примитивом логического типа.

+ +

Синтаксис

+ +
new Boolean([value])
+ +

Параметры

+ +
+
value
+
Необязательный параметр. Начальное значение объекта Boolean.
+
+ +

Описание

+ +

Значение, переданное первым параметром, при необходимости преобразуется в логическое значение. Если значение опущено или равно 0, -0, {{jsxref("Global_Objects/null", "null")}}, false, {{jsxref("Global_Objects/NaN", "NaN")}}, {{jsxref("Global_Objects/undefined", "undefined")}} или пустой строке (""), объект имеет начальное значение, равное false. Все остальные значения, включая любые объекты или строку "false", создают объект с начальным значением, равным true.

+ +

Не путайте примитивные значения true и false логического типа со значениями true и false объекта Boolean.

+ +

Любой объект, чьё значение не является равным {{jsxref("Global_Objects/undefined", "undefined")}} или {{jsxref("Global_Objects/null", "null")}}, включая сам объект Boolean со значением, равным false, вычисляется в true при передаче его в условное выражение. Например, условие в следующей инструкции {{jsxref("Statements/if...else", "if")}} вычисляется в true:

+ +
var x = new Boolean(false);
+if (x) {
+  // этот код будет выполнен
+}
+
+ +

Это поведение не применяется к примитивам логического типа. Например, условие в следующей инструкции {{jsxref("Statements/if...else", "if")}} вычисляется в false :

+ +
var x = false;
+if (x) {
+  // этот код не будет выполнен
+}
+
+ +

Не используйте объект Boolean для преобразования нелогического значения в логическое значение. Вместо этого используйте Boolean в качестве функции:

+ +
var x = Boolean(expression);     // предпочтительно
+var x = new Boolean(expression); // не используйте
+
+ +

Если вы определите любой объект, включая объект Boolean со значением false, в качестве начального значения объекта Boolean, новый объект Boolean будет иметь значение true.

+ +
var myFalse = new Boolean(false);    // начальное значение равно false
+var g = new Boolean(myFalse);        // начальное значение равно true
+var myString = new String('Привет'); // строковый объект
+var s = new Boolean(myString);       // начальное значение равно true
+
+ +

Не используйте объект Boolean вместо примитива логического типа.

+ +

Свойства

+ +
+
Boolean.length
+
Свойство length логического значения равно 1.
+
{{jsxref("Boolean.prototype")}}
+
Представляет прототип конструктора объекта Boolean.
+
+ +

{{jsOverrides("Function", "Properties", "prototype")}}

+ +

Методы

+ +

Глобальный объект Boolean не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов:

+ +
{{jsOverrides("Function", "Methods")}}
+ +

Экземпляры объекта Boolean

+ +

Все экземпляры объекта Boolean наследуются от {{jsxref("Boolean.prototype")}}. Как и все конструкторы, объект прототипа предоставляет экземплярам свойства и методы.

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: создание объектов Boolean с начальным значением, равным false

+ +
var bNoParam = new Boolean();
+var bZero = new Boolean(0);
+var bNull = new Boolean(null);
+var bEmptyString = new Boolean('');
+var bfalse = new Boolean(false);
+
+ +

Пример: создание объектов Boolean с начальным значением, равным true

+ +
var btrue = new Boolean(true);
+var btrueString = new Boolean('true');
+var bfalseString = new Boolean('false');
+var bSuLin = new Boolean('Су Лин');
+var bArrayProto = new Boolean([]);
+var bObjProto = new Boolean({});
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.6', 'Boolean')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-boolean-objects', 'Boolean')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("6.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html b/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html new file mode 100644 index 0000000000..310a9768f3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html @@ -0,0 +1,112 @@ +--- +title: Boolean.prototype +slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +tags: + - Boolean + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +
{{JSRef("Global_Objects", "Boolean")}}
+ +

Сводка

+

Свойство Boolean.prototype представляет прототип конструктора объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Экземпляры объекта {{jsxref("Global_Objects/Boolean", "Boolean")}} наследуются от Boolean.prototype. Вы можете использовать протитип конструктора объекта для добавления свойств или методов ко всем экземплярам объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.

+ +

Свойства

+
+
Boolean.prototype.constructor
+
Возвращает функцию, создающую экземпляр прототипа. По умолчанию, это функция {{jsxref("Global_Objects/Boolean", "Boolean")}}.
+
+
{{jsOverrides("Object", "properties", "constructor")}}
+ +

Методы

+
+
{{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает строку, содержащую исходный код объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}; вы можете использовать эту строку для создания эквивалентного объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Boolean.prototype.toString()")}}
+
Возвращает строку "true" или "false", в зависимости от значения объекта. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Boolean.prototype.valueOf()")}}
+
Возвращает примитивное значение объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.
+
+
{{jsOverrides("Object", "methods", "toSource", "toString", "valueOf")}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.6.3.1', 'Boolean.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-boolean.prototype', 'Boolean.prototype')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html b/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html new file mode 100644 index 0000000000..164fc98bba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html @@ -0,0 +1,92 @@ +--- +title: Boolean.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +tags: + - Boolean + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +--- +
{{JSRef("Global_Objects", "Boolean")}} {{non-standard_header}}
+ +

Сводка

+

Метод toSource() возвращает строку, представляющую исходный код объекта.

+ +

Синтаксис

+
booleanObj.toSource()
+Boolean.toSource()
+ +

Параметры

+

Нет.

+ +

Описание

+

Метод toSource возвращает следующие значения:

+ +

Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.

+ +

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html b/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html new file mode 100644 index 0000000000..abc713e318 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html @@ -0,0 +1,113 @@ +--- +title: Boolean.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toString +tags: + - Boolean + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toString +--- +
{{JSRef("Global_Objects", "Boolean")}}
+ +

Сводка

+

Метод toString() возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.

+ +

Синтаксис

+
bool.toString()
+ +

Параметры

+

Нет.

+ +

Описание

+

Объект {{jsxref("Global_Objects/Boolean", "Boolean")}} переопределяет метод toString объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/Boolean", "Boolean")}} метод toString возвращает строковое представление объекта.

+

JavaScript вызывает метод toString автоматически, когда объект {{jsxref("Global_Objects/Boolean", "Boolean")}} должен быть представлен в виде текста или когда объект {{jsxref("Global_Objects/Boolean", "Boolean")}} находится в контексте строковой конкатенации.

+

Для объектов и значений {{jsxref("Global_Objects/Boolean", "Boolean")}} встроенный метод toString возвращает строки «true» или «false» в зависимости от значения логического объекта.

+ +

Примеры

+ +

Пример: использование toString

+

В следующем коде вызов flag.toString() вернёт строку "true":

+
var flag = new Boolean(true);
+var myVar = flag.toString();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.6.4.2', 'Boolean.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html b/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html new file mode 100644 index 0000000000..6b4ed81473 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html @@ -0,0 +1,111 @@ +--- +title: Boolean.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +tags: + - Boolean + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +--- +
{{JSRef("Global_Objects", "Boolean")}}
+ +

Сводка

+

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.

+ +

Синтаксис

+
bool.valueOf()
+ +

Параметры

+

Нет.

+ +

Описание

+

Метод valueOf объекта {{jsxref("Global_Objects/Boolean", "Boolean")}} возвращает примитивное значение объекта или литерала логического типа.

+

Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.

+ +

Примеры

+ +

Пример: использование valueOf

+
x = new Boolean();
+myVar = x.valueOf(); // присваивает false переменной myVar
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.6.4.3', 'Boolean.prototype.valueOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/dataview/index.html b/files/ru/web/javascript/reference/global_objects/dataview/index.html new file mode 100644 index 0000000000..adf480e976 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/dataview/index.html @@ -0,0 +1,122 @@ +--- +title: DataView +slug: Web/JavaScript/Reference/Global_Objects/DataView +translation_of: Web/JavaScript/Reference/Global_Objects/DataView +--- +
{{JSRef}}
+ +

Вид DataView предоставляет низко-уровневый интерфейс для чтения и записи многочисленных числовых типов в бинарном {{jsxref("ArrayBuffer")}}, независимо от порядка байтов платформы.

+ +
{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}
+ + + +

Синтаксис

+ +
new DataView(buffer [, byteOffset [, byteLength]])
+ +

Параметры

+ +
+
buffer
+
Существующий {{jsxref("ArrayBuffer")}} или {{jsxref("SharedArrayBuffer")}} {{experimental_inline}} для использования как хранилище для нового объекта DataView.
+
byteOffset {{optional_inline}}
+
Смещение в байтах к первому байту в заданном буфере. Если не определён, то вид буфера будет начинаться с первого байта.
+
byteLength {{optional_inline}}
+
Количество элементов в массиве байтов. Если не определён, то длина вида будет соответствовать длине буфера.
+
+ +

Возвращаемое значение

+ +

Новый объект DataView представляющий определённый буфер данных.

+ +

Исключения

+ +
+
{{jsxref("RangeError")}}
+
Выкидывается если byteOffset  и byteLength заходит за пределы буфера.
+
+ +

Описание

+ +

Порядок байтов

+ +

Многобайтовые числовые форматы представлены в памяти по разному в зависимости от архитектуры машины, см {{Glossary("Endianness")}} для объяснения. Аксессоры DataView предоставляют явный контроль над обращением к данным вне зависимости от порядка байтов архитектуры платформы.

+ +
var littleEndian = (function() {
+  var buffer = new ArrayBuffer(2);
+  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
+  // Int16Array uses the platform's endianness.
+  return new Int16Array(buffer)[0] === 256;
+})();
+console.log(littleEndian); // true or false
+
+ +

Свойства

+ +

All DataView instances inherit from {{jsxref("DataView.prototype")}} and allows the addition of properties to all DataView objects.

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Properties')}}

+ +

Методы

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methods')}}

+ +

Пример

+ +
var buffer = new ArrayBuffer(16);
+var dv = new DataView(buffer, 0);
+
+dv.setInt16(1, 42);
+dv.getInt16(1); //42
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 6
{{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ES6')}}Initial definition in an ECMA standard
{{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ESDraft')}} 
+ +

Таблица совместимости

+ + + +

{{Compat("javascript.builtins.DataView")}}

+ +

Замечания совместимости

+ +

Starting with Firefox 40, DataView requires to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling DataView() as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = DataView(buffer, 0);
+// TypeError: calling a builtin DataView constructor without new is forbidden
+ +
var dv = new DataView(buffer, 0);
+ +

Также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html b/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html new file mode 100644 index 0000000000..22e53f475d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html @@ -0,0 +1,80 @@ +--- +title: DataView.prototype.setInt16() +slug: Web/JavaScript/Reference/Global_Objects/DataView/setInt16 +tags: + - DataView + - JavaScript + - TypedArrays + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt16 +--- +
{{JSRef}}
+ +
Метод setInt16() содержит 16-битное целое (short) значение в байте, смещённым по указанному числу от начала {{jsxref("DataView")}}.
+ +
{{EmbedInteractiveExample("pages/js/dataview-setint16.html")}}
+ + + +

Синтаксис

+ +
dataview.setInt16(byteOffset, value [, littleEndian])
+ +

Параметры

+ +
+
byteOffset
+
Смещение в байтах от старта до этого значения, где будут храниться данные.
+
value
+
Устанавливаемое значение.
+
littleEndian
+
{{optional_inline}} Указывает, сохранять ли 16-bit целое в {{Glossary("Endianness", "little- or big-endian")}} формате. Если значение false или undefined, записывает значение big-endian.
+
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Возвращаемые ошибки

+ +
+
{{jsxref("RangeError")}}
+
Выдана, если byteOffset установлен так, что целое бы хранилось после конца.
+
+ +

Примеры

+ +

Использование метода setInt16

+ +
var buffer = new ArrayBuffer(8);
+var dataview = new DataView(buffer);
+dataview.setInt16(1, 3);
+dataview.getInt16(1); // 3
+
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
{{SpecName('ESDraft', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.DataView.setInt16")}}

+ +

Смотрите также 

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getdate/index.html b/files/ru/web/javascript/reference/global_objects/date/getdate/index.html new file mode 100644 index 0000000000..06c43d7b14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getdate/index.html @@ -0,0 +1,81 @@ +--- +title: Date.prototype.getDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/getDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getDate() возвращает день месяца указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.getDate()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getDate(), является целым числом от 1 до 31.

+ +

Примеры

+ +

Пример: использование метода getDate()

+ +

Вторая инструкция в примере ниже присваивает значение 25 переменной day из значения объекта {{jsxref("Global_Objects/Date", "Date")}} date.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let day = date.getDate();
+
+console.log(day); // 25
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Date.getDate")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getday/index.html b/files/ru/web/javascript/reference/global_objects/date/getday/index.html new file mode 100644 index 0000000000..628d921793 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getday/index.html @@ -0,0 +1,94 @@ +--- +title: Date.prototype.getDay() +slug: Web/JavaScript/Reference/Global_Objects/Date/getDay +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getDay() возвращает порядковый номер дня недели указанной даты по местному времени, где 0 соответствует воскресенью.

+ +

Синтаксис

+ +
dateObj.getDay()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getDay(), является целым числом, соответствующим дню недели: 0 соответствует воскресенью, 1 — понедельнику, 2 — вторнику и так далее.

+ +

Примеры

+ +

Пример: использование метода getDay()

+ +

Вторая инструкция в примере ниже присваивает значение 1 переменной weekday из значения объекта {{jsxref("Global_Objects/Date", "Date")}} date. 25 декабря 1995 года было понедельником.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let weekday = date.getDay();
+
+console.log(weekday); // 1
+
+ +
+

Примечание: При необходимости полное название дня (например, "Понедельник") можно получить, используя {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} с параметром options parameter. С помощью этого метода упрощается интернационализация:

+ +
let options = { weekday: 'long'};
+
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// Monday
+
+console.log(new Intl.DateTimeFormat('ru-RU', options).format(date));
+// понедельник
+
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Date.getDay")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html new file mode 100644 index 0000000000..594410c0a3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html @@ -0,0 +1,81 @@ +--- +title: Date.prototype.getFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getFullYear() возвращает год указанной даты по местному времени.

+ +

Используйте этот метод вместо метода {{jsxref("Date.prototype.getYear()", "getYear()")}}.

+ +

Синтаксис

+ +
dateObj.getFullYear()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getFullYear() является абсолютным числом. Для дат между 1000 и 9999 годом метод getFullYear() возвращает четырёхзначный номер, например, 1995. Используйте эту функцию, чтобы быть уверенным, что год будет правильным после 2000 года.

+ +

Примеры

+ +

Пример: использование метода getFullYear()

+ +

В следующем примере переменной year присваивается четырёхзначное значение текущего года.

+ +
let today = new Date(); // Mon Nov 23 2020 15:23:46 GMT+0300 (Москва, стандартное время)
+let year = today.getFullYear(); // 2020
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.10', 'Date.prototype.getFullYear')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Date.getFullYear")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/gethours/index.html b/files/ru/web/javascript/reference/global_objects/date/gethours/index.html new file mode 100644 index 0000000000..b5ecd79d22 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gethours/index.html @@ -0,0 +1,103 @@ +--- +title: Date.prototype.getHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/getHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getHours() возвращает часы указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.getHours()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getHours(), является целым числом от 0 до 23.

+ +

Примеры

+ +

Пример: использование метода getHours()

+ +

Вторая инструкция в примере ниже присваивает значение 23 переменной hours из значения объекта {{jsxref("Global_Objects/Date", "Date")}} date.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let hours = date.getHours();
+
+console.log(hours); // 23
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Date.getHours")}}
+ +

Смотрите также

+ + + +
+
+
+ +
+
+
+ +
+

+ +

+
+
+
+
+
diff --git a/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html new file mode 100644 index 0000000000..71257f95c1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getMilliseconds() возвращает миллисекунды указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.getMilliseconds()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getMilliseconds(), является целым числом от 0 до 999.

+ +

Примеры

+ +

Пример: использование метода getMilliseconds()

+ +

В следующем примере переменной milliseconds присваиваются миллисекунды текущего времени:

+ +
let today = new Date();
+let milliseconds = today.getMilliseconds();
+
+console.log(milliseconds); // 709
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.24', 'Date.prototype.getMilliseconds')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html new file mode 100644 index 0000000000..88db42fe6f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getMinutes() возвращает минуты указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.getMinutes()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getMinutes(), является целым числом от 0 до 59.

+ +

Примеры

+ +

Пример: использование метода getMinutes()

+ +

Вторая инструкция в примере ниже присваивает значение 15 переменной minutes из значения объекта {{jsxref("Global_Objects/Date", "Date")}} date.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let minutes = date.getMinutes();
+
+console.log(minutes); // 15
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.20', 'Date.prototype.getMinutes')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html new file mode 100644 index 0000000000..5d8c1af47e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getMonth() возвращает месяц указанной даты по местному времени, нумерация месяцев начинается с нуля для первого месяца в году.

+ +

Синтаксис

+ +
dateObj.getMonth()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getMonth(), является целым числом от 0 до 11. 0 соответствует январю, 1 — февралю и так далее.

+ +

Примеры

+ +

Пример: использование метода getMonth()

+ +

Вторая инструкция в примере ниже присваивает значение 11 переменной month из значения переменной date объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let month = date.getMonth();
+
+console.log(month); // 11
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.12', 'Date.prototype.getMonth')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html new file mode 100644 index 0000000000..4332bf9b01 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод getSeconds() возвращает секунды указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.getSeconds()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getSeconds(), является целым числом от 0 до 59.

+ +

Примеры

+ +

Пример: использование метода getSeconds()

+ +

Вторая инструкция в примере ниже присваивает значение 30 переменной seconds из значения переменной date объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +
let date = new Date('December 25, 1995 23:15:30');
+let seconds = date.getSeconds();
+
+console.log(seconds); // 30
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.22', 'Date.prototype.getSeconds')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/gettime/index.html b/files/ru/web/javascript/reference/global_objects/date/gettime/index.html new file mode 100644 index 0000000000..407d054fa7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gettime/index.html @@ -0,0 +1,100 @@ +--- +title: Date.prototype.getTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTime +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime +--- +
{{JSRef("Global_Objects", "Date")}}
+ +
+ +

Метод getTime() возвращает числовое значение, соответствующее указанной дате по всемирному координированному времени.

+ +

Вы можете использовать этот метод для того, чтобы присвоить дату и время другому объекту {{jsxref("Global_Objects/Date", "Date")}}. Этот метод функционально эквивалентен методу {{jsxref("Date.prototype.valueof", "valueOf()")}}.

+ +

{{EmbedInteractiveExample("pages/js/date-gettime.html")}}

+ + + +

Синтаксис

+ +
dateObj.getTime()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Значение, возвращённое методом getTime(), является количеством миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.

+ +

Примеры

+ +

Пример: использование метода getTime() для копирования дат

+ +

Конструирует новый объект даты с идентичным значением времени.

+ +
let birthday = new Date(2020, 12, 20);
+let copy = new Date();
+copy.setTime(birthday.getTime());
+
+console.log(copy.setTime(birthday.getTime())); // 1611090000000
+
+ +

Пример: замер времени выполнения

+ +

Вычитанием двух последовательных вызовов метода getTime() на заново сконструированных объектах {{jsxref("Global_Objects/Date", "Date")}} можно замерить промежуток времени, произошедший между двумя этими вызовами. Это можно использовать для вычисления времени выполнения неких операций.

+ +
let end, start;
+
+start = new Date();
+for (let i = 0; i < 1000; i++) {
+  Math.sqrt(i);
+}
+end = new Date();
+
+console.log('Операция заняла ' + (end.getTime() - start.getTime()) + ' мсек');
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.9', 'Date.prototype.getTime')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Date.getTime")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html b/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html new file mode 100644 index 0000000000..9c564f3139 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html @@ -0,0 +1,106 @@ +--- +title: Date.prototype.getTimezoneOffset() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getTimezoneOffset() возвращает смещение часового пояса относительно часового пояса UTC в минутах для текущей локали.

+ +

Синтаксис

+
dateObj.getTimezoneOffset()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Возвращает смещение часового пояса, являющееся разностью в минутах между временем UTC и местным временем. Обратите внимание, что это значит, что смещение будет положительным для местного часового пояса, находящегося западнее часового пояса UTC и отрицательным — восточнее. Например, если ваш часовой пояс равен UTC+10 (австралийское восточное поясное время), будет возвращено значение -600. Наличие летнего и зимнего времени не даёт этому смещению быть постоянным, даже в пределах одного часового пояса.

+ +

Примеры

+ +

Пример: использование метода getTimezoneOffset()

+
var x = new Date();
+var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.26', 'Date.prototype.getTimezoneOffset')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html new file mode 100644 index 0000000000..ed5a5368f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.getUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCDate() возвращает день месяца указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCDate()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCDate(), является целым числом от 1 до 31.

+ +

Примеры

+ +

Пример: использование метода getUTCDate()

+

В следующем примере переменной day присваивается значение дня из текущей даты.

+
var today = new Date();
+var day = today.getUTCDate();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.15', 'Date.prototype.getUTCDate')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html new file mode 100644 index 0000000000..4a82c3b080 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.getUTCDay() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCDay() возвращает день недели указанной даты по всемирному координированному времени, где 0 соответствует воскресенью.

+ +

Синтаксис

+
dateObj.getUTCDay()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getDay(), является целым числом, соответствующим дню недели: 0 соответствует воскресенью, 1 — понедельнику, 2 — вторнику и так далее.

+ +

Примеры

+ +

Пример: использование метода getUTCDay()

+

В следующем примере переменной weekday присваивается номер дня недели из текущей даты.

+
var today = new Date();
+var weekday = today.getUTCDay();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.17', 'Date.prototype.getUTCDay')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html new file mode 100644 index 0000000000..628a0301b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCFullYear() возвращает год указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCFullYear()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCFullYear() является абсолютным числом, совместимым с проблемой 2000 года, например, 1995.

+ +

Примеры

+ +

Пример: использование метода getUTCFullYear()

+

В следующем примере переменной year присваивается четырёхзначное значение текущего года.

+
var today = new Date();
+var year = today.getUTCFullYear();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.11', 'Date.prototype.getUTCFullYear')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html b/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html new file mode 100644 index 0000000000..3fcc362cea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCHours() возвращает часы указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCHours()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCHours(), является целым числом от 0 до 23.

+ +

Примеры

+ +

Пример: использование метода getUTCHours()

+

В следующем примере переменной hours присваивается количество часов из текущего времени.

+
var today = new Date();
+var hours = today.getUTCHours();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html new file mode 100644 index 0000000000..da9cf2090b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCMilliseconds() возвращает миллисекунды указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCMilliseconds()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCMilliseconds(), является целым числом от 0 до 999.

+ +

Примеры

+ +

Пример: использование метода getUTCMilliseconds()

+

В следующем примере переменной milliseconds присваивается количество миллисекунд из текущего времени.

+
var today = new Date();
+var milliseconds = today.getUTCMilliseconds();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.25', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html new file mode 100644 index 0000000000..8f15413ccd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCMinutes() возвращает минуты указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCMinutes()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCMinutes(), является целым числом от 0 до 59.

+ +

Примеры

+ +

Пример: использование метода getUTCMinutes()

+

В следующем примере переменной minutes присваивается количество минут из текущего времени.

+
var today = new Date();
+var minutes = today.getUTCMinutes();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.21', 'Date.prototype.getUTCMinutes')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html new file mode 100644 index 0000000000..f7e3f3ccb9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCMonth() возвращает месяц указанной даты по всемирному координированному времени, нумерация месяцев начинается с нуля для первого месяца в году.

+ +

Синтаксис

+
dateObj.getUTCMonth()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCMonth(), является целым числом от 0 до 11. 0 соответствует январю, 1 — февралю и так далее.

+ +

Примеры

+ +

Пример: использование метода getUTCMonth()

+

В следующем примере переменной month присваивается значение месяца из текущей даты.

+
var today = new Date();
+var month = today.getUTCMonth();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.13', 'Date.prototype.getUTCMonth')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html new file mode 100644 index 0000000000..68916e4551 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод getUTCSeconds() возвращает секунды указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.getUTCSeconds()
+ +

Параметры

+

Нет.

+ +

Возвращаемое значение

+

Значение, возвращённое методом getUTCSeconds(), является целым числом от 0 до 59.

+ +

Примеры

+ +

Пример: использование метода getUTCSeconds()

+

В следующем примере переменной seconds присваивается количество секунд из текущего времени.

+
var today = new Date();
+var seconds = today.getUTCSeconds();
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.23', 'Date.prototype.getUTCSeconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/getyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getyear/index.html new file mode 100644 index 0000000000..e7c7b42782 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getyear/index.html @@ -0,0 +1,123 @@ +--- +title: Date.prototype.getYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getYear +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getYear +--- +
{{JSRef("Global_Objects", "Date")}} {{deprecated_header("")}}
+ +

Сводка

+ +

Метод getYear() возвращает год указанной даты по местному времени. Поскольку метод getYear() не возвращает полный год («проблема 2000 года»), он больше не используется и был заменён методом {{jsxref("Date.prototype.getFullYear", "getFullYear()")}}.

+ +

Синтаксис

+ +
dateObj.getYear()
+ +

Параметры

+ +

Нет.

+ +

Возвращаемое значение

+ +

Метод getYear() возвращает год минус 1900; таким образом:

+ + + +

Чтобы учесть года до и после 2000, вы должны вместо метода getYear() использовать метод {{jsxref("Date.prototype.getFullYear", "getFullYear()")}}, который возвращает полный год.

+ +

Обратная совместимость

+ +

Поведение в JavaScript 1.2 и ранее

+ +

Метод getYear() возвращал 2-х или 4-х значный год:

+ + + +

Примеры

+ +

Пример: года между 1900 и 1999

+ +

Вторая инструкция присваивает значение 95 переменной year.

+ +
var Xmas = new Date('December 25, 1995 23:15:00');
+var year = Xmas.getYear(); // вернёт 95
+
+ +

Пример: года после 1999

+ +

Вторая инструкция присваивает значение 100 переменной year.

+ +
var Xmas = new Date('December 25, 2000 23:15:00');
+var year = Xmas.getYear(); // вернёт 100
+
+ +

Пример: года до 1900

+ +

Вторая инструкция присваивает значение -100 переменной year.

+ +
var Xmas = new Date('December 25, 1800 23:15:00');
+var year = Xmas.getYear(); // вернёт -100
+
+ +

Пример: установка и получение года между 1900 и 1999

+ +

Вторая инструкция присваивает значение 95 переменной year, которое представляет 1995 год.

+ +
var Xmas.setYear(95);
+var year = Xmas.getYear(); // вернёт 95
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-B.2.4', 'Date.prototype.getYear')}}{{Spec2('ES5.1')}}Определён в (информативном) приложении по совместимости.
{{SpecName('ES6', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}{{Spec2('ES6')}}Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.
+ +

Совместимость с браузерами

+ +
 
+ +
{{Compat("javascript.builtins.Date.getYear")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/index.html b/files/ru/web/javascript/reference/global_objects/date/index.html new file mode 100644 index 0000000000..5979d471f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/index.html @@ -0,0 +1,232 @@ +--- +title: Дата +slug: Web/JavaScript/Reference/Global_Objects/Date +tags: + - Date + - JavaScript + - Reference + - время +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Создаёт экземпляр объекта Date, представляющего собой момент времени. Обьект Дата содержит число милисекунд прошедших с 1 января 1970 г. UTC

+ + + +

{{EmbedInteractiveExample("pages/js/date-constructor.html")}}

+ + + +

Синтаксис

+ +
new Date();
+new Date(value);
+new Date(dateString);
+new Date(year, month[, day[, hour[, minute[, second[, millisecond]]]]]);
+
+ +
+

Обратите внимание: объекты Date могут быть созданы только путём вызова функции Date в качестве конструктора: обычный вызов функции (то есть, без использования оператора {{jsxref("Operators/new", "new")}}) вернёт строку вместо объекта Date; в отличие от других объектных типов JavaScript, объекты Date не имеют литерального синтаксиса.

+
+ +

Параметры

+ +
+

Обратите внимание: если функция Date вызывается в качестве конструктора с более, чем одним аргументом, значения, большие логического диапазона (например, 13 в качестве номера месяца или 70 для значения минут) «переметнутся» на соседние значения. Например, вызов new Date(2013, 13, 1) эквивалентен вызову new Date(2014, 1, 1), оба создадут дату 2014-02-01 (нумерация месяцев начинается с нуля). Тоже самое действует и для других значений: вызов new Date(2013, 2, 1, 0, 70) эквивалентен вызову new Date(2013, 2, 1, 1, 10) — оба вызова создадут дату 2013-03-01T01:10:00.

+
+ +
+

Обратите внимание: если функция Date вызывается в качестве конструктора с более чем одним аргументом, то указанные аргументы интерпретируются как локальное время. Если аргументы указывают время в UTC, используйте new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}}) с теми же аргументами.

+
+ +
+
value
+
Целое значение, представляющее количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC (эпохи Unix).
+
dateString
+
Строковое значение, представляющее дату. Строка должна быть в одном из форматов, распознаваемых методом {{jsxref("Date.parse()")}} (совместимые с IETF RFC 2822 временные метки [на английском, на русском], а также версия ISO8601 [на английском, на русском]).
+
year
+
Целое значение, представляющее год. Значения с 0 по 99 отображаются на года с 1900 по 1999. Смотрите {{anch("Example:_Two_digit_years_map_to_1900_-_1999", "пример ниже")}}.
+
month
+
Целое значение, представляющее месяц, начинается с 0 для января и кончается 11 для декабря.
+
day
+
Необязательный параметр. Целое значение, представляющее день месяца.
+
hour
+
Необязательный параметр. Целое значение, представляющее часы дня.
+
minute
+
Необязательный параметр. Целое значение, представляющее минуты времени.
+
second
+
Необязательный параметр. Целое значение, представляющее секунды времени.
+
millisecond
+
Необязательный параметр. Целое значение, представляющее миллисекунды времени.
+
+ +

Описание

+ + + +

Свойства

+ +
+
{{jsxref("Date.prototype")}}
+
Позволяет добавлять свойства к объекту Date.
+
Date.length
+
Значение свойства Date.length равно 7. Это количество аргументов, обрабатываемых конструктором.
+
+ +
{{jsOverrides("Function", "properties", "prototype")}}
+ +

Методы

+ +
+
{{jsxref("Date.now()")}}
+
Возвращает числовое значение, соответствующее текущему времени — количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
+
{{jsxref("Date.parse()")}}
+
Разбирает строковое представление даты и возвращает количество миллисекунд с 1 января 1970 года 00:00:00 по местному времени.
+
{{jsxref("Date.UTC()")}}
+
Принимает те же самые параметры, что и самый длиный вариант конструктора (то есть, от 2 до 7) и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
+
+ +
{{jsOverrides("Function", "Methods", "now", "parse", "UTC")}}
+ +

Экземпляры объекта Date

+ +

Все экземпляры объекта Date наследуются от {{jsxref("Date.prototype")}}. Объект прототипа конструктора Date может быть изменён, чтобы затронуть все экземпляры объекта Date.

+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: несколько способов создания объекта Date

+ +

Следующие примеры показывают несколько способов создания дат в JavaScript:

+ +
+

Обратите внимание: разбор строкового представления дат с помощью конструктора Date (так же как эквивалентный ему метод Date.parse) может иметь различия и несоответствия в браузерах.

+
+ +
var today = new Date();
+var birthday = new Date('December 17, 1995 03:24:00');
+var birthday = new Date('1995-12-17T03:24:00');
+var birthday = new Date(1995, 11, 17);
+var birthday = new Date(1995, 11, 17, 3, 24, 0);
+
+ +

Пример: двухциферный год отображается на 1900 - 1999 года

+ +

Для того, чтобы создать и получить даты между 0 и 99 годом, нужно использовать методы {{jsxref("Date.prototype.setFullYear()")}} и {{jsxref("Date.prototype.getFullYear()")}}.

+ +
var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
+
+// Устаревший метод, 98 отображается на 1998 год
+date.setYear(98);           // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT)
+
+date.setFullYear(98);       // Sat Feb 01 0098 00:00:00 GMT+0000 (BST)
+
+ +

Пример: вычисление затраченного времени

+ +

Следующие примеры показывают, как определить разницу во времени между двумя датами в JavaScript:

+ +
// Используя объекты Date
+var start = Date.now();
+
+// Событие, для которого замеряется время, происходит тут:
+doSomethingForALongTime();
+var end = Date.now();
+var elapsed = end - start; // затраченное время в миллисекундах
+
+ +
// Используя встроенные методы
+var start = new Date();
+
+// Событие, для которого замеряется время, происходит тут:
+doSomethingForALongTime();
+var end = new Date();
+var elapsed = end.getTime() - start.getTime(); // затраченное время в миллисекундах
+
+ +
// Проверяет функцию и возвращает её возвращаемое значение
+function printElapsedTime(fTest) {
+  var nStartTime = Date.now(),
+      vReturn = fTest(),
+      nEndTime = Date.now();
+
+  console.log('Затраченное время: ' + String(nEndTime - nStartTime) + ' миллисекунд');
+  return vReturn;
+}
+
+yourFunctionReturn = printElapsedTime(yourFunction);
+
+
+ +
+

Обратите внимание: в браузерах, поддерживающих высокое временное разрешение с помощью {{domxref("window.performance", "API замера производительности", "", 1)}}, метод {{domxref("Performance.now()")}} может обеспечить более надёжные и точные замеры затраченного времени, нежели метод {{jsxref("Date.now()")}}.

+
+ +

Получить количество секунд с начало эпохи Unix

+ +
var seconds = Math.floor(Date.now() / 1000);
+ +

В этом случае важно возвращать только целое число (так что простое деление не подойдет), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}} + + + + + + +
{{Spec2('ES1')}}
+
Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9', 'Date')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date-objects', 'Date')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-date-objects', 'Date')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Date", 3)}}

diff --git a/files/ru/web/javascript/reference/global_objects/date/now/index.html b/files/ru/web/javascript/reference/global_objects/date/now/index.html new file mode 100644 index 0000000000..f8e9276067 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/now/index.html @@ -0,0 +1,78 @@ +--- +title: Date.now() +slug: Web/JavaScript/Reference/Global_Objects/Date/now +tags: + - Date + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/now +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод Date.now() возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.

+ +

Синтаксис

+ +
var timeInMs = Date.now();
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Метод now() возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC по текущий момент времени в качестве {{jsxref("Global_Objects/Number", "числа", "", 1)}}.

+ +

Поскольку метод now() является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как Date.now().

+ +

Полифилл

+ +

Этот метод был стандартизирован в ECMA-262 5-го издания. Отсутствие этого метода в движках, которые не были обновлены для его поддержки, можно обойти следующей прокладкой:

+ +
if (!Date.now) {
+  Date.now = function now() {
+    return new Date().getTime();
+  };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.9.4.4', 'Date.now')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES6', '#sec-date.now', 'Date.now')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Date.now")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/parse/index.html b/files/ru/web/javascript/reference/global_objects/date/parse/index.html new file mode 100644 index 0000000000..ce223350ef --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/parse/index.html @@ -0,0 +1,217 @@ +--- +title: Date.parse() +slug: Web/JavaScript/Reference/Global_Objects/Date/parse +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод Date.parse() разбирает строковое представление даты и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.

+ +

Синтаксис

+ +

Прямой вызов:

+ +
Date.parse(dateString)
+ +

Неявный вызов:

+ +
new Date(dateString)
+ +

Параметры

+ +
+
dateString
+
Строковое представление даты из RFC2822 (на английском, на русском) или ISO 8601. Могут использоваться и другие форматы, но результаты в таком случае будут непредсказуемые.
+
+ +

Описание

+ +

Метод parse() принимает строку с датой (например, "Dec 25, 1995") и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Этот метод полезен для установки значения даты из строкового значения, например, в сочетании с методом {{jsxref("Date.prototype.setTime()", "setTime()")}} о объектом {{jsxref("Global_Objects/Date", "Date")}}.

+ +

По данному строковому представлению времени метод parse() возвращает значение времени. Он принимает синтаксис даты из RFC2822 / IETF (RFC2822 раздел 3.3 — на английском, на русском), например, "Mon, 25 Dec 1995 13:30:00 GMT". Он понимает аббревиатуры континентальных часовых поясов США, но для общего пользования используйте смещение часовых поясов, например, "Mon, 25 Dec 1995 13:30:00 +0430" (4 часа 30 минут к востоку от Гринвичского меридиана). Если часовой пояс не определён и строка является форматом ISO, распозначаемым ES5, предполагается, что часовым поясом является UTC. GMT и UTC считаются эквивалентными. Местный часовой пояс используется для интерпретации аргумента в формате RFC2822 из раздела 3.3 (на английском, на русском) (или в любом другом формате, не распознаваемым как ISO 8601 в ES5), если он не содержит информации о часовом поясе.

+ +

Поддержка формата ISO-8601 в ECMAScript 5

+ +

Строка с датой и временем может быть в формате ISO 8601. Например, могут быть переданы и разобраны строки "2011-10-10" (только дата) или "2011-10-10T14:48:00" (дата и время). Для интерпретации аргументов в формате ISO 8601, не содержащих информацию о часовом поясе, используется часовой пояс UTC.

+ +

Хотя во время разбора строки с датой и используется спецификатор часового пояса, возвращаемое значение всегда содержит количество миллисекунд между 1 января 1970 года 00:00:00 по UTC и моментом времени, представленым аргументом.

+ +

Поскольку метод parse() является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как Date.parse().

+ +

Различия в предполагаемом часовом поясе

+ +

Для строки даты "March 7, 2014", метод parse() будет предполагать местный часовой пояс, но если строка дана в формате ISO, например "2014-03-07", он будет предполагать, что часовой пояс равен UTC. Поэтому объекты {{jsxref("Global_Objects/Date", "Date")}}, созданные из этих строк, если в системе местный часовой пояс не равен UTC, будут представлять разные моменты времени. Это значит, что две строки с датами, которые выглядят одинаковыми, могут дать два разных значения в зависимости от формата преобразуемой строки.

+ +

Откат к зависимым от реализации форматам даты

+ +

В спецификации ECMAScript говорится: если строка не соответствует стандартному формату, функция может откатиться к любой зависимой от реализации эвристике, либо к зависимому от реализции алгоритму разбора. Нераспознанные строки, либо даты, содержащие недопустимые значения элементов в строках формата ISO, должны при вызове Date.parse() возвращать {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Однако, недопустимые значения в строке даты, не распознанные как формат ISO, как определено ES5 могут возвращать, а могут и не возвращать {{jsxref("Global_Objects/NaN", "NaN")}} в качестве результата, в зависимости от браузера и предоставленных значений, например:

+ +
// Строка не в формате ISO с недопустимыми значениями даты
+new Date('23/25/2014');
+
+ +

будет рассматриваться как местная дата 25 ноября 2015 года в Firefox 30 и как недопустимая дата в Safari 7. Однако, если строка распознана как строка в формате ISO и она содержит недопустимые значения, метод вернёт {{jsxref("Global_Objects/NaN", "NaN")}} во всех браузерах, совместимых с ES5:

+ +
// Строка в формате ISO с недопустимыми значениями даты
+new Date('2014-25-23').toISOString();
+// вернёт "RangeError: invalid date" во всех браузерах, совместимых с ES5
+
+ +

Реализация эвристики SpiderMonkey может быть найдена в файле jsdate.cpp. Строка "10 06 2014" является примером не подходящей под формат ISO и поэтому её разбор откатывается на пользовательскую подпрограмму. Так же смотрите эту грубую схему работы разбора строки.

+ +
new Date('10 06 2014');
+
+ +

будет рассматриваться как местная дата 6 октября 2014 года, а не 10 июня 2014 года. Другие примеры:

+ +
new Date('foo-bar 2014').toString();
+// вернёт: "Invalid Date"
+
+Date.parse('foo-bar 2014');
+// вернёт: NaN
+
+ +

Примеры

+ +

Пример: использование метода Date.parse()

+ +

Если переменная IPOdate содержит существующий объект {{jsxref("Global_Objects/Date", "Date")}}, она может быть установлена в 9 августа 1995 года (по местному времени) следующим способом:

+ +
IPOdate.setTime(Date.parse('Aug 9, 1995'));
+ +

Ещё несколько примеров разбора нестандартных строк с датами:

+ +
Date.parse('Aug 9, 1995');
+ +

Вернёт 807937200000 в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.

+ +
Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');
+ +

Вернёт 807926400000 вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

+ +
Date.parse('Wed, 09 Aug 1995 00:00:00');
+ +

Вернёт 807937200000 в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');
+ +

Вернёт 0 вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00');
+ +

Вернёт 14400000 в часовом поясе GMT-0400, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то используется местный часовой пояс.

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');
+ +

Вернёт 14400000 вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}}{{Spec2('ES5.1')}}Добавлен формат ISO 8601.
{{SpecName('ES6', '#sec-date.parse', 'Date.parse')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Формат ISO 8601{{CompatVersionUnknown}}{{CompatGeckodesktop("2.0")}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Формат ISO 8601{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/prototype/index.html b/files/ru/web/javascript/reference/global_objects/date/prototype/index.html new file mode 100644 index 0000000000..6a3bb3c62b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/prototype/index.html @@ -0,0 +1,228 @@ +--- +title: Date.prototype +slug: Web/JavaScript/Reference/Global_Objects/Date/prototype +tags: + - Date + - JavaScript + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Свойство Date.prototype представляет прототип конструктора {{jsxref("Global_Objects/Date", "Date")}}.

+ +
{{js_property_attributes(0, 0, 1)}}
+ +

Описание

+ +

Все экземпляры {{jsxref("Global_Objects/Date", "Date")}} наследуются от Date.prototype. Объект прототипа конструктора {{jsxref("Global_Objects/Date", "Date")}} может быть изменён для затрагивания всех экземпляров объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Для совместимости с вычислениями тысячелетия (другими словами, для учёта 2000 года), вы всегда должны указывать полный год; например, использовать число 1998, а не 98. Чтобы помочь вам определить полный год, JavaScript включает методы {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}, {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}}, {{jsxref("Date.prototype.getUTCFullYear()", "getUTCFullYear()")}} и {{jsxref("Date.prototype.setUTCFullYear()", "setUTCFullYear()")}}.

+ +

Свойства

+ +
+
Date.prototype.constructor
+
Возвращает функцию, создавшую этот экземпляр объекта. По умолчанию ей является объект {{jsxref("Global_Objects/Date", "Date")}}.
+
+ +
{{jsOverrides("Object", "properties", "constructor")}}
+ +

Методы

+ +

Получения значения

+ +
+
{{jsxref("Date.prototype.getDate()")}}
+
Возвращает день месяца (1-31) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getDay()")}}
+
Возвращает день недели (0-6) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getFullYear()")}}
+
Возвращает год (4 цифры для 4-х значного года) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getHours()")}}
+
Возвращает часы (0-23) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getMilliseconds()")}}
+
Возвращает миллисекунды (0-999) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getMinutes()")}}
+
Возвращает минуты (0-59) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getMonth()")}}
+
Возвращает месяц (0-11) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getSeconds()")}}
+
Возвращает секунды (0-59) указанной даты по местному времени.
+
{{jsxref("Date.prototype.getTime()")}}
+
Возвращает числовое значение указанной даты как количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC (отрицательное значение для даты до этого момента).
+
{{jsxref("Date.prototype.getTimezoneOffset()")}}
+
Возвращает смещение часового пояса в минутах для текущей локали.
+
{{jsxref("Date.prototype.getUTCDate()")}}
+
Возвращает день месяца (1-31) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCDay()")}}
+
Возвращает день недели (0-6) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCFullYear()")}}
+
Возвращает год (4 цифры для 4-х значного года) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCHours()")}}
+
Возвращает часы (0-23) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCMilliseconds()")}}
+
Возвращает миллисекунды (0-999) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCMinutes()")}}
+
Возвращает минуты (0-59) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCMonth()")}}
+
Возвращает месяц (0-11) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getUTCSeconds()")}}
+
Возвращает секунды (0-59) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.getYear()")}} {{deprecated_inline}}
+
Возвращает год (обычно 2-3 цифры) указанной даты по всемирному координированному времени. Вместо него используйте метод {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}.
+
+ +

Установки значения

+ +
+
{{jsxref("Date.prototype.setDate()")}}
+
Устанавливает день месяца указанной даты по местному времени.
+
{{jsxref("Date.prototype.setFullYear()")}}
+
Устанавливает полный год (4 цифры для 4-х значного года) указанной даты по местному времени.
+
{{jsxref("Date.prototype.setHours()")}}
+
Устанавливает часы указанной даты по местному времени.
+
{{jsxref("Date.prototype.setMilliseconds()")}}
+
Устанавливает миллисекунды указанной даты по местному времени.
+
{{jsxref("Date.prototype.setMinutes()")}}
+
Устанавливает минуты указанной даты по местному времени.
+
{{jsxref("Date.prototype.setMonth()")}}
+
Устанавливает месяц указанной даты по местному времени.
+
{{jsxref("Date.prototype.setSeconds()")}}
+
Устанавливает секунды указанной даты по местному времени.
+
{{jsxref("Date.prototype.setTime()")}}
+
Устанавливает объект {{jsxref("Global_Objects/Date", "Date")}} во время, представляемое количеством миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC (отрицательное значение устанавливает даты до этого момента).
+
{{jsxref("Date.prototype.setUTCDate()")}}
+
Устанавливает день месяца указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCFullYear()")}}
+
Устанавливает полный год (4 цифры для 4-х значного года) указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCHours()")}}
+
Устанавливает часы указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCMilliseconds()")}}
+
Устанавливает миллисекунды указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCMinutes()")}}
+
Устанавливает минуты указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCMonth()")}}
+
Устанавливает месяц указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setUTCSeconds()")}}
+
Устанавливает секунды указанной даты по всемирному координированному времени.
+
{{jsxref("Date.prototype.setYear()")}} {{deprecated_inline}}
+
Устанавливает год (обычно 2-3 цифры) указанной даты по всемирному координированному времени. Вместо него используйте метод {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}}.
+
+ +

Получения преобразованного значения

+ +
+
{{jsxref("Date.prototype.toDateString()")}}
+
Возвращает часть, содержащую только дату объекта {{jsxref("Global_Objects/Date", "Date")}} в качестве человеко-читаемой строки.
+
{{jsxref("Date.prototype.toISOString()")}}
+
Преобразует дату в строку, следуя расширенному формату ISO 8601.
+
{{jsxref("Date.prototype.toJSON()")}}
+
Возвращает строку, представляющую объект {{jsxref("Global_Objects/Date", "Date")}}, используя метод {{jsxref("Date.prototype.toISOString()", "toISOString()")}}. Предназначен для использования методом {{jsxref("JSON.stringify()")}}.
+
{{jsxref("Date.prototype.toGMTString()")}} {{deprecated_inline}}
+
Возвращает строку, представляющую объект {{jsxref("Global_Objects/Date", "Date")}}, на основе часового пояса GMT (всемирное время). Вместо него используйте метод {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.
+
{{jsxref("Date.prototype.toLocaleDateString()")}}
+
Возвращает строку с датой, чьё представление зависит от системных настроек локали.
+
{{jsxref("Date.prototype.toLocaleFormat()")}} {{non-standard_inline}}
+
Преобразует дату в строку, используя строку форматирования.
+
{{jsxref("Date.prototype.toLocaleString()")}}
+
Возвращает строку, чьё представление зависит от настроек локали. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.
+
{{jsxref("Date.prototype.toLocaleTimeString()")}}
+
Возвращает строку со временем, чьё представление зависит от системных настроек локали.
+
{{jsxref("Date.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает строковое представление исходного кода эквивалентного объекта {{jsxref("Global_Objects/Date", "Date")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Date.prototype.toString()")}}
+
Возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Date", "Date")}}. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Date.prototype.toTimeString()")}}
+
Возвращает часть, содержащую только время объекта {{jsxref("Global_Objects/Date", "Date")}} в качестве человеко-читаемой строки.
+
{{jsxref("Date.prototype.toUTCString()")}}
+
Преобразует дату в строку, используя часовой пояс UTC.
+
{{jsxref("Date.prototype.valueOf()")}}
+
Возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}}. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.
+
+ +
{{jsOverrides("Object", "methods", "getDate", "getDay", "getFullYear", "getHours", "getMilliseconds", "getMinutes", "getMonth", "getSeconds", "getTime", "getTimezoneOffset", "getUTCDate", "getUTCDay", "getUTCFullYear", "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", "getUTCMonth", "getUTCSeconds", "getYear", "setdate", "setFullYear", "setHours", "setMilliseconds", "setMinutes", "setMontth", "setSeconds", "setTime", "setUTCDate", "setUTCFullYear", "setUTCHours", "setUTCMilliseconds", "setUTCMinutes", "setUTCMonth", "setUTCSeconds", "setYear", "toDateString", "toGMTString", "toLocaleDateString", "toLocaleFormat", "toLocaleString", "toLocaleTimeString", "toSource", "toString", "toTimeString", "toUTCString", "valueOf")}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5', 'Date.prototype')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-properties-of-the-date-prototype-object', 'Date.prototype')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/date/setdate/index.html b/files/ru/web/javascript/reference/global_objects/date/setdate/index.html new file mode 100644 index 0000000000..0fd3f1c9b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setdate/index.html @@ -0,0 +1,84 @@ +--- +title: Date.prototype.setDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setDate +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод setDate() устанавливает день месяца указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.setDate(dayValue)
+ +

Параметры

+ +
+
dayValue
+
Целое число, представляющее номер дня в месяце.
+
+ +

Возвращаемое значение

+ +

В результате выполнения функция setDate() изменяет текущий объект ({{jsxref("Date")}}) и возвращает количество миллисекунд от начала эпохи (1 января 1970 00:00:00 UTC) для полученного значения объекта.

+ +

Описание

+ +

Если значение параметра dayValue будет выходить за пределы количества дней для месяца, метод setDate() соответственно обновит объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве dayValue передать значение 0, дата будет установлена в последний день предыдущего месяца.

+ +

Примеры

+ +

Пример: использование метода setDate()

+ +
var theBigDay = new Date(1962, 6, 7); // 1962-07-07
+theBigDay.setDate(24);  // 1962-07-24
+theBigDay.setDate(32);  // 1962-08-01
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.36', 'Date.prototype.setDate')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
 
+ +
{{Compat("javascript.builtins.Date.setDate")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html new file mode 100644 index 0000000000..a0022b73cc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html @@ -0,0 +1,136 @@ +--- +title: Date.prototype.setFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод setFullYear() устанавливает полный год указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.setFullYear(yearValue[, monthValue[, dayValue]])
+ +

Параметры

+ +
+
yearValue
+
Целое число, определяющее значение года, например, 1995.
+
monthValue
+
Необязательный параметр. Целое число от 0 до 11, представляющее месяцы от января до декабря.
+
dayValue
+
Необязательный параметр. Целое число от 1 до 31, представляющее день месяца. Если вы определите параметр dayValue, вы также должны определить параметр monthValue.
+
+ +

Возвращаемое значение

+ +

Текущее время в милисекундах для нового значения даты — такое же значение как и у метода {{jsxref("Date.prototype.getTime()", "getTime()")}} для текущего объекта после вызова setFullYear().

+ +

Описание

+ +

Если вы не определите значения параметров monthValue и dayValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getMonth()", "getMonth()")}} и {{jsxref("Date.prototype.getDate()", "getDate()")}}.

+ +

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setFullYear() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве monthValue передать значение 15, год увеличится на 1 (yearValue + 1), а в качестве месяца будет использоваться значение 3.

+ +

Примеры

+ +

Пример: использование метода setFullYear()

+ +
var theBigDay = new Date();
+theBigDay.setFullYear(1997);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/sethours/index.html b/files/ru/web/javascript/reference/global_objects/date/sethours/index.html new file mode 100644 index 0000000000..8112970d7b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/sethours/index.html @@ -0,0 +1,125 @@ +--- +title: Date.prototype.setHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setHours +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setHours() устанавливает часы указанной даты по местному времени и возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до времени, представляемого обновлённым экземпляром {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Синтаксис

+
dateObj.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
+ +

Версия до JavaScript 1.3

+
dateObj.setHours(hoursValue)
+ +

Параметры

+
+
hoursValue
+
Целое число от 0 до 23, представляющее часы.
+
minutesValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее минуты.
+
secondsValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр secondsValue, вы также должны определить параметр minutesValue.
+
msValue
+
Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр msValue, вы также должны определить параметры minutesValue и secondsValue.
+
+ +

Описание

+

Если вы не определите значения параметров minutesValue, secondsValue и msValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getMinutes()", "getMinutes()")}}, {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} и {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setHours() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1 (minutesValue + 1), а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setHours()

+
var theBigDay = new Date();
+theBigDay.setHours(7);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.34', 'Date.prototype.setHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html new file mode 100644 index 0000000000..fb380ec0c8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setMilliseconds() устанавливает миллисекунды указанной даты по местному времени.

+ +

Синтаксис

+
dateObj.setMilliseconds(millisecondsValue)
+ +

Параметры

+
+
millisecondsValue
+
Целое число от 0 до 999, представляющее миллисекунды.
+
+ +

Описание

+

Если значение параметра millisecondsValue будет выходить за пределы ожидаемого диапазона, метод setMilliseconds() соответственно обновит объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве millisecondsValue передать значение 1005, количество секунд увеличится на 1, а в качестве миллисекунд будет использоваться значение 5.

+ +

Примеры

+ +

Пример: использование метода setMilliseconds()

+
var theBigDay = new Date();
+theBigDay.setMilliseconds(100);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.28', 'Date.prototype.setMilliseconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html new file mode 100644 index 0000000000..3cf8647e14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html @@ -0,0 +1,139 @@ +--- +title: Date.prototype.setMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод setMinutes() устанавливает минуты указанной даты по местному времени.

+ +

Синтаксис

+ +
dateObj.setMinutes(minutesValue[, secondsValue[, msValue]])
+ +

Версия до JavaScript 1.3

+ +
dateObj.setMinutes(minutesValue)
+ +

Параметры

+ +
+
minutesValue
+
Целое число от 0 до 59, представляющее минуты.
+
secondsValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр secondsValue, вы также должны определить параметр minutesValue.
+
msValue
+
Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр msValue, вы также должны определить параметры minutesValue и secondsValue.
+
+ +

Возвращаемое значение

+ +

Количество миллисекунд между 1 января 1970 00:00:00 UTC и обновленной датой.

+ +

Описание

+ +

Если вы не определите значения параметров secondsValue и msValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} и {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.

+ +

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setMinutes() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1 (minutesValue + 1), а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setMinutes()

+ +
var theBigDay = new Date();
+theBigDay.setMinutes(45);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.32', 'Date.prototype.setMinutes')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html new file mode 100644 index 0000000000..439476b7cc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.setMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setMonth() устанавливает месяц указанной даты по местному времени.

+ +

Синтаксис

+
dateObj.setMonth(monthValue[, dayValue])
+ +

Версия до JavaScript 1.3

+
dateObj.setMonth(monthValue)
+ +

Parameter

+
+
monthValue
+
Целое число от 0 до 11, представляющее месяцы от января до декабря.
+
dayValue
+
Необязательный параметр. Целое число от 1 до 31, представляющее день месяца.
+
+ +

Описание

+

Если вы не определите значения параметра dayValue, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getDate()", "getDate()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setMonth() попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве monthValue передать значение 15, год увеличится на 1, а в качестве месяца будет использоваться значение 3.

+ +

Примеры

+ +

Пример: использование метода setMonth()

+
var theBigDay = new Date();
+theBigDay.setMonth(6);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.38', 'Date.prototype.setMonth')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html new file mode 100644 index 0000000000..789eb9d7e1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.setSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setSeconds() устанавливает секунды указанной даты по местному времени.

+ +

Синтаксис

+
dateObj.setSeconds(secondsValue[, msValue])
+ +

Версия до JavaScript 1.3

+
dateObj.setSeconds(secondsValue)
+ +

Параметры

+
+
secondsValue
+
Целое число от 0 до 59, представляющее количество секунд.
+
msValue
+
Необязательный параметр. Число от 0 до 999, представляющее количество миллисекунд.
+
+ +

Описание

+

Если вы не определите значения параметра msValue, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setSeconds() попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1, а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setSeconds()

+
var theBigDay = new Date();
+theBigDay.setSeconds(30);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.30', 'Date.prototype.setSeconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/settime/index.html b/files/ru/web/javascript/reference/global_objects/date/settime/index.html new file mode 100644 index 0000000000..ed30f8c6d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/settime/index.html @@ -0,0 +1,116 @@ +--- +title: Date.prototype.setTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/setTime +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setTime +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setTime() устанавливает время объекта {{jsxref("Global_Objects/Date", "Date")}} в значение, представляемое количеством миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC.

+ +

Синтаксис

+
dateObj.setTime(timeValue)
+ +

Параметры

+
+
timeValue
+
Целое число, представляющее количеством миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC.
+
+ +

Описание

+

Используя метод setTime(), можно присвоить дату и время другому объекту {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Примеры

+ +

Пример: использование метода setTime()

+
var theBigDay = new Date('July 1, 1999');
+var sameAsBigDay = new Date();
+sameAsBigDay.setTime(theBigDay.getTime());
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.27', 'Date.prototype.setTime')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html new file mode 100644 index 0000000000..7f42960c13 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCDate() устанавливает день месяца указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCDate(dayValue)
+ +

Параметры

+
+
dayValue
+
Целое число от 1 до 31, представляющее номер дня в месяце.
+
+ +

Описание

+

Если значение параметра dayValue будет выходить за пределы количества дней для месяца, метод setUTCDate() попытается соответственно обновить объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве dayValue передать значение 40, а текущий сохранённый в объекте {{jsxref("Global_Objects/Date", "Date")}} месяц равен июню, день будет изменён на 10, а месяц увеличится до июля.

+ +

Примеры

+ +

Пример: использование метода setUTCDate()

+
var theBigDay = new Date();
+theBigDay.setUTCDate(20);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.37', 'Date.prototype.setUTCDate')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html new file mode 100644 index 0000000000..4dbcfe0c7a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html @@ -0,0 +1,120 @@ +--- +title: Date.prototype.setUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCFullYear() устанавливает полный год указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCFullYear(yearValue[, monthValue[, dayValue]])
+ +

Параметры

+
+
yearValue
+
Целое число, определяющее значение года, например, 1995.
+
monthValue
+
Необязательный параметр. Целое число от 0 до 11, представляющее месяцы от января до декабря.
+
dayValue
+
Необязательный параметр. Целое число от 1 до 31, представляющее день месяца. Если вы определите параметр dayValue, вы также должны определить параметр monthValue.
+
+ +

Описание

+

Если вы не определите значения параметров monthValue и dayValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCMonth()", "getUTCMonth()")}} и {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setUTCFullYear() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве monthValue передать значение 15, год увеличится на 1 (yearValue + 1), а в качестве месяца будет использоваться значение 3.

+ +

Примеры

+ +

Пример: использование метода setUTCFullYear()

+
var theBigDay = new Date();
+theBigDay.setUTCFullYear(1997);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.41', 'Date.prototype.setUTCFullYear')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html b/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html new file mode 100644 index 0000000000..333120ab9b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html @@ -0,0 +1,122 @@ +--- +title: Date.prototype.setUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCHours() устанавливает часы указанной даты по всемирному координированному времени и возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до времени, представляемого обновлённым экземпляром {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Синтаксис

+
dateObj.setUTCHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
+ +

Параметры

+
+
hoursValue
+
Целое число от 0 до 23, представляющее часы.
+
minutesValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее минуты.
+
secondsValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр secondsValue, вы также должны определить параметр minutesValue.
+
msValue
+
Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр msValue, вы также должны определить параметры minutesValue и secondsValue.
+
+ +

Описание

+

Если вы не определите значения параметров minutesValue, secondsValue и msValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCMinutes()", "getUTCMinutes()")}}, {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} и {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setUTCHours() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1 (minutesValue + 1), а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setUTCHours()

+
var theBigDay = new Date();
+theBigDay.setUTCHours(8);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.35', 'Date.prototype.setUTCHours')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html new file mode 100644 index 0000000000..ce32739425 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCMilliseconds() устанавливает миллисекунды указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCMilliseconds(millisecondsValue)
+ +

Параметры

+
+
millisecondsValue
+
Целое число от 0 до 999, представляющее миллисекунды.
+
+ +

Описание

+

Если значение параметра millisecondsValue будет выходить за пределы ожидаемого диапазона, метод setUTCMilliseconds() попытается соответственно обновить объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве millisecondsValue передать значение 1100, количество секунд увеличится на 1, а в качестве миллисекунд будет использоваться значение 100.

+ +

Примеры

+ +

Пример: использование метода setUTCMilliseconds()

+
var theBigDay = new Date();
+theBigDay.setUTCMilliseconds(500);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.29', 'Date.prototype.setUTCMilliseconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html new file mode 100644 index 0000000000..ab55814ccd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html @@ -0,0 +1,120 @@ +--- +title: Date.prototype.setUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCMinutes() устанавливает минуты указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCMinutes(minutesValue[, secondsValue[, msValue]])
+ +

Параметры

+
+
minutesValue
+
Целое число от 0 до 59, представляющее минуты.
+
secondsValue
+
Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр secondsValue, вы также должны определить параметр minutesValue.
+
msValue
+
Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр msValue, вы также должны определить параметры minutesValue и secondsValue.
+
+ +

Описание

+

Если вы не определите значения параметров secondsValue и msValue, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} и {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setUTCMinutes() попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1 (minutesValue + 1), а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setUTCMinutes()

+
var theBigDay = new Date();
+theBigDay.setUTCMinutes(43);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.33', 'Date.prototype.setUTCMinutes')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html new file mode 100644 index 0000000000..5dae100c2d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.setUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCMonth() устанавливает месяц указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCMonth(monthValue[, dayValue])
+ +

Параметры

+
+
monthValue
+
Целое число от 0 до 11, представляющее месяцы от января до декабря.
+
dayValue
+
Необязательный параметр. Целое число от 1 до 31, представляющее день месяца.
+
+ +

Описание

+

Если вы не определите значения параметра dayValue, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setUTCMonth() попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве monthValue передать значение 15, год увеличится на 1, а в качестве месяца будет использоваться значение 3.

+ +

Примеры

+ +

Пример: использование метода setUTCMonth()

+
var theBigDay = new Date();
+theBigDay.setUTCMonth(11);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.39', 'Date.prototype.setUTCMonth')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html new file mode 100644 index 0000000000..8fe93a7d8d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.setUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод setUTCSeconds() устанавливает секунды указанной даты по всемирному координированному времени.

+ +

Синтаксис

+
dateObj.setUTCSeconds(secondsValue[, msValue])
+ +

Параметры

+
+
secondsValue
+
Целое число от 0 до 59, представляющее количество секунд.
+
msValue
+
Необязательный параметр. Число от 0 до 999, представляющее количество миллисекунд.
+
+ +

Описание

+

Если вы не определите значения параметра msValue, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.

+

Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод setUTCSeconds() попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве secondsValue передать значение 100, минуты увеличатся на 1, а в качестве секунд будет использоваться значение 40.

+ +

Примеры

+ +

Пример: использование метода setUTCSeconds()

+
var theBigDay = new Date();
+theBigDay.setUTCSeconds(20);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.31', 'Date.prototype.setUTCSeconds')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/setyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setyear/index.html new file mode 100644 index 0000000000..d3127e4bf0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setyear/index.html @@ -0,0 +1,87 @@ +--- +title: Date.prototype.setYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setYear +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setYear +--- +
{{JSRef("Global_Objects", "Date")}} {{deprecated_header}}
+ +

Сводка

+ +

Метод setYear() устанавливает год указанной даты по местному времени. Поскольку метод setYear() не устанавливает полный год («проблема 2000 года»), он больше не используется и был заменён методом {{jsxref("Date.prototype.setFullYear", "setFullYear()")}}.

+ +

Синтаксис

+ +
dateObj.setYear(yearValue)
+ +

Параметры

+ +
+
yearValue
+
Целое число.
+
+ +

Описание

+ +

Если параметр yearValue является числом в диапазоне от 0 до 99 (включительно), год объекта dateObj устанавливается в 1900 + yearValue. В противном случае год объекта dateObj устанавливается в yearValue.

+ +

Примеры

+ +

Пример: использование метода setYear()

+ +

Первые две строки устанавливают год в 1996. Третья строка устанавливает год в 2000.

+ +
var theBigDay = new Date();
+
+theBigDay.setYear(96);
+theBigDay.setYear(1996);
+theBigDay.setYear(2000);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-B.2.5', 'Date.prototype.getYear')}}{{Spec2('ES5.1')}}Определён в (информативном) приложении по совместимости.
{{SpecName('ES6', '#sec-date.prototype.setyear', 'Date.prototype.getYear')}}{{Spec2('ES6')}}Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Date.setYear")}}
+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html b/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html new file mode 100644 index 0000000000..c36b9f6929 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.toDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toDateString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод toDateString() возвращает часть, содержащую только дату объекта {{jsxref("Global_Objects/Date", "Date")}} в виде человеко-читаемой строки на американском английском.

+ +

Синтаксис

+
dateObj.toDateString()
+ +

Описание

+

Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода {{jsxref("Date.prototype.toString()", "toString()")}} вернёт дату, отформатированную в виде человеко-читаемой строки на американском английском. В SpiderMonkey она состоит из части, содержищей дату (день, месяц и год) и следующей за ней части, содержащей время (часы, минуты, секунды и часовой пояс). Иногда желательно получить строку, содержащую только часть с датой; этого можно достигнуть использованием метода toDateString().

+

Метод toDateString() полезен тем, что совместимые движки, реализующие ECMA-262 могут давать разные строки с помощью метода {{jsxref("Date.prototype.toString()", "toString()")}} объекта {{jsxref("Global_Objects/Date", "Date")}}, поскольку формат строки зависит от реализации и простой подход с разрезанием строки на дату и время может не всегда сработать.

+ +

Примеры

+ +

Пример: базовое использование метода toDateString()

+
var d = new Date(1993, 6, 28, 14, 39, 7);
+
+console.log(d.toString());     // напечатает Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
+console.log(d.toDateString()); // напечатает Wed Jul 28 1993
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.9.5.3', 'Date.prototype.toDateString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html b/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html new file mode 100644 index 0000000000..b10fb90ceb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.toGMTString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +--- +
{{JSRef("Global_Objects", "Date")}} {{deprecated_header}}
+ +

Сводка

+

Метод toGMTString() преобразует дату в строку, используя соглашения Среднего времени по Гринвичу (GMT) в Интернет. Точный формат значения, возвращаемого методом toGMTString() различается на разных платформах и браузерах, можно лишь сказать, что он представляет собой человеко-читаемую строку с датой.

+
+

Примечание: метод toGMTString() устарел и не должен использоваться. Он оставлен только для обратной совместимости; пожалуйста, используйте вместо него метод {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.

+
+ +

Синтаксис

+
dateObj.toGMTString()
+ +

Примеры

+ +

Пример: использование метода toGMTString()

+

В этом примере метод toGMTString() преобразует дату в формат GMT (UTC), используя часовой пояс операционной системы и возвращает подобную строку. Точный формат зависит от платформы.

+
var today = new Date();
+var str = today.toGMTString();  // устарел! используйте метод toUTCString()
+
+console.log(str);               // Mon, 18 Dec 1995 17:28:35 GMT
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение, но уже определён как устаревший. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-B.2.6', 'Date.prototype.toGMTString')}}{{Spec2('ES5.1')}}Определён в (информативном) приложении по совместимости.
{{SpecName('ES6', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}{{Spec2('ES6')}}Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html b/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html new file mode 100644 index 0000000000..347f326d0b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html @@ -0,0 +1,143 @@ +--- +title: Date.prototype.toISOString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toISOString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод toISOString() возвращает строку в формате ISO (расширенный формат ISO 8601), который можно описать следующим образом: YYYY-MM-DDTHH:mm:ss.sssZ. Часовой пояс всегда равен UTC, что обозначено суффиксом "Z".

+ +

Синтаксис

+ +
dateObj.toISOString()
+ +

Примеры

+ +

Пример: использование метода toISOString()

+ +
var today = new Date('05 October 2011 14:48 UTC');
+
+console.log(today.toISOString()); // вернёт 2011-10-05T14:48:00.000Z
+
+ +

Пример выше использует разбор нестандартного строкового значения, которое может разобраться некорректно в браузерах, отличных от Firefox.

+ +

Полифилл

+ +

Этот метод был стандартизирован в ECMA-262 5-го издания. Отсутствие этого метода в движках, которые не были обновлены для его поддержки, можно обойти следующей прокладкой:

+ +
if (!Date.prototype.toISOString) {
+  (function() {
+
+    function pad(number) {
+      if (number < 10) {
+        return '0' + number;
+      }
+      return number;
+    }
+
+    Date.prototype.toISOString = function() {
+      return this.getUTCFullYear() +
+        '-' + pad(this.getUTCMonth() + 1) +
+        '-' + pad(this.getUTCDate()) +
+        'T' + pad(this.getUTCHours()) +
+        ':' + pad(this.getUTCMinutes()) +
+        ':' + pad(this.getUTCSeconds()) +
+        '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) +
+        'Z';
+    };
+
+  }());
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.
{{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/tojson/index.html b/files/ru/web/javascript/reference/global_objects/date/tojson/index.html new file mode 100644 index 0000000000..75ba90a661 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tojson/index.html @@ -0,0 +1,107 @@ +--- +title: Date.prototype.toJSON() +slug: Web/JavaScript/Reference/Global_Objects/Date/toJSON +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод toJSON() возвращает представление объекта {{jsxref("Global_Objects/Date", "Date")}} в виде {{Glossary("JSON")}}.

+ +

Синтаксис

+
dateObj.toJSON()
+ +

Описание

+

Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода toJSON() вернёт строку, отформатированную в JSON (при помощи метода {{jsxref("Date.prototype.toISOString()", "toISOString()")}}), представляющую значение объекта {{jsxref("Global_Objects/Date", "Date")}}. Этот метод, как правило, предназначен для сериализации объектов {{jsxref("Global_Objects/Date", "Date")}} в JSON.

+ +

Примеры

+ +

Пример: использование метода toJSON()

+
var jsonDate = (new Date()).toJSON();
+var backToDate = new Date(jsonDate);
+
+console.log('Сериализованный объект даты: ' + jsonDate);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.9.5.44', 'Date.prototype.toJSON')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html new file mode 100644 index 0000000000..86c6dd4d0d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html @@ -0,0 +1,226 @@ +--- +title: Date.prototype.toLocaleDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод toLocaleDateString() возвращает строку с языко-зависимым представлением части с датой в этой дате. Новые аргументы locales и options позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы locales и options, используемая локаль и форма возвращённой строки целиком зависит от реализации.

+ +

Синтаксис

+ +
dateObj.toLocaleDateString([locales [, options]])
+ +

Параметры

+ +

Проверьте раздел Совместимость с браузерами, чтобы увидеть, какие браузеры поддерживают аргументы locales и options, и Пример: проверка поддержки аргументов locales и options для определения этой возможности.

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +

Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства weekday, year, month и day равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными "numeric".

+ +

Примеры

+ +

Пример: использование метода toLocaleDateString()

+ +

При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// Вывод toLocaleDateString() без аргументов зависит от реализации,
+// локали по умолчанию и часового пояса по умолчанию
+console.log(date.toLocaleDateString());
+// → "12/11/2012", если код запущен с локалью en-US и часовым поясом America/Los_Angeles
+
+ +

Пример: проверка поддержки аргументов locales и options

+ +

Аргументы locales и options поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+ +
function toLocaleDateStringSupportsLocales() {
+  try {
+    new Date().toLocaleDateString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Пример: использование аргумента locales

+ +

Этот пример показывает некоторые локализованные форматы даты. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Форматирование ниже предполагает, что местный часовой пояс равен
+// America/Los_Angeles для локали США
+
+// В америкаском английском используется порядок месяц-день-год
+console.log(date.toLocaleDateString('en-US'));
+// → "12/19/2012"
+
+// В британском английском используется порядок день-месяц-год
+console.log(date.toLocaleDateString('en-GB'));
+// → "20/12/2012"
+
+// В корейском используется порядок год-месяц-день
+console.log(date.toLocaleDateString('ko-KR'));
+// → "2012. 12. 20."
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(date.toLocaleDateString('ar-EG'));
+// → "٢٠‏/١٢‏/٢٠١٢"
+
+// В Японии приложения могут захотеть использовать японский календарь,
+// в котором 2012 год являеся 24-м годом эры Хейсей
+console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
+// → "24/12/20"
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(date.toLocaleDateString(['ban', 'id']));
+// → "20/12/2012"
+
+ +

Пример: использование аргумента options

+ +

Результат, предоставляемый методом toLocaleDateString(), может быть настроен с помощью аргумента options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Запрашиваем день недели вместе с длинным форматом даты
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleDateString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// Приложение может захотеть использовать UTC и показать это
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleDateString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+ +

Производительность

+ +

При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', 'sec-15.9.5.6', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES6')}} 
{{SpecName('ES Int 1.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 1.0')}}Определяет аргументы locales и options.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatChrome("24")}} + поддержка временных зон, отличных от UTC{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}
+ {{bug(864843)}}
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html new file mode 100644 index 0000000000..af33b9da2f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html @@ -0,0 +1,73 @@ +--- +title: Date.prototype.toLocaleFormat() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat +tags: + - Date + - JavaScript + - Method + - Non-standard + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Date.toLocaleFormat +--- +
{{JSRef}} {{non-standard_header}}
+ +

Нестандартный метод toLocaleFormat() преобразует дату в строку, используя указанное форматирование. Объект {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} является совместимой со стандартами альтернативой при форматировании дат. Так же смотрите новую версию метода {{jsxref("Date.prototype.toLocaleDateString()")}}.

+ +

Синтаксис

+ +
dateObj.toLocaleFormat(formatString)
+ +

Параметры

+ +
+
formatString
+
Строка формата в той же форме, что ожидается функцией C strftime().
+
+ +

Описание

+ +

Метод toLocaleFormat() обеспечивает больший контроль программного обеспечения над форматированием генерируемых даты и/или времени. Названия месяцев и дней недели локализуются с помощью локали операционной системы. Однако, порядок дней и месяцев и другие задачи локализации автоматически не обрабатываются, так как эти аспекты контролируете вы. Вы должны позаботиться о том, что строка формата была правильно локализована в соответствии с настройками системы пользователя. Знайте, что используемая локаль не обязательно совпадает с локалью браузера.

+ +

Разработчики расширений и XULRunner должны знать, что загрузку строки формата их файлов .dtd или .properties через URI chrome://somedomain/locale/somefile.ext нужно избегать, поскольку файлы .dtd/.properties и метод toLocaleFormat() не обязательно используют одну и ту же локаль, из-за чего результат может выглядеть странно, неоднозначно или даже нечитаемо.

+ +

Также обратите внимание, что поведение локали зависит от платформы и пользователь может настроить эту локаль, так что использование системной локали для выбора строки формата в некоторых случаях может быть даже неадекватным. Вы можете рассмотреть возможность использования более общих методов toLocale* объекта {{jsxref("Global_Objects/Date", "Date")}}, либо написать свою собственную локализацию даты, используя для её отображения методы get* объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Примеры

+ +

Пример: использование метода toLocaleFormat()

+ +
var today = new Date();
+var date = today.toLocaleFormat('%A, %B %e, %Y'); // плохой пример
+
+ +

В примере выше метод toLocaleFormat() возвращает строку вида "Wednesday, October 3, 2007". обратите внимание, что строка формата в данном примере не локализуется должным образом, что приводит к проблемам, описанным выше.

+ +

Библиотеки

+ +

Вы можете использовать библиотеку DateJS, если {{jsxref("Date.prototype.toLocaleDateString","Date.prototype.toLocaleDateString()")}} недоступен:

+ +
if (!Date.prototype.toLocaleFormat) {
+    (function() {
+        Date.prototype.toLocaleFormat = function(formatString) {
+            return this.format(formatString);
+        };
+    }());
+}
+ +

Спецификации

+ +

Не является частью какой-либо спецификации. Реализована в JavaScript 1.6.

+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Date.toLocaleFormat")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html new file mode 100644 index 0000000000..aff9e18a0a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html @@ -0,0 +1,233 @@ +--- +title: Date.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод toLocaleString() возвращает строку с языко-зависимым представлением даты. Новые аргументы locales и options позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы locales и options, используемая локаль и форма возвращённой строки целиком зависит от реализации.

+ +

Синтаксис

+ +
dateObj.toLocaleString([locales[, options]])
+ +

Параметры

+ +

Проверьте раздел Совместимость с браузерами, чтобы увидеть, какие браузеры поддерживают аргументы locales и options, и Пример: проверка поддержки аргументов locales и options для определения этой возможности.

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +

Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства weekday, year, month, day, hour, minute и second равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными "numeric".

+ +

Примеры

+ +

Пример: использование метода toLocaleString()

+ +

При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// Вывод toLocaleString() без аргументов зависит от реализации,
+// локали по умолчанию и часового пояса по умолчанию
+console.log(date.toLocaleString());
+// → "12/11/2012, 7:00:00 PM", если код запущен с локалью en-US и часовым поясом America/Los_Angeles
+
+ +

Пример: проверка поддержки аргументов locales и options

+ +

Аргументы locales и options поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+ +
function toLocaleStringSupportsLocales() {
+  try {
+    new Date().toLocaleString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Пример: использование аргумента locales

+ +

Этот пример показывает некоторые локализованные форматы даты и времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Форматирование ниже предполагает, что местный часовой пояс равен
+// America/Los_Angeles для локали США
+
+// В американском английском используется порядок месяц-день-год
+// и 12-часовой формат времени
+console.log(date.toLocaleString('en-US'));
+// → "12/19/2012, 7:00:00 PM"
+
+// В британском английском используется порядок день-месяц-год
+// и 24-часовой формат времени
+console.log(date.toLocaleString('en-GB'));
+// → "20/12/2012 03:00:00"
+
+// В корейском используется порядок год-месяц-день
+// и 12-часовой формат времени
+console.log(date.toLocaleString('ko-KR'));
+// → "2012. 12. 20. 오후 12:00:00"
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(date.toLocaleString('ar-EG'));
+// → "٢٠‏/١٢‏/٢٠١٢ ٥:٠٠:٠٠ ص"
+
+// В Японии приложения могут захотеть использовать японский календарь,
+// в котором 2012 год являеся 24-м годом эры Хейсей
+console.log(date.toLocaleString('ja-JP-u-ca-japanese'));
+// → "24/12/20 12:00:00"
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(date.toLocaleString(['ban', 'id']));
+// → "20/12/2012 11.00.00"
+
+ +

Пример: использование аргумента options

+ +

Результат, предоставляемый методом toLocaleString(), может быть настроен с помощью аргумента options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Запрашиваем день недели вместе с длинным форматом даты
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// Приложение может захотеть использовать UTC и показать это
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+// Иногда даже в США нужен 24-х часовой формат времени
+console.log(date.toLocaleString('en-US', { hour12: false }));
+// → "12/19/2012, 19:00:00"
+
+ +

Производительность

+ +

При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', 'sec-15.9.5.5', 'Date.prototype.toLocaleString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}{{Spec2('ES6')}} 
{{SpecName('ES Int 1.0', '#sec-13.3.1', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 1.0')}}Определяет аргументы locales и options.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}
+ {{bug(864843)}}
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html new file mode 100644 index 0000000000..733b0fb49c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html @@ -0,0 +1,203 @@ +--- +title: Date.prototype.toLocaleTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод toLocaleTimeString() возвращает строку с языко-зависимым представлением части со временем в этой дате. Новые аргументы locales и options позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы locales и options, используемая локаль и форма возвращённой строки целиком зависит от реализации.

+ +

Синтаксис

+
dateObj.toLocaleTimeString([locales[, options]])
+ +

Параметры

+

Проверьте раздел Совместимость с браузерами, чтобы увидеть, какие браузеры поддерживают аргументы locales и options, и Пример: проверка поддержки аргументов locales и options для определения этой возможности.

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+

Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства hour, minute и second равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными "numeric".

+ +

Примеры

+ +

Пример: использование метода toLocaleTimeString()

+

При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.

+
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// Вывод toLocaleTimeString() без аргументов зависит от реализации,
+// локали по умолчанию и часового пояса по умолчанию
+console.log(date.toLocaleTimeString());
+// → "7:00:00 PM", если код запущен с локалью en-US и часовым поясом America/Los_Angeles
+
+ +

Пример: проверка поддержки аргументов locales и options

+

Аргументы locales и options поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+
function toLocaleTimeStringSupportsLocales() {
+  try {
+    new Date().toLocaleTimeString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Пример: использование аргумента locales

+

Этот пример показывает некоторые локализованные форматы времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Форматирование ниже предполагает, что местный часовой пояс равен
+// America/Los_Angeles для локали США
+
+// В америкаском английском используется 12-часовой формат времени
+console.log(date.toLocaleTimeString('en-US'));
+// → "7:00:00 PM"
+
+// В британском английском используется 24-часовой формат времени
+console.log(date.toLocaleTimeString('en-GB'));
+// → "03:00:00"
+
+// В корейском используется 12-часовой формат времени
+console.log(date.toLocaleTimeString('ko-KR'));
+// → "오후 12:00:00"
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(date.toLocaleTimeString('ar-EG'));
+// → "٧:٠٠:٠٠ م"
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(date.toLocaleTimeString(['ban', 'id']));
+// → "11.00.00"
+
+ +

Пример: использование аргумента options

+

Результат, предоставляемый методом toLocaleTimeString(), может быть настроен с помощью аргумента options:

+
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Приложение может захотеть использовать UTC и показать это
+var options = { timeZone: 'UTC', timeZoneName: 'short' };
+console.log(date.toLocaleTimeString('en-US', options));
+// → "3:00:00 AM GMT"
+
+// Иногда даже в США нужен 24-х часовой формат времени
+console.log(date.toLocaleTimeString('en-US', { hour12: false }));
+// → "19:00:00"
+
+ +

Производительность

+

При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.7', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES6')}} 
{{SpecName('ES Int 1.0', '#sec-13.3.3', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 1.0')}}Определяет аргументы locales и options.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug(864843)}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/tosource/index.html b/files/ru/web/javascript/reference/global_objects/date/tosource/index.html new file mode 100644 index 0000000000..34f9182296 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tosource/index.html @@ -0,0 +1,93 @@ +--- +title: Date.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Date/toSource +tags: + - Date + - JavaScript + - Method + - Non-standard + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toSource +--- +
{{JSRef("Global_Objects", "Date")}} {{non-standard_header}}
+ +

Сводка

+

Метод toSource() возвращает строковое представление исходного кода объекта.

+ +

Синтаксис

+
dateObj.toSource()
+Date.toSource()
+ +

Параметры

+

Нет.

+ +

Описание

+

Метод toSource() возвращает следующие значения:

+ +

Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.

+ +

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/tostring/index.html b/files/ru/web/javascript/reference/global_objects/date/tostring/index.html new file mode 100644 index 0000000000..321a941ea9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tostring/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод toString() возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Синтаксис

+
dateObj.toString()
+ +

Параметры

+

Нет.

+ +

Описание

+

Объект {{jsxref("Global_Objects/Date", "Date")}} переопределяет метод toString(), унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/Date", "Date")}} метод toString() возвращает строковое представление объекта.

+

Метод toString() всегда возвращает строковое представление даты на американском английском.

+

JavaScript вызывает метод toString() автоматически, когда дата представляется как текст, или когда дата участвует в конкатенации строк.

+ +

Примеры

+ +

Пример: использование метода toString()

+

В следующем примере переменной myVar присваевается значение, возвращённое методом toString() объекта {{jsxref("Global_Objects/Date", "Date")}}:

+
var x = new Date();
+myVar = x.toString(); // присваивает переменной myVar значение вроде:
+// Mon Sep 28 1998 14:36:22 GMT-0700 (Pacific Daylight Time)
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.5.2', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html b/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html new file mode 100644 index 0000000000..f101bc29dc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html @@ -0,0 +1,77 @@ +--- +title: Date.prototype.toTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+ +

Метод toTimeString() возвращает часть, содержащую только время объекта {{jsxref("Global_Objects/Date", "Date")}} в виде человеко-читаемой строки на американском английском.

+ +

Синтаксис

+ +
dateObj.toTimeString()
+ +

Описание

+ +

Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода {{jsxref("Date.prototype.toString()", "toString()")}} вернёт дату, отформатированную в виде человеко-читаемой строки на американском английском. В SpiderMonkey она состоит из части, содержищей дату (день, месяц и год) и следующей за ней части, содержащей время (часы, минуты, секунды и часовой пояс). Иногда желательно получить строку, содержащую только часть со временем; этого можно достигнуть использованием метода toTimeString().

+ +

Метод toTimeString() полезен тем, что совместимые движки, реализующие ECMA-262 могут давать разные строки с помощью метода {{jsxref("Date.prototype.toString()", "toString()")}} объекта {{jsxref("Global_Objects/Date", "Date")}}, поскольку формат строки зависит от реализации и простой подход с разрезанием строки на дату и время может не всегда сработать.

+ +

Примеры

+ +

Пример: базовое использование метода toTimeString()

+ +
var d = new Date(1993, 6, 28, 14, 39, 7);
+
+console.log(d.toString());     // напечатает Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
+console.log(d.toTimeString()); // напечатает 14:39:07 GMT-0600 (PDT)
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.9.5.4', 'Date.prototype.toTimeString')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Date.toTimeString")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html new file mode 100644 index 0000000000..60aecd9ece --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.toUTCString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод toUTCString() преобразует дату в строку, используя часовой пояс UTC.

+ +

Синтаксис

+
dateObj.toUTCString()
+ +

Параметры

+

Нет.

+ +

Описание

+

Значение, возвращаемое методом toUTCString(), является человеко-читаемой строкой в часовом поясе UTC. Формат возвращаемого значения зависит от платформы. Наиболее растпространённым значением является форматированная по RFC-1123 временная метка, которая является немного обновлённой версией временной метки RFC-822.

+ +

Примеры

+ +

Пример: использование метода toUTCString()

+
var today = new Date();
+var UTCstring = today.toUTCString();
+// Mon, 03 Jul 2006 21:44:38 GMT
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.9.5.42', 'Date.prototype.toUTCString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/date/utc/index.html b/files/ru/web/javascript/reference/global_objects/date/utc/index.html new file mode 100644 index 0000000000..e05d187b79 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/utc/index.html @@ -0,0 +1,123 @@ +--- +title: Date.UTC() +slug: Web/JavaScript/Reference/Global_Objects/Date/UTC +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Метод Date.UTC() принимает те же самые параметры, что и самая длинная форма конструктора {{jsxref("Global_Objects/Date", "Date")}} и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.

+ +
{{EmbedInteractiveExample("pages/js/date-utc.html")}}
+ + + +

Синтаксис

+ +

 Начиная с  ECMAScript 2017:

+ +
Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]]])
+ +

ECMAScript 2016 и ранее: (использование month обязательно)

+ +
Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])
+ +

Параметры

+ +
+
year
+
Год, полностью.
+
month
+
Целое число между 0 и 11, представляющее месяц. (начиная с ES2017 необязательный параметр)
+
day {{optional_inline}}
+
Целое число между 1 и 31, представляющее дни месяца.
+
hour {{optional_inline}}
+
Целое число между 0 и 23, представляющее часы.
+
minute {{optional_inline}}
+
Целое число между 0 и 59, представляющее минуты.
+
second {{optional_inline}}
+
Целое число между 0 и 59, представляющее секунды.
+
millisecond {{optional_inline}}
+
Целое число между 0 и 999, представляющее миллисекунды.
+
+ +

Возвращаемое значение

+ +

Число, представляющее собой количество миллисекунд, прошедших с 1-ого Января 1970 года 00:00:00 UTC.

+ +

Описание

+ +

Метод UTC() принимает параметры даты, разделённые запятыми и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC и указанным вами временем.

+ +

Для параметра year вы должны указать полный год; например, 1998. Если указан год между 0 и 99, метод преобразует год в год в 20-м веке (1900 + year); например, если вы указали 95, будет использоваться 1995 год.

+ +

Метод UTC() отличается от конструктора {{jsxref("Global_Objects/Date", "Date")}} двумя вещами.

+ + + +

Если определённый вами параметр выходит за пределы ожидаемого диапазона, метод UTC() обновит другие параметры чтобы привести это число в ожидаемый диапазон. Например, если вы используете в качестве месяца число 15, год будет увеличен на 1 (year + 1), и в качестве месяца будет использоваться значение 3.

+ +

Поскольку метод UTC() является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как Date.UTC().

+ +

Примеры

+ +

Пример: использование Date.UTC()

+ +

Следующее выражение создаёт объект {{jsxref("Global_Objects/Date", "Date")}}, используя всемирное время вместо местного:

+ +
var utcDate = new Date(Date.UTC(2018, 11, 1, 0, 0, 0));
+
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
{{SpecName('ESDraft', '#sec-date.utc', 'Date.UTC')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Date.UTC")}}

+
+ +

Заметка о совместимости

+ +

Date.UTC() с менее чем двумя аргументами

+ +

Когда вы предоставляете функции Date.UTC() меньше, чем два аргумента, то по стандартам ECMAScript 2017, она должна вернуть {{jsxref("NaN")}}. Браузерные движки, не поддерживающие подобное поведение, были обновлены (смотрите bug 1050755, ecma-262 #642).

+ +
Date.UTC();
+Date.UTC(1);
+
+// Safari: NaN
+// Chrome/Opera/V8: NaN
+
+// Firefox <54: non-NaN
+// Firefox 54+: NaN
+
+// IE: non-NaN
+// Edge: NaN
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/date/valueof/index.html b/files/ru/web/javascript/reference/global_objects/date/valueof/index.html new file mode 100644 index 0000000000..d58f5412a6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/valueof/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Date/valueOf +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/valueOf +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Сводка

+

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Синтаксис

+
dateObj.valueOf()
+ +

Параметры

+

Нет.

+ +

Описание

+

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}} в виде числового типа данных — количества миллисекунд, прошедших с полуночи 01 января 1970 по UTC.

+

Этот метод полностью функционально эквивалентен методу {{jsxref("Date.prototype.getTime()")}}.

+

Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.

+ +

Примеры

+ +

Пример: использование метода valueOf()

+
var x = new Date(56, 6, 17);
+var myVar = x.valueOf();      // присваивает -424713600000 переменной myVar
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5.8', 'Date.prototype.valueOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/decodeuri/index.html b/files/ru/web/javascript/reference/global_objects/decodeuri/index.html new file mode 100644 index 0000000000..5f500a65b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/decodeuri/index.html @@ -0,0 +1,124 @@ +--- +title: decodeURI() +slug: Web/JavaScript/Reference/Global_Objects/decodeURI +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI +--- +
{{jsSidebar("Objects")}}
+ +

Метод decodeURI() декодирует унифицированный идентификатор ресурса (URI), созданный при помощи метода {{jsxref("encodeURI")}} или другой подобной процедуры.

+ +

 

+ +

{{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}}

+ + + +

 

+ +

Синтаксис

+ +
decodeURI(encodedURI)
+ +

Параметры

+ +
+
encodedURI
+
Полный закодированный унифицированный идентификатор ресурса.
+
+ +

Возвращаемое значение

+ +

Новая строка, представляющая собой незакодированную версию данного унифицированного идентификатора ресурса.

+ +

 

+ +

Exceptions

+ +

Throws an {{jsxref("URIError")}} ("malformed URI sequence") exception when encodedURI contains invalid character sequences.

+ +

 

+ +

Описание

+ +

Заменяет каждую управляющую последовательность в закодированном URI соответствующим символом. Не декодирует последовательности, которые невозможно сформировать с помощью {{jsxref("encodeURI")}}. Символ "#" декодированию не подвергается.

+ +

Примеры

+ +

Декодирование кириллического URL

+ +
decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
+// "https://developer.mozilla.org/ru/docs/JavaScript_шеллы"
+
+ +

 

+ +

Catching errors

+ +
try {
+  var a = decodeURI('%E0%A4%A');
+} catch(e) {
+  console.error(e);
+}
+
+// URIError: malformed URI sequence
+ +

 

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES3')}}СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.1.3.1', 'decodeURI')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-decodeuri-encodeduri', 'decodeURI')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-decodeuri-encodeduri', 'decodeURI')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.decodeURI")}}

+ +

 

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html new file mode 100644 index 0000000000..8e7562ad05 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html @@ -0,0 +1,107 @@ +--- +title: decodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

Метод decodeURIComponent() декодирует управляющие последовательности символов в компоненте Uniform Resource Identifier (URI), созданные с помощью метода {{jsxref("encodeURIComponent")}} или другой подобной процедуры.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-decodeuricomponent.html")}}
+ +
 
+ + + +

Синтаксис

+ +
decodeURIComponent(encodedURI)
+ +

Параметры

+ +
+
encodedURI
+
Строка, содержащая закодированный компонент Uniform Resource Identifier.
+
+ +

Возвращаемое значение

+ +

Новая строка, представляющая собой декодированную версию компонента Uniform Resource Identifier (URI), переданного в качестве параметра.

+ +

Исключения

+ +

При неправильном использовании выдает исключение {{jsxref("URIError")}} ("неверный формат последовательности URI").

+ +

Описание

+ +

Заменяет каждую управляющую последовательность в закодированном компоненте URI соответствующим ей символом.

+ +

Примеры

+ +

Декодирование компонента кириллического URL

+ +
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
+// "JavaScript_шеллы"
+
+ +

Перехват ошибок

+ +
try {
+  var a = decodeURIComponent('%E0%A4%A');
+} catch(e) {
+  console.error(e);
+}
+
+// URIError: malformed URI sequence
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение.
{{SpecName('ES5.1', '#sec-15.1.3.2', 'decodeURIComponent')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.decodeURIComponent")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/encodeuri/index.html b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html new file mode 100644 index 0000000000..9b6c6d7382 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html @@ -0,0 +1,139 @@ +--- +title: encodeURI() +slug: Web/JavaScript/Reference/Global_Objects/encodeURI +tags: + - JavaScript + - NeedsUpdate + - Reference + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Метод encodeURI () кодирует универсальный идентификатор ресурса (URI), замещая некоторые символы на одну, две, три или четыре управляющие последовательности, представляющие UTF-8 кодировку символа (четыре управляющие последовательности будут использованы только для символов, состоящих из двух «суррогатных» символов).

+ + + +

{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}

+ + + + + +

Синтаксис

+ +
encodeURI(URI)
+ +

Параметры

+ +
+
URI
+
Полный {{Glossary("URI")}}.
+
+

Возвращаемое значение

+ +

Новая строка, представляющая собой строку-параметр, закодированную в виде универсального идентификатора ресурса (URI).

+
+
+ +

Описание

+ +

Предполагается, что URI является полным URI, поэтому метод не кодирует зарезервированные символы, имеющие особое значение в URI.

+ +

encodeURI заменяет все символы, кроме следующих с соответствующими UTF-8 управляющими последовательностями:

+ + + + + + + + + + + + + + + + + + + + +
ТипВключения
Зарезервированные символы; , / ? : @ & = + $
Неэкранируемые символылатинские буквы, десятичные цифры, - _ . ! ~ * ' ( )
Score#
+ +

Заметим, что encodeURI сам по себе не может сформировать правильные HTTP GET и POST запросы, такие как XMLHTTPRequests, потому, что "&", "+", и "=" не закодированы, которые воспринимаются как специальные символы в GET и POST запросах. {{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}, однако, кодирует эти символы

+ +

Замечание: {{jsxref("Global_Objects/URIError", "URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:

+ +
// низко-высокая пара - нормально
+console.log(encodeURIComponent('\uD800\uDFFF'));
+
+// один высокий суррогат бросит "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uD800'));
+
+// один низкий суррогат бросит "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uDFFF'));
+ +

Также заметим, что следуя наиболее свежей RFC3986 для URL, которая делает квадратные скобки защищенными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:

+ +
function fixedEncodeURI (str) {
+    return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
+}
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 3rd Edition.StandardInitial definition.
{{SpecName('ES5.1', '#sec-15.1.3.3', 'encodeURI')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-encodeuri-uri', 'encodeURI')}}{{Spec2('ES6')}}
+ +

Поддержка браузерами

+ + + + + +

{{Compat("javascript.builtins.encodeURI")}}

+ + + + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html new file mode 100644 index 0000000000..73420f234c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html @@ -0,0 +1,157 @@ +--- +title: encodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

encodeURIComponent() - метод, кодирующий компонент универсального идентификатора ресурса (URI) заменой каждой определенной последовательности символов одной, двумя, тремя или четырьмя последовательностями символов, представленных в кодировке UTF-8  (будет только 4 управляющих последовательности для символов, состоящих из 2 "суррогатных" символов).

+ +

Синтаксис

+ +
encodeURIComponent(str);
+ +

Параметры

+ +
+
str
+
Строка. Компонент URI.
+
+ +

Описание

+ +

encodeURIComponent изменяет все символы, за исключением следующих: латинские буквы, десятичные цифры, - _ . ! ~ * ' ( )

+ +

Замечание: {{jsxref("URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:

+ +
// низко-высокая пара - нормально
+console.log(encodeURIComponent('\uD800\uDFFF'));
+
+// один высокий суррогат бросит "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uD800'));
+
+// один низкий суррогат бросит "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uDFFF'));
+
+ +

Чтоб избежать неожиданных запросов к серверу, вам следует вызывать encodeURIComponent для любых вводимых пользователем параметров, используемых как часть URI. Например, он мог написать "Thyme &time=again" для переменной comment. Неиспользование encodeURIComponent для неё даст comment=Thyme%20&time=again. Заметьте, что амперсанд и знак равно выделяют новую пару ключ-значение. Так что вместо комментария "Thyme &time=again", вы получите два POST параметра, один -  "Thyme ", а другой (time) равный "again".

+ +

Для application/x-www-form-urlencoded пробелы должны быть заменены на "+", поэтому вам может понадобиться encodeURIComponent с дополнительной заменой "%20" на "+".

+ +

Чтобы строго соблюдать RFC 3986 (который резервирует !, ', (, ), и *), даже не смотря на то, что символы не используют сформированных URI разделителей, можно безопасно использовать следущее:

+ +
function fixedEncodeURIComponent (str) {
+  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+    return '%' + c.charCodeAt(0).toString(16);
+  });
+}
+
+ +

Примеры

+ +

Пример представляет специальное кодирование, требуемое для заголовков сервера в UTF-8: Content-Disposition и Link (к примеру, имена файлов в UTF-8):

+ +
var fileName = 'my file(2).txt';
+var header = "Content-Disposition: attachment; filename*=UTF-8''"
+             + encodeRFC5987ValueChars(fileName);
+
+console.log(header);
+// логирует "Content-Disposition: attachment; filename*=UTF-8''my%20file%282%29.txt"
+
+
+function encodeRFC5987ValueChars (str) {
+    return encodeURIComponent(str).
+        // Замечание: хотя RFC3986 резервирует "!", RFC5987 это не делает, так что нам не нужно избегать этого
+        replace(/['()]/g, escape). // i.e., %27 %28 %29
+        replace(/\*/g, '%2A').
+            // Следующее не требуется для кодирования процентов для RFC5987, так что мы можем разрешить немного больше читаемости через провод: |`^
+            replace(/%(?:7C|60|5E)/g, unescape);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition.
{{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{Spec2('ES6')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html new file mode 100644 index 0000000000..8138b26a29 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html @@ -0,0 +1,78 @@ +--- +title: Error.prototype.columnNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+

Сводка

+

Свойство columnNumber содержит номер колонки в строке файла, в котором возникла эта ошибка.

+

Примеры

+

Пример: использование columnNumber

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+console.log(e.columnNumber) // 0
+
+

Спецификации

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/filename/index.html b/files/ru/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..c2f2affeb0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,80 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Reference/Global_Objects/Error/fileName +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+

Сводка

+

Свойство fileName содержит путь к файлу, в котором возникла эта ошибка.

+

Описание

+

Это нестандартное свойство содержит путь к файлу, в котором возникла эта ошибка. Если доступ к нему получен в контексте отладчика, например, Инструментов разработчика Firefox, вернётся строка «debugger eval code».

+

Примеры

+

Пример: использование fileName

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+// e.fileName может выглядеть так "file:///C:/example.html"
+
+

Спецификации

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/index.html b/files/ru/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..95fd8918a1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,208 @@ +--- +title: Error +slug: Web/JavaScript/Reference/Global_Objects/Error +tags: + - Error + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

Конструктор Error создаёт объект ошибки. Экземпляры объекта Error выбрасываются при возникновении ошибок во время выполнения. Объект Error также может использоваться в качестве базового для пользовательских исключений. Смотрите ниже стандартные встроенные типы ошибок.

+ +

Синтаксис

+ +
new Error([message[, fileName[, lineNumber]]])
+ +

Параметры

+ +
+
message {{optional_inline()}}
+
Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}} {{optional_inline()}}
+
Значение свойства fileName созданного объекта Error. Значением по умолчанию является имя файла, содержащего код, вызвавший конструктор Error().
+
lineNumber {{non-standard_inline}} {{optional_inline()}}
+
Значение свойства lineNumber созданного объекта Error. Значением по умолчанию является номер строки, содержащей вызов конструктора Error().
+
+ +

Описание

+ +

Во время выполения кода ошибки приводят к созданию и выбрасыванию новых объектов Error.

+ +

Данная страница документирует использование объекта Error как самого по себе, так и при использовании в качестве функции-конструктора. Список свойств и методов, унаследованых экземплярами объекта Error, смотрите в разделе {{jsxref("Error.prototype")}}.

+ +

 

+ +

Использование как функции

+ +

Когда Error используется как функции-- без {{jsxref("Operators/new", "new")}}, она возвращает Error объект. Следовательно простой вызов Error произведет тот же результат, что и конструктор Error объявленный через new.

+ +
// this:
+const x = Error('I was created using a function call!');
+​​​​// Такая же функциональность:
+const y = new Error('I was constructed via the "new" keyword!');
+ +

 

+ +

Типы ошибок

+ +

Кроме общего конструктора Error, в JavaScript существует ещё семь других основных конструкторов ошибок. По обработке исключений смотрите раздел Выражения обработки исключений.

+ +
+
{{jsxref("EvalError")}}
+
Создаёт экземпляр, представляющий ошибку, возникающую в глобальной функции {{jsxref("Global_Objects/eval", "eval()")}}.
+
{{jsxref("InternalError")}} {{non-standard_inline}}
+
Создаёт экземпляр, представляющий ошибку, возникающую при выбрасывании внутренней ошибки в движке JavaScript. К примеру, ошибки «слишком глубокая рекурсия» («too much recursion»).
+
{{jsxref("RangeError")}}
+
Создаёт экземпляр, представляющий ошибку, возникающую при выходе числовой переменной или параметра за пределы допустимого диапазона.
+
{{jsxref("ReferenceError")}}
+
Создаёт экземпляр, представляющий ошибку, возникающую при разыменовывании недопустимой ссылки.
+
{{jsxref("SyntaxError")}}
+
Создаёт экземпляр, представляющий синтаксическую ошибку, возникающую при разборе исходного кода в функции {{jsxref("Global_Objects/eval", "eval()")}}.
+
{{jsxref("TypeError")}}
+
Создаёт экземпляр, представляющий ошибку, возникающую при недопустимом типе для переменной или параметра.
+
{{jsxref("URIError")}}
+
Создаёт экземпляр, представляющий ошибку, возникающую при передаче в функции {{jsxref("Global_Objects/encodeURI", "encodeURI()")}} или {{jsxref("Global_Objects/decodeURI", "decodeURI()")}} недопустимых параметров.
+
+ +

Свойства

+ +
+
{{jsxref("Error.prototype")}}
+
Позволяет добавлять свойства в экземпляры объекта Error.
+
+ +

Методы

+ +

Глобальный объект Error не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта Error

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Description')}}
+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: выбрасывание обычной ошибки

+ +

Обычно, вы создаёте объект Error с намерением возбудить ошибку с помощью ключевого слова {{jsxref("Statements/throw", "throw")}}. Вы можете обработать ошибку с помощью конструкции {{jsxref("Statements/try...catch", "try...catch")}}:

+ +
try {
+  throw new Error('Уупс!');
+} catch (e) {
+  console.log(e.name + ': ' + e.message);
+}
+
+ +

Пример: обработка ошибки конкретного типа

+ +

Возможно, это следует удалить Вы можете обрабатывать только какой-то определённый вид ошибок, проверяя тип ошибки в свойстве {{jsxref("Object.prototype.constructor", "constructor")}} или, если вы пишете для современных движков JavaScript, с помощью ключевого слова {{jsxref("Operators/instanceof", "instanceof")}}:

+ +
try {
+  foo.bar();
+} catch (e) {
+  if (e instanceof EvalError) {
+    console.log(e.name + ': ' + e.message);
+  } else if (e instanceof RangeError) {
+    console.log(e.name + ': ' + e.message);
+  }
+  // ... и т.д.
+}
+
+ +

Пример: пользовательские типы ошибок

+ +

Вы можете захотеть определить свои собственные типы ошибок, унаследованные от Error, что бы иметь возможноть писать throw new MyError() и использовать instanceof MyError для проверки вида ошибки в обработчике исключений. Ниже продемонстрирован общий подход к выполнению этой задачи.

+ +
+

Предупреждение: обратите внимание, что выбрасывание MyError будет сообщать неправильные номер строки lineNumber и имя файла fileName как минимум, в Firefox.

+
+ +

Также смотрите обсуждение «Какой способ расширения Error в JavaScript более предпочтителен?» на Stackoverflow.

+ +
// Создаём новый объект, затем через прототип делаем его наследником конструктора Error.
+function MyError(message) {
+  this.name = 'MyError';
+  this.message = message || 'Сообщение по умолчанию';
+  this.stack = (new Error()).stack;
+}
+MyError.prototype = Object.create(Error.prototype);
+MyError.prototype.constructor = MyError;
+
+try {
+  throw new MyError();
+} catch (e) {
+  console.log(e.name);     // 'MyError'
+  console.log(e.message);  // 'Сообщение по умолчанию'
+}
+
+try {
+  throw new MyError('пользовательское сообщение');
+} catch (e) {
+  console.log(e.name);     // 'MyError'
+  console.log(e.message);  // 'пользовательское сообщение'
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11', 'Error')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error-objects', 'Error')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Error")}}

+ +

 

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..c9f2d5c33e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,92 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Свойство lineNumber содержит номер строки в файле, в котором возникла эта ошибка.

+ +

Примеры

+ +

Пример: использование lineNumber

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+console.log(e.lineNumber) // 2
+
+ +

Пример: альтернативный пример с использованием события error

+
window.addEventListener('error', function(e) {
+  console.log(e.lineno); // 5
+});
+var e = new Error('Невозможно разобрать входные данные');
+throw e;
+
+

Это стандарт и он поддерживается в Chrome, Firefox и, вероятно, много где ещё.

+ +

Спецификации

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержкаНа объекте ошибки в обработчике события error{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/message/index.html b/files/ru/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..655ce0924b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,107 @@ +--- +title: Error.prototype.message +slug: Web/JavaScript/Reference/Global_Objects/Error/message +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/message +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство message представляет человеко-читаемое описание ошибки.

+ +

Описание

+

Это свойство содержит краткое описание ошибки, если оно доступно или было установлено. SpiderMonkey широко использует свойство message для исключений. Свойство message в сочетании со свойством {{jsxref("Error.prototype.name", "name")}} используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.

+

По умолчанию, свойство message является пустой строкой, но это поведение может быть переопределено для экземпляра путём указания сообщения первым аргументом в конструкторе объекта {{jsxref("Global_Objects/Error", "Error")}}.

+ +

Примеры

+ +

Пример: выбрасывание собственной ошибки

+
var e = new Error('Невозможно разобрать входные данные');
+// e.message равно 'Невозможно разобрать входные данные'
+throw e;
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/name/index.html b/files/ru/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..856ded3954 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,108 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Reference/Global_Objects/Error/name +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство name представляет имя типа ошибки. Начальное значение равно строке "Error".

+ +

Описание

+

По умолчанию, экземпляры {{jsxref("Error")}} имеют имя "Error". Свойство name, вместе со свойством {{jsxref("Error.prototype.message", "message")}}, используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.

+ +

Примеры

+ +

Пример: выбрасывание собственной ошибки

+
var e = new Error('Неверные входные данные'); // e.name равно 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() вернёт 'ParseError: Неверные входные данные'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.4.2', 'Error.prototype.name')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.name', 'Error.prototype.name')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/prototype/index.html b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html new file mode 100644 index 0000000000..a31d760836 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html @@ -0,0 +1,154 @@ +--- +title: Error.prototype +slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +tags: + - Error + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+ +

Свойство Error.prototype представляет прототип конструктора объекта {{jsxref("Global_Objects/Error", "Error")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Все экземпляры {{jsxref("Global_Objects/Error", "Error")}} и экземпляры {{jsxref("Global_Objects/Error", "неуниверсальных ошибок", "#Error_types", 1)}} наследуются от Error.prototype. Как и со всеми функциями-конструкторами, вы можете использовать прототип конструктора для добавления свойств и методов ко всем экземплярам, создаваемым этим конструктором.

+ +

Свойства

+ +

Стандартные свойства

+ +
+
Error.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра ошибки.
+
{{jsxref("Error.prototype.message")}}
+
Сообщение ошибки.
+
{{jsxref("Error.prototype.name")}}
+
Название ошибки.
+
+ +

Расширения вендоров

+ +
{{non-standard_header}}
+ +

Microsoft

+ +
+
{{jsxref("Error.prototype.description")}}
+
Описание ошибки. Аналогично свойству {{jsxref("Error.prototype.message", "message")}}.
+
{{jsxref("Error.prototype.number")}}
+
Номер ошибки.
+
+ +

Mozilla

+ +
+
{{jsxref("Error.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка.
+
{{jsxref("Error.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка.
+
{{jsxref("Error.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка.
+
{{jsxref("Error.prototype.stack")}}
+
Стек вызовов.
+
+ +

Методы

+ +
+
{{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает строку, содержащую исходный код указанного объекта {{jsxref("Global_Objects/Error", "Error")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Error.prototype.toString()")}}
+
Возвращает строку, представляющую указанный объект. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11.3.1', 'Error')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype', 'Error')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/error/stack/index.html b/files/ru/web/javascript/reference/global_objects/error/stack/index.html new file mode 100644 index 0000000000..de0f95e041 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/stack/index.html @@ -0,0 +1,147 @@ +--- +title: Error.prototype.stack +slug: Web/JavaScript/Reference/Global_Objects/Error/Stack +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Нестандартное свойство stack объекта {{jsxref("Error")}} возвращает трассировку стека вызываемых функций в порядке их выполнения, вместе с номерами строк, именами файлов и аргументами. Строка со стеком заполняется от самых недавних вызовов до вызова из глобальной области видимости.

+ +

Описание

+

Каждый шаг находится на отдельной строке; первая часть строки содержит имя функции (если это не вызов из глобальной области видимости), затем знак собаки (@), местоположение файла (кроме случая, когда функция является конструктором ошибки, которую она выбрасывает), двоеточие и, если есть местоположение файла, номер строки. Обратите внимание, что объект {{jsxref("Error")}} также обладает свойствами fileName, lineNumber и columnNumber, позволяющими извлечь имя файла, номер строки и столбца из выброшенной ошибки (но только самой ошибки, а не всего стека вызовов).

+

Обратите внимание, что такой формат используется в Firefox. Нет никакого «стандартного формата». Однако, Safari 6+ и Opera 12- используют очень похожий формат. С другой стороны, браузеры, использующие движок JavaScript V8 (например, Chrome, Opera 15+, Браузер Android) и IE10+, используют другой формат (смотрите эту статью по error.stack в MSDN).

+

Значения аргументов в стеке: до Firefox 14 ({{bug("744842")}}) за именем функции и прямо перед знаком собаки (@) в круглых скобках следовали значения аргументов, преобразованные в строки. Хотя объекты (или массивы и прочее) преобразовывались в форму "[object Object]", и, таким образом, невозможно было узнать их содержимое, скалярные значения могли быть извлечены (это всё ещё можно использовать в Firefox 14 — однако проще для получения аргументов использовать arguments.callee.caller.arguments, а для получения имени функции — arguments.callee.caller.name). Значение "undefined" показывалось как "(void 0)". Обратите внимание, что если строковые аргументы содержали значения, включающие символы "@", "(", ")" (или если они включали имена файлов), вам не так то просто было разбить строку на составные части. Таким образом, в Firefox 14 и более поздних версиях это перестало быть проблемой.

+ +

Примеры

+

Следующая разметка HTML демонстрирует использование свойства stack.

+
<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<title>Пример трассировки стека</title>
+<body>
+<script>
+function trace() {
+  try {
+    throw new Error('Моя ошибка');
+  }
+  catch(e) {
+    alert(e.stack);
+  }
+}
+function b() {
+  trace();
+}
+function a() {
+  b(3, 4, '\n\n', undefined, {});
+}
+a('первый вызов, первый аргумент');
+</script>
+
+

Предполагается, что разметка выше сохранена как C:\example.html в файловой системе Windows. Она выводит следующий текст в диалоговом окне:

+

Начиная с Firefox 30 и более поздних версий, вывод содержит номер колонки ({{bug("762556")}}):

+
trace@file:///C:/example.html:9:17
+b@file:///C:/example.html:16:13
+a@file:///C:/example.html:19:13
+@file:///C:/example.html:21:9
+

с Firefox 14 по Firefox 29:

+
trace@file:///C:/example.html:9
+b@file:///C:/example.html:16
+a@file:///C:/example.html:19
+@file:///C:/example.html:21
+

Firefox 13 и более ранние версии выводят следующий текст:

+
Error("Моя ошибка")@:0
+trace()@file:///C:/example.html:9
+b(3,4,"\n\n",(void 0),[object Object])@file:///C:/example.html:16
+a("первый вызов, первый аргумент")@file:///C:/example.html:19
+@file:///C:/example.html:21
+ +

Стек кода в функции eval()

+

Начиная с Firefox 30 {{geckoRelease("30")}}, стек вызовов кода в вызовах Function() и eval() даёт более подробную информацию о номере строки и колонки внутри этих вызовов. Вызовы Function обозначаются "> Function", а вызовы eval() обозначаются "> eval". Смотрите {{bug("332176")}}.

+
try {
+  new Function('throw new Error()')();
+} catch (e) {
+  console.log(e.stack);
+}
+
+// anonymous@file:///C:/example.html line 7 > Function:1:1
+// @file:///C:/example.html:7:6
+
+
+try {
+  eval("eval('FAIL')");
+} catch (x) {
+  console.log(x.stack);
+}
+
+// @file:///C:/example.html line 7 > eval line 1 > eval:1:1
+// @file:///C:/example.html line 7 > eval:1:1
+// @file:///C:/example.html:7:6
+
+

Также для именования исходного кода в функции eval() вы можете использовать директиву //# sourceURL. Смотрите раздел Отладка исходных кодов в функции eval() в документации по отладчику, а также эту запись в блоге (на английском).

+ +

Спецификации

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("10")}}{{CompatVersionUnknown}}{{CompatSafari("6")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержкаAndroid 4 (возможно, Android 3, но не Android 2){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("6")}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/tosource/index.html b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..7cc274da14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,88 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - Error + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Метод toSource() возвращает код, вычисление которого приведёт к этой же ошибке.

+ +

Синтаксис

+
e.toSource()
+ +

Описание

+

Вызов метода toSource на экземпляре класса {{jsxref("Error")}} (включая родные ошибки) вернёт строку, содержащую исходный код ошибки. Эта строка может быть выполнена для создания (приблизительно) эквивалентного объекта. Естественно, строка, содержащая исходный код, следует структуре конструктора объекта {{jsxref("Error")}}. Например:

+
(new name(message, fileName, lineNumber))
+
+

здесь атрибуты относятся к соответствующим свойствам экземпляра ошибки.

+
+

Обратите внимание: имейте в виду, что свойства, используемые методом toSource при создании строки, изменяемы и могут неточно отражать функцию, с помощью которой создан экземпляр ошибки, или имя файла, или номер строки, где возникла ошибка.

+
+ +

Спецификации

+

Не является чаcтью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/tostring/index.html b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..22d4157c81 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,136 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Error/toString +tags: + - Error + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+

Сводка

+

Метод toString() возвращает строку, представляющую указанный объект {{jsxref("Error")}}.

+

Синтаксис

+
e.toString()
+

Описание

+

Объект {{jsxref("Error")}} переопределяет метод {{jsxref("Object.prototype.toString()")}}, унаследованный всеми объектами. Его семантика следующая (предполагается, что объекты {{jsxref("Object")}} и {{jsxref("String")}} имеют свои изначальные значения):

+
Error.prototype.toString = function() {
+  'use strict';
+
+  var obj = Object(this);
+  if (obj !== this) {
+    throw new TypeError();
+  }
+
+  var name = this.name;
+  name = (name === undefined) ? 'Error' : String(name);
+
+  var msg = this.message;
+  msg = (msg === undefined) ? '' : String(msg);
+
+  if (name === '') {
+    return msg;
+  }
+  if (msg === '') {
+    return name;
+  }
+
+  return name + ': ' + msg;
+};
+
+

Примеры

+
var e = new Error('непоправимая ошибка');
+print(e.toString()); // 'Error: непоправимая ошибка'
+
+e.name = undefined;
+print(e.toString()); // 'Error: непоправимая ошибка'
+
+e.name = '';
+print(e.toString()); // 'непоправимая ошибка'
+
+e.message = undefined;
+print(e.toString()); // 'Error'
+
+e.name = 'привет';
+print(e.toString()); // 'привет'
+
+

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11.4.4', 'Error.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}{{Spec2('ES6')}} 
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/escape/index.html b/files/ru/web/javascript/reference/global_objects/escape/index.html new file mode 100644 index 0000000000..faaef7049c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/escape/index.html @@ -0,0 +1,120 @@ +--- +title: escape() +slug: Web/JavaScript/Reference/Global_Objects/escape +translation_of: Web/JavaScript/Reference/Global_Objects/escape +--- +
{{jsSidebar("Objects")}} {{deprecated_header}}
+ +

Устаревший метод escape() возвращает новую строку, в которой определенные символы заменены шестнадцаричной управляющей последовательностью.  Используйте методы {{jsxref("encodeURI")}} или {{jsxref("encodeURIComponent")}} вместо него.

+ +

Синтаксис

+ +
escape(str)
+ +

Параметры

+ +
+
str
+
Строка для кодирования.
+
+ +

Описание

+ +

Функция escape() является свойством глобального объекта, т.е. относится к глобальным функциям. Эта функция кодирует специальные символы, за исключением: @*_+-./

+ +

The hexadecimal form for characters, whose code unit value is 0xFF or less, is a two-digit escape sequence: %xx. For characters with a greater code unit, the four-digit format %uxxxx is used.

+ +

Примеры

+ +
escape("abc123");     // "abc123"
+escape("текст");      // "%u0442%u0435%u043A%u0441%u0442"
+escape("ć");          // "%u0107"
+
+/* специальные символы */
+escape("@*_+-./");    // "@*_+-./"
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES1')}}{{Spec2('ES1')}}Начальное определение.
{{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-escape-string', 'escape')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/eval/index.html b/files/ru/web/javascript/reference/global_objects/eval/index.html new file mode 100644 index 0000000000..ee90713bde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/eval/index.html @@ -0,0 +1,213 @@ +--- +title: eval() +slug: Web/JavaScript/Reference/Global_Objects/eval +tags: + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/eval +--- +
{{jsSidebar("Objects")}}
+ +
+

Warning: Выполнение кода JavaScript с текстовой строки - это невероятный риск для безопасности. Злоумышленнику слишком легко запустить какой угодно код, когда вы используете eval(). Смотрите  Никогда не изпользуте eval()!, ниже.

+
+ +

Метод eval() выполняет JavaScript код, представленный строкой.

+ +

{{EmbedInteractiveExample("pages/js/globalprops-eval.html")}}

+ + + +

Синтаксис

+ +
eval(string)
+ +

Параметры

+ +
+
string
+
Строка, представленная JavaScript выражением, оператором или последовательностью операторов. Выражение может содержать переменные и свойства существующих объектов.
+
+

Возвращаемое значение

+
+
Возвращает значение выполнения кода, переданного в функцию в виде строки. Если код не возвращает ничего - будет возвращено значение {{jsxref("undefined")}}.
+
+ +

Описание

+ +

eval() - функция глобального объекта.

+ +

Аргумент функции eval() - строка. eval() исполняет содержащееся в строке выражение, один или несколько операторов  JavaScript. Не стоит вызывать eval() для определения значения арифметического выражения; JavaScript вычисляет их автоматически.

+ +

eval() можно использовать для вычисления значения арифметического выражения, записанного в строковом виде, на более поздней стадии исполнения. Предположим, существует переменная x. Можно отложить вычисление выражения, в котором содержится х, если присвоить переменной это выражение в виде строки (допустим, "3 * x + 2"), а затем вызвать eval() в более поздней точке кода.

+ +

Если аргумент, переданный eval(), не является строкой, eval() возвращает его неизменным. В следующем примере определен конструктор String, и eval() не вычисляет значение выражения, записанного в строковом виде, а возвращает объект типа String.

+ +
eval(new String("2 + 2")); // возвращает объект типа String, содержащий "2 + 2"
+eval("2 + 2");             // возвращает 4
+
+ +

Это ограничение легко обойти при помощи toString().

+ +
var expression = new String("2 + 2");
+eval(expression.toString());
+
+ +

Если вы используете eval косвенно, вызовом его через ссылку, а не просто eval, в ECMAScript 5 это работает в глобальной области видимости, а не в локальной; это значит, что eval будет вызван в глобальной области видимости, а код будет выполнен с отсутвием доступа к локальным переменным в пределах области видимости, где он был вызван.

+ +
function test() {
+  var x = 2, y = 4;
+  console.log(eval("x + y"));  // Прямой вызов, использует локальную области видимости, результат - 6
+  var geval = eval;
+  console.log(geval("x + y")); // Непрямой вызов, использует глобальную область видимости, бросит ReferenceError, т.к. `x` - не определен
+}
+
+ +

Не используйте eval без необходимости!

+ +

eval() - опасная функция, которая выполняет код, проходящий со всеми привилегиями вызывателя. Если вы запускаете eval() со строкой, на которую могут влиять злоумышленники, то вы можете запустить вредоносный код на устройство пользователя с правами вашей веб-страницы/расширения. Наиболее важно, код третьей стороны может видеть область видимости, в которой был вызван eval(), что может может привести к атакам, похожим на {{jsxref("Global_Objects/Function", "Function")}}.

+ +

Также eval(),как правило, медленнее альтернатив, так как вызывает интерпретатор JS, тогда как многие другие конструкции оптимизированы современными JS движками.

+ +

Есть безопасные (и быстрые!) альтернативы eval() для общих случаев использования.

+ +

Доступ к свойствам

+ +

Вам не следует использовать eval(), чтобы конвертировать имена свойств в свойства. Рассматривая следующий пример, где свойство объекта используемое для доступа неизвестно до выполнения кода. Это можно сделать с  eval:

+ +
var obj = { a: 20, b: 30 };
+var propname = getPropName();  // возвращает "a" или "b"
+
+eval( "var result = obj." + propname );
+
+ +

Однако, eval() здесь не нужен. По факту, использование здесь его удивляет. Вместо него используйте доступ к свойствам, который быстрее и безопаснее:

+ +
var obj = { a: 20, b: 30 };
+var propname = getPropName();  // возвращает "a" или "b"
+var result = obj[ propname ];  //  obj[ "a" ] то же, что и obj.a
+
+ +

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

+ +

У JavaScript функции первого класса, что значит, что вы можете передавать функции как аргументы, хранить их в переменных или свойвах объектах и так далее. Многие DOM API созданы с учетом этого, так что вы можете (и вам следует) писать:

+ +
// вместо setTimeout(" ... ", 1000) :
+setTimeout(function() { ... }, 1000);
+
+// вместо elt.setAttribute("onclick", "...") использовать:
+elt.addEventListener("click", function() { ... } , false); 
+ +

Замыкания также полезны как способ создания функций с параметрами без конкатенации строк.

+ +

Разбор JSON (конвертирование строк в JavaScript объекты)

+ +

Если строка, переданная в eval(), содержит данные (к примеру, массив: "[1, 2, 3]"), а не код, вам следует рассмотреть JSON, позволяющий строке использовать подмножество JavaScript синтаксиса для представления данных. Смотрите также: Загрузка JSON и JavaScript в расширениях.

+ +

Заметьте, что синтаксис JSON ограничен в сравнении с JavaScript синтаксисом, многие валидные JavaScript литералы не распарсятся в JSON. К примеру, лишние запятые в конце выражений не разрешены в JSON, а имена свойств (ключи) в объектах должны быть в двойных кавычках. Будьте уверены использовать серилизацию JSON для создания строк, которые потом будут разбираться как JSON.

+ +

Передавайте данные вместо кода

+ +

К примеру, расширение, созданное изменять содержимое веб-страниц, должно иметь правила, определенные в XPath, а не JS коде.

+ +

Выполняйте код с ограниченными правами

+ +

Если выполнять код всё-таки необходимо, желательно это делать с уменьшенными привелегиями. Этот совет подходит, главным образом, к расширениям и XUL приложениям, которые могут использовать Components.utils.evalInSandbox.

+ +

Примеры

+ +

Использование eval

+ +

В следующем коде оба выражения содержат eval(), возвращающий 42. Первое определяется строкой "x + y + 1"; второе - строкой "42".

+ +
var x = 2;
+var y = 39;
+var z = "42";
+eval("x + y + 1"); // возвращает 42
+eval(z);           // вернёт 42
+
+ +

Использование eval для исполнения строки, содержащей операторы JavaScript

+ +

Следующий пример использует eval() для получения значения выражения str. Эта строка состоит из JavaScript выражений, печатающих в консоль, и, если x равен пяти, присвающих z значение 42, или 0 в противном случае. Когда второе выражение будет исполнено, eval() будет считать выражения выполненными, а также это установит значение выражению переменной z и вернет его.

+ +
var x = 5;
+var str = "if (x == 5) {console.log('z is 42'); z = 42;} else z = 0; ";
+
+console.log("z is ", eval(str));
+ +

Последнее выражение выполняется

+ +

eval() вернет значение последнего выполняемого выражения

+ +
var str = "if ( a ) { 1+1; } else { 1+2; }";
+var a = true;
+var b = eval(str);  // вернёт 2
+
+console.log("b is : " + b);
+
+a = false;
+b = eval(str);  // вернёт 3
+
+console.log("b is : " + b);
+ +

eval как строковое определение функции, включающее "(" и ")" как префикс и суффикс

+ +
var fctStr1 = "function a() {}"
+var fctStr2 = "(function a() {})"
+var fct1 = eval(fctStr1)  // вернёт undefined
+var fct2 = eval(fctStr2)  // вернёт функцию
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 1st Edition.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-eval-x', 'eval')}}{{Spec2('ES6')}}
+ +

Поддержка браузерами

+ +
+ + +

{{Compat("javascript.builtins.eval")}}

+
+ +

Gecko-специфичные замечания

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/evalerror/index.html b/files/ru/web/javascript/reference/global_objects/evalerror/index.html new file mode 100644 index 0000000000..016930c2aa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/evalerror/index.html @@ -0,0 +1,146 @@ +--- +title: EvalError +slug: Web/JavaScript/Reference/Global_Objects/EvalError +tags: + - Error + - EvalError + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Объект EvalError представляет ошибку, возникающую в глобальной функции {{jsxref("Global_objects/eval()", "eval()")}}.

+ +

Синтаксис

+
new EvalError([message[, fileName[, lineNumber]]])
+ +

Параметры

+
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+

Исключение EvalError выбрасывается при неправильном использовании глобальной функции {{jsxref("Global_objects/eval()", "eval()")}}.

+ +

Свойства

+
+
{{jsxref("EvalError.prototype")}}
+
Позволяет добавлять свойства в объект EvalError.
+
+ +

Методы

+

Глобальный объект EvalError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта EvalError

+ +

Свойства

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Properties')}}
+ +

Методы

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Methods')}}
+ +

Примеры

+

Объект EvalError в настоящий момент не используется и он никогда не выбрасывается в процессе выполнения.

+ +

Пример: создание экземпляра объекта EvalError

+
try {
+  throw new EvalError('Привет', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof EvalError); // true
+  console.log(e.message);              // "Привет"
+  console.log(e.name);                 // "EvalError"
+  console.log(e.fileName);             // "someFile.js"
+  console.log(e.lineNumber);           // 10
+  console.log(e.columnNumber);         // 0
+  console.log(e.stack);                // "@Scratchpad/2:2:9\n"
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}{{Spec2('ES5.1')}}Не используется в этой спецификаци. Присутствует для обратной совместимости.
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ES6')}}Не используется в этой спецификаци. Присутствует для обратной совместимости.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html new file mode 100644 index 0000000000..d8d02e3709 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html @@ -0,0 +1,121 @@ +--- +title: EvalError.prototype +slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +tags: + - Error + - EvalError + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство EvalError.prototype представляет прототип конструктора объекта {{jsxref("EvalError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("EvalError")}} наследуются от объекта EvalError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
EvalError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "EvalError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("EvalError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "EvalError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "EvalError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "EvalError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "EvalError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "EvalError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("EvalError")}} не содержит собственных методов, экземпляры {{jsxref("EvalError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/float32array/index.html b/files/ru/web/javascript/reference/global_objects/float32array/index.html new file mode 100644 index 0000000000..dec9a2b937 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/float32array/index.html @@ -0,0 +1,202 @@ +--- +title: Float32Array +slug: Web/JavaScript/Reference/Global_Objects/Float32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array +--- +
{{JSRef}}
+ +

Объект Float32Array представляет типизированный массив 32-битных чисел с плавающей запятой (соответствует типу float в языке C)  с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Float32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки).

+ +

Синтаксис

+ +
new Float32Array(); // new in ES2017
+new Float32Array(length);
+new Float32Array(typedArray);
+new Float32Array(object);
+new Float32Array(buffer [, byteOffset [, length]]);
+ +

Для более подробной информации о синтаксисе конструктора и его параметрах смотрите TypedArray.

+ +

Свойства

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}
+
Возвращает число, соответствующее размеру элемента массива в байтах. Для Float32Array это 4.
+
Float32Array.length
+
Статическое свойство "длина" со значением 0. Если хотите получить актуальную длину массива (число элементов) используйте {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Float32Array.name")}}
+
Возвращает строковое представление названия конструктора. В данном случае Float32Array вернёт "Float32Array".
+
{{jsxref("TypedArray.prototype", "Float32Array.prototype")}}
+
Прототип объекта TypedArray.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.from", "Float32Array.from()")}}
+
Создаёт новый Float32Array из массивоподобного или итерируемого объекта. Смотрите также {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Float32Array.of()")}}
+
Создаёт новый Float32Array с заданным числом элементов. Смотрите также {{jsxref("Array.of()")}}.
+
+ +

Float32Array prototype

+ +

  Любые Float32Array объекты наследуются от {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Свойства

+ +
+
Float32Array.prototype.constructor
+
Возвращает функцию, которая создаёт экземпляр прототипа. В данном случае это конструктор Float32Array.
+
{{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}
+
Возвращает {{jsxref("ArrayBuffer")}}, на который ссылается Float32Array. Автоматически изменяется при операциях над массивом и поэтому доступен только для чтения.
+
{{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}
+
Возвращает длину в байтах для Float32Array с начала его {{jsxref("ArrayBuffer")}}. Автоматически изменяется при операциях над массивом и поэтому доступен только для чтения.
+
{{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}
+
Возвращает смещение (в байтах) Float32Array относительно начала {{jsxref("ArrayBuffer")}}. Автоматически изменяется при операциях над массивом и поэтому доступен только для чтения.
+
{{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}
+
Возвращает число элементов, хранящихся в Float32Array. Автоматически изменяется при операциях над массивом и поэтому доступен только для чтения.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}
+
Копирует последовательность элементов в массив. Смотрите также {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}
+
Возвращает новый объект Array Iterator, который содержит пары ключ-значение для каждого элемента в массиве. Смотрите также {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}
+
Проверяет, что все элементы в массиве соответствуют условию. Смотрите также {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}
+
Заполняет весь массив от начального до последнего индекса одинаковыми элементами. Смотрите также {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}
+
Возвращает новый массив со всеми элементами удовлетворяющеми условию. Смотрите также {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}
+
Возвращает найденное значение в массиве, если найден элемент соответствуший условию, в противном случае возвращает undefined. Смотрите также {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}
+
Возвращает индекс найденного значения в массиве, если найден элемент соответствуеший условию, в противном случае возвращает -1. Смотрите также {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}
+
Вызывает функцию для каждого элемента в массиве. Смотрите также {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}} {{experimental_inline}}
+
Проверяет что массив включает себя элемент, возвращает соответственно true или false. Смотрите также {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}
+
Возвращает индекс элемента соответствующего условию (равен значению), в противном случае возвращает -1. Смотрите также {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}
+
Объединяет элементы массива в строку. Смотрите также {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}
+
Возвращает новый Array Iterator, который содержит ключи элементов в массиве. Смотрите также {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}
+
Возвращает последний найденный индекс соответствующий искомому значению, в противном случае возвращает - 1. Смотрите также {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}
+
Возвращает новый массив с результатом применения функции к каждому элементу в этом массиве. Смотрите также {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Нестандаризированная версия {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}
+
Применяет функцию к каждому элементу в массиве (слева-направо) и накапливает результат в переменной. Смотрите также {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}
+
Применяет функцию к каждому элементу в массиве (справа-налево) и накапливает результат в переменной. Смотрите также {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}
+
Переставляет элементы массива в обратном порядке - первый становится последним и так далее. Смотрите также {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}
+
Сохраняет значения в массиве.
+
{{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}
+
Выделяет часть массива и возвращает новый с этими значениями. Смотрите также {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}
+
Возвращает true если хотя бы один элемент удовлетворяет условию. Смотрите также {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}
+
Сортирует элементы массива по порядку и возвращает этот массив. Смотрите также {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}
+
Возваращает новый Float32Array с заданного начального по конечный индекс.
+
{{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}
+
Возвращает новый объект Array Iterator котрый содержит значения всех элементов в массиве. Смотрите также {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}
+
Возвращает локализированную строку представляющую массив и его элементы. Смотрите также {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}
+
Возвращает строку представляющую массив и его элементы. Смотрите также {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}
+
Возвращает новый объект Array Iterator который содержит значения всех элементов в массиве.
+
+ +

Примеры

+ +

Разные способы создания Float32Array:

+ +
// Используя указание длины
+var float32 = new Float32Array(2);
+float32[0] = 42;
+console.log(float32[0]); // 42
+console.log(float32.length); // 2
+console.log(float32.BYTES_PER_ELEMENT); // 4
+
+// Из массива
+var arr = new Float32Array([21,31]);
+console.log(arr[1]); // 31
+
+// Из другого TypedArray
+var x = new Float32Array([21, 31]);
+var y = new Float32Array(x);
+console.log(y[0]); // 21
+
+// Из другого ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Float32Array(buffer, 0, 4);
+
+// Из итератора 
+var iterable = function*(){ yield* [1,2,3]; }();
+var float32 = new Float32Array(iterable);
+// Float32Array[1, 2, 3]
+ + + +

Спецификация

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Заменены в ECMAScript 6.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Первоначальное появление в стандарте ECMA. Показывает что new обязательно.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Float32Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Браузерная совместимость

+ + + +

{{Compat("javascript.builtins.Float32Array")}}

+ + + +

Заметки по совместимости

+ +

Начиная с ECMAScript 2015 (ES6), Float32Array конструктор обязательно должен вызываться с ключевым словом {{jsxref("Operators/new", "new")}}. Вызов Float32Array конструктора как функцию приведет к исключению {{jsxref("TypeError")}}.

+ +
var dv = Float32Array([1, 2, 3]);
+// TypeError: calling a builtin Float32Array constructor
+// without new is forbidden
+ +
var dv = new Float32Array([1, 2, 3]);
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/float64array/index.html b/files/ru/web/javascript/reference/global_objects/float64array/index.html new file mode 100644 index 0000000000..732a6a0667 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/float64array/index.html @@ -0,0 +1,199 @@ +--- +title: Float64Array +slug: Web/JavaScript/Reference/Global_Objects/Float64Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array +--- +
{{JSRef}}
+ +

Объект Float64Array представляет типизированный массив 64-битных чисел с плавающей запятой (соответствует типу double в языке C)  с платформо-зависимым порядком байт.Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Float64Array , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки).

+ +

Syntax

+ +
new Float64Array(); // new in ES2017
+new Float64Array(length);
+new Float64Array(typedArray);
+new Float64Array(object);
+new Float64Array(buffer [, byteOffset [, length]]);
+ +

For more information about the constructor syntax and the parameters, see TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size. 8 in the case of an Float64Array.
+
Float64Array.length
+
Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Float64Array.name")}}
+
Returns the string value of the constructor name. In the case of the Float64Array type: "Float64Array".
+
{{jsxref("TypedArray.prototype", "Float64Array.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Float64Array.from()")}}
+
Creates a new Float64Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Float64Array.of()")}}
+
Creates a new Float64Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Float64Array prototype

+ +

All Float64Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Float64Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Float64Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Float64Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Float64Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Float64Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Float64Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Float64Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Float64Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Float64Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Float64Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Float64Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Float64Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Float64Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Float64Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}}
+
Returns a new Float64Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Float64Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create a Float64Array:

+ +
// From a length
+var float64 = new Float64Array(2);
+float64[0] = 42;
+console.log(float64[0]); // 42
+console.log(float64.length); // 2
+console.log(float64.BYTES_PER_ELEMENT); // 8
+
+// From an array
+var arr = new Float64Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Float64Array([21, 31]);
+var y = new Float64Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(32);
+var z = new Float64Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var float64 = new Float64Array(iterable);
+// Float64Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Float64Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Float64Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Float64Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Float64Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Float64Array([1, 2, 3]);
+// TypeError: calling a builtin Float64Array constructor
+// without new is forbidden
+ +
var dv = new Float64Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/apply/index.html b/files/ru/web/javascript/reference/global_objects/function/apply/index.html new file mode 100644 index 0000000000..538c25a654 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/apply/index.html @@ -0,0 +1,252 @@ +--- +title: Function.prototype.apply() +slug: Web/JavaScript/Reference/Global_Objects/Function/apply +tags: + - Function + - JavaScript + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Общие сведения

+ +

Метод apply() вызывает функцию с указанным значением this и аргументами, предоставленными в виде массива (либо массивоподобного объекта).

+ +
+

Примечание: хотя синтаксис этой функции практически полностью идентичен функции {{jsxref("Function.prototype.call()", "call()")}}, фундаментальное различие между ними заключается в том, что функция call() принимает список аргументов, в то время как функция apply() принимает единичный массив аргументов.

+
+ +

Синтаксис

+ +
fun.apply(thisArg, [argsArray])
+ +

Параметры

+ +
+
thisArg
+
Опциональный параметр. Значение this, предоставляемое для вызова функции fun. Обратите внимание, что this может не быть реальным значением, видимым этим методом: если метод является функцией в {{jsxref("Functions_and_function_scope/Strict_mode", "нестрогом режиме", "", 1)}}, значения {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}} будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.
+
argsArray
+
Опциональный параметр. Массивоподобный объект, определяющий аргументы, с которыми функция fun должна быть вызвана, либо {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, если в функцию не надо передавать аргументы. Начиная с ECMAScript 5 эти аргументы могут быть обобщёнными массивоподобными объектами, а не только массивом. Смотрите ниже информацию по {{anch("Browser_compatibility", "совместимости с браузерами")}}.
+
+ +

Описание

+ +

Вы можете присваивать различные объекты this при вызове существующей функции. this ссылается на текущий объект, вызывающий объект. С помощью apply() вы можете написать метод один раз, а затем наследовать его в других объектах без необходимости переписывать метод для каждого нового объекта.

+ +

Метод apply очень похож на метод {{jsxref("Function.prototype.call()", "call()")}}, за исключением поддерживаемого типа аргументов. Вы можете использовать массив аргументов вместо набора именованных параметров. Вместе с apply вы можете использовать литерал массива, например, fun.apply(this, ['есть', 'бананы']), либо объект {{jsxref("Global_Objects/Array", "Array")}}, например, fun.apply(this, new Array('есть', 'бананы')).

+ +

Также вы можете использовать в качестве параметра argsArray псевдомассив {{jsxref("Functions_and_function_scope/arguments", "arguments")}}. arguments является локальной переменной функции. Он может использоваться для всех неопределённых аргументов вызываемого объекта. Таким образом, вы не обязаны знать, сколько и какие аргументы требует вызываемый объект при использовании метода apply(). Вы можете использовать псевдомассив arguments для передачи всех аргументов в вызываемый объект. Вызываемый объект самостоятельно разберётся с обработкой аргументов.

+ +

Начиная с 5-го издания ECMAScript, вы также можете использовать любой вид массивоподобного объекта, что на практике означает, что он должен иметь свойство length и целочисленные свойства в диапазоне (0...length). В качестве примера, теперь вы можете использовать {{domxref("NodeList")}} или свой собственный объект вида { 'length': 2, '0': 'есть', '1': 'бананы' }.

+ +

{{note("Большинство браузеров, включая Chrome 14 и Internet Explorer 9, всё ещё не принимают массивоподобные объекты и будут выбрасывать исключение.")}}

+ +

Примеры

+ +

Пример: использование apply() для связи конструкторов объекта в цепочку

+ +

Вы можете использовать метод apply() для объединения в цепочку {{jsxref("Operators/new", "конструкторов", "", 1)}} объекта, как в Java. В следующем примере мы создадим в объекте {{jsxref("Global_Objects/Function", "Function")}} глобальный метод construct(), который позволит нам использовать массивоподобные объекты с конструктором вместо списка аргументов.

+ +
Function.prototype.construct = function (aArgs) {
+  var oNew = Object.create(this.prototype);
+  this.apply(oNew, aArgs);
+  return oNew;
+};
+
+ +
+

Примечание: метод {{jsxref("Object.create()")}}, использованный в этом примере, относительно новый. В качестве альтернативного способа можно рассмотреть возможность использования замыкания:

+ +
Function.prototype.construct = function(aArgs) {
+  var fConstructor = this, fNewConstr = function() { fConstructor.apply(this, aArgs); };
+  fNewConstr.prototype = fConstructor.prototype;
+  return new fNewConstr();
+};
+
+
+ +

Пример использования:

+ +
function MyConstructor() {
+  for (var nProp = 0; nProp < arguments.length; nProp++) {
+    this['property' + nProp] = arguments[nProp];
+  }
+}
+
+var myArray = [4, 'Привет, мир!', false];
+var myInstance = MyConstructor.construct(myArray);
+
+alert(myInstance.property1);                // выведет 'Привет, мир!'
+alert(myInstance instanceof MyConstructor); // выведет 'true'
+alert(myInstance.constructor);              // выведет 'MyConstructor'
+
+ +
+

Примечание: этот неродной метод Function.construct() не будет работать с некоторыми родными конструкторами (вроде конструктора {{jsxref("Global_Objects/Date", "Date")}}, к примеру). В этих случаях вы можете использовать метод {{jsxref("Function.prototype.bind()")}} (например, представьте, что вы имеете следующий массив, который можно использовать с конструктором {{jsxref("Global_Objects/Date", "Date")}}: [2012, 11, 4]; в этом случае вы напишите что-то вроде: new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))() — так или иначе, это не самый изящный способ и, вероятно, его не стоит использовать в рабочем окружении).

+
+ +

Пример: использование apply() и встроенных функций

+ +

Умное использование метода apply() позволяет вам использовать встроенные функции для некоторых задач, для которых в противном случае пришлось бы писать цикл по массиву значений. В качестве примера давайте используем {{jsxref("Math.max()")}}/{{jsxref("Math.min()")}} для нахождения максимального/минимального значения в массиве.

+ +
/* мин/макс числа в массиве */
+var numbers = [5, 6, 2, 3, 7];
+
+/* используем apply к Math.min/Math.max */
+var max = Math.max.apply(null, numbers); /* Это эквивалентно Math.max(numbers[0], ...)
+                                            или Math.max(5, 6, ...) */
+var min = Math.min.apply(null, numbers);
+
+/* сравним с простым алгоритмом с циклом */
+max = -Infinity, min = +Infinity;
+
+for (var i = 0; i < numbers.length; i++) {
+  if (numbers[i] > max) {
+    max = numbers[i];
+  }
+  if (numbers[i] < min) {
+    min = numbers[i];
+  }
+}
+
+ +

Но будьте осторожны: при использовании метода apply() таким образом вы рискуете выйти за пределы ограничения на количество аргументов в движке JavaScript. Последствия применения функции с очень большим количеством аргументов (думается, больше десяти тысяч аргументов) различаются от движка к движку (JavaScriptCore имеет жёстко зашитое ограничение на количество аргументов в 65536), поскольку этот предел (на самом деле, это природа поведения любого чрезвычайно огромного стека) не определён. Некоторые движки будут выкидывать исключение. Хуже того, другие просто отбрасывают реально переданные функции аргументы сверх лимита. (Для иллюстрации последнего случая: если такой движок имеет ограничение в четыре элемента [реальное ограничение, конечно же, гораздо выше], это выглядело бы так, как если бы в примере выше в метод apply() были переданы аргументы 5, 6, 2, 3, а не весь массив.) Если ваш масив значений может вырасти до десятков тысяч, используйте смешанный подход: применяйте вашу функцию к порциям массива:

+ +
function minOfArray(arr) {
+  var min = Infinity;
+  var QUANTUM = 32768;
+
+  for (var i = 0, len = arr.length; i < len; i += QUANTUM) {
+    var submin = Math.min.apply(null, arr.slice(i, Math.min(i + QUANTUM, len)));
+    min = Math.min(submin, min);
+  }
+
+  return min;
+}
+
+var min = minOfArray([5, 6, 2, 3, 7]);
+
+ +

Пример: использование apply() в «monkey-патчинге»

+ +

Метод apply() может быть лучшим вариантом для «monkey-патчинга» встроенных в Firefox функций, либо JS библиотек. Пусть у вас есть функция someobject.foo(), вы можете изменить её таким немного хакерским способом:

+ +
var originalfoo = someobject.foo;
+someobject.foo = function() {
+  // Делаем что-то до вызова функции
+  console.log(arguments);
+  // Вызываем функцию так, как будто бы она была вызвана обычным образом:
+  originalfoo.apply(this, arguments);
+  // Делаем что-то после вызова функции.
+}
+
+ +

Этот метод особенно удобен, когда вам нужно отладить события, либо интерфейс с чем-то, что не имеет API, вроде различных событий .on([event]..., например, тех что используются в Инспекторе инструментов разработчика).

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.3.4.3', 'Function.prototype.apply')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function.prototype.apply', 'Function.prototype.apply')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Обобщённые массивоподобные объекты ES 5.1, вроде {{jsxref("Functions_and_function_scope/arguments", "arguments")}}{{CompatUnknown}}{{CompatGeckoDesktop("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Обобщённые массивоподобные объекты ES 5.1, вроде {{jsxref("Functions_and_function_scope/arguments", "arguments")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/arguments/index.html b/files/ru/web/javascript/reference/global_objects/function/arguments/index.html new file mode 100644 index 0000000000..7b089887c4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/arguments/index.html @@ -0,0 +1,116 @@ +--- +title: Function.arguments +slug: Web/JavaScript/Reference/Global_Objects/Function/arguments +tags: + - Deprecated + - Function + - JavaScript + - Property + - arguments +translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments +--- +
+ {{JSRef("Global_Objects", "Function")}} {{deprecated_header}}
+

Сводка

+

Свойство function.arguments ссылалось на массивоподобный объект, соответствующий аргументам, переданным в функцию. Используйте вместо него простую переменную {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.

+

Описание

+

Синтаксис function.arguments устарел. Рекомендуемым способом доступа к объекту {{jsxref("Functions_and_function_scope/arguments", "arguments")}}, доступному внутри функций, являеся простая ссылка на переменную {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.

+

В случае рекурсии, то есть, если функция f несколько раз появляется в стеке вызовов, значение f.arguments представляет аргументы, соответствующие самому последнему вызову функции.

+

Примеры

+
function f(n) { g(n - 1); }
+
+function g(n) {
+  console.log('до: ' + g.arguments[0]);
+  if (n > 0) { f(n); }
+  console.log('после: ' + g.arguments[0]);
+}
+
+f(2);
+
+
+// Вывод
+
+// до: 1
+// до: 0
+// после: 0
+// после: 1
+
+

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0. Устарело в связи с объектом {{jsxref("Functions_and_function_scope/arguments", "arguments")}}
{{SpecName('ES5.1', '#sec-10.6', 'объект arguments')}}{{Spec2('ES5.1')}}Объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}
{{SpecName('ES6', '#sec-arguments-object', 'объект arguments')}}{{Spec2('ES6')}}Объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/function/arity/index.html b/files/ru/web/javascript/reference/global_objects/function/arity/index.html new file mode 100644 index 0000000000..8bcd00363b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/arity/index.html @@ -0,0 +1,30 @@ +--- +title: Function.arity +slug: Web/JavaScript/Reference/Global_Objects/Function/arity +tags: + - Function + - JavaScript + - Obsolete + - Property + - Unimplemented +translation_of: Archive/Web/JavaScript/Function.arity +--- +
{{JSRef}}{{Obsolete_Header}}
+ +

Свойство arity использовалось для возврата количества ожидаемых функцией аргументов, однако, оно больше не существует и было заменено свойством {{JSxRef("Function.prototype.length")}}.

+ +

Спецификации

+ +

Реализовано в JavaScript 1.2. Устарело в JavaScript 1.4.

+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Function.arity")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/bind/index.html b/files/ru/web/javascript/reference/global_objects/function/bind/index.html new file mode 100644 index 0000000000..325c24fa0b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/bind/index.html @@ -0,0 +1,311 @@ +--- +title: Function.prototype.bind() +slug: Web/JavaScript/Reference/Global_Objects/Function/bind +tags: + - ECMAScript5 + - ECMAScript6 + - Function + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Сводка

+ +

Метод bind() создаёт новую функцию, которая при вызове устанавливает в качестве контекста выполнения this предоставленное значение. В метод также передаётся набор аргументов, которые будут установлены перед переданными в привязанную функцию аргументами при её вызове.

+ +

Синтаксис

+ +
fun.bind(thisArg[, arg1[, arg2[, ...]]])
+ +

Параметры

+ +
+
thisArg
+
Значение, передаваемое в качестве this в целевую функцию при вызове привязанной функции. Значение игнорируется, если привязанная функция конструируется с помощью оператора {{jsxref("Operators/new", "new")}}.
+
arg1, arg2, ...
+
Аргументы целевой функции, передаваемые перед аргументами привязанной функции при вызове целевой функции.
+
+ +

Описание

+ +

Метод bind() создаёт новую "привязанную функцию" (ПФ).  ПФ - это "необычный функциональный объект" ( термин из ECMAScript 6 ), который является оберткой над исходным функциональным объектом. Вызов ПФ   приводит к исполнению кода обернутой функции.

+ +

ПФ имеет следующие внутренние ( скрытые ) свойства:

+ + + +

Когда ПФ вызывается, исполняется ее внутренний метод [[Call]] со следующими аргументами Call(target, boundThis, args).

+ + + +

Привязанная функция также может быть сконструирована с помощью оператора {{jsxref("Operators/new", "new")}}: это работает так, как если бы вместо неё конструировалась целевая функция. Предоставляемое значение this в этом случае игнорируется, хотя ведущие аргументы всё ещё передаются в эмулируемую функцию.

+ +

Примеры

+ +

Пример: создание привязанной функции

+ +

Простейшим способом использования bind() является создание функции, которая, вне зависимости от способа её вызова, вызывается с определённым значением this. Обычным заблуждением для новичков в JavaScript является извлечение метода из объекта с целью его дальнейшего вызова в качестве функции и ожидание того, что он будет использовать оригинальный объект в качестве своего значения this (например, такое может случиться при использовании метода как функции обратного вызова). Однако, без специальной обработки, оригинальный объект зачастую теряется. Создание привязанной функции из функции, использующей оригинальный объект, изящно решает эту проблему:

+ +
this.x = 9;
+var module = {
+  x: 81,
+  getX: function() { return this.x; }
+};
+
+module.getX(); // 81
+
+var getX = module.getX;
+getX(); // 9, поскольку в этом случае this ссылается на глобальный объект
+
+// создаём новую функцию с this, привязанным к module
+var boundGetX = getX.bind(module);
+boundGetX(); // 81
+
+ +

Пример: частичные функции

+ +

Следующим простейшим способом использования bind() является создание функции с предопределёнными аргументами. Эти аргументы (если они есть) передаются после значения this и вставляются перед аргументами, передаваемыми в целевую функцию при вызове привязанной функции.

+ +
function list() {
+  return Array.prototype.slice.call(arguments);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+// Создаём функцию с предустановленным ведущим аргументом
+var leadingThirtysevenList = list.bind(undefined, 37);
+
+var list2 = leadingThirtysevenList(); // [37]
+var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3]
+
+ +

Пример: с setTimeout

+ +

По умолчанию, внутри {{domxref("window.setTimeout()")}} контекст this устанавливается в объект {{domxref("window")}} (или global). При работе с методами класса, требующими this для ссылки на экземпляры класса, вы можете явно привязать this к функции обратного вызова для сохранения экземпляра.

+ +
function LateBloomer() {
+  this.petalCount = Math.ceil(Math.random() * 12) + 1;
+}
+
+// Объявляем цветение с задержкой в 1 секунду
+LateBloomer.prototype.bloom = function() {
+  window.setTimeout(this.declare.bind(this), 1000);
+};
+
+LateBloomer.prototype.declare = function() {
+  console.log('Я прекрасный цветок с ' +
+    this.petalCount + ' лепестками!');
+};
+
+ +

Пример: привязывание функций, используемых в качестве конструкторов

+ +
+

Предупреждение: этот раздел демонстрирует возможности JavaScript и документирует некоторые граничные случаи использования метода bind(). Показанные ниже методы не являются лучшей практикой и, вероятно, их не следует использовать в рабочем окружении.

+
+ +

Привязанные функции автоматически подходят для использования вместе с оператором {{jsxref("Operators/new", "new")}} для конструирования новых экземпляров, создаваемых целевой функцией. Когда привязанная функция используется для конструирования значения, предоставляемое значение this игнорируется. Однако, предоставляемые аргументы всё так же вставляются перед аргументами конструктора:

+ +
function Point(x, y) {
+  this.x = x;
+  this.y = y;
+}
+
+Point.prototype.toString = function() {
+  return this.x + ',' + this.y;
+};
+
+var p = new Point(1, 2);
+p.toString(); // '1,2'
+
+
+var emptyObj = {};
+var YAxisPoint = Point.bind(emptyObj, 0/*x*/);
+// не поддерживается полифиллом, приведённым ниже,
+// но отлично работает с родным bind:
+var YAxisPoint = Point.bind(null, 0/*x*/);
+
+var axisPoint = new YAxisPoint(5);
+axisPoint.toString(); // '0,5'
+
+axisPoint instanceof Point; // true
+axisPoint instanceof YAxisPoint; // true
+new Point(17, 42) instanceof YAxisPoint; // true
+
+ +

Обратите внимание, что вам не нужно делать ничего особенного для создания привязанной функции, используемой с оператором {{jsxref("Operators/new", "new")}}. В итоге, для создания явно вызываемой привязанной функции, вам тоже не нужно делать ничего особенного, даже если вам требуется, чтобы привязанная функция вызывалась только с помощью оператора {{jsxref("Operators/new", "new")}}.

+ +
// Пример может быть запущен прямо в вашей консоли JavaScript
+// ...продолжение примера выше
+
+// Всё ещё можно вызывать как нормальную функцию
+// (хотя обычно это не предполагается)
+YAxisPoint(13);
+
+emptyObj.x + ',' + emptyObj.y;
+// >  '0,13'
+
+ +

Если вы хотите поддерживать использование привязанной функции только с помощью оператора {{jsxref("Operators/new", "new")}}, либо только с помощью прямого вызова, целевая функция должна предусматривать такие ограничения.

+ +

Пример: создание сокращений

+ +

Метод bind() также полезен в случаях, если вы хотите создать сокращение для функции, требующей определёное значение this.

+ +

Возьмём, например, метод {{jsxref("Array.prototype.slice")}}, который вы можете использовать для преобразования массивоподобного объекта в настоящий массив. Вы можете создать подобное сокращение:

+ +
var slice = Array.prototype.slice;
+
+// ...
+
+slice.call(arguments);
+
+ +

С помощью метода bind(), это сокращение может быть упрощено. В следующем куске кода slice является функцией, привязанной к функции {{jsxref("Function.prototype.call()", "call()")}} объекта {{jsxref("Function.prototype")}}, со значением this, установленным в функцию {{jsxref("Array.prototype.slice()", "slice()")}} объекта {{jsxref("Array.prototype")}}. Это означает, что дополнительный вызов call() может быть устранён:

+ +
// Тоже самое, что и slice в предыдущем примере
+var unboundSlice = Array.prototype.slice;
+var slice = Function.prototype.call.bind(unboundSlice);
+
+// ...
+
+slice(arguments);
+
+ +

Полифилл

+ +

Функция bind является дополнением к стандарту ECMA-262 5-го издания; поэтому она может присутствовать не во всех браузерах. Вы можете частично обойти это ограничение, вставив следующий код в начало ваших скриптов, он позволяет использовать большую часть возможностей bind() в реализациях, не имеющих его родной поддержки.

+ +
if (!Function.prototype.bind) {
+  Function.prototype.bind = function(oThis) {
+    if (typeof this !== 'function') {
+      // ближайший аналог внутренней функции
+      // IsCallable в ECMAScript 5
+      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+    }
+
+    var aArgs = Array.prototype.slice.call(arguments, 1),
+        fToBind = this,
+        fNOP    = function() {},
+        fBound  = function() {
+          return fToBind.apply(this instanceof fNOP && oThis
+                 ? this
+                 : oThis,
+                 aArgs.concat(Array.prototype.slice.call(arguments)));
+        };
+
+    fNOP.prototype = this.prototype;
+    fBound.prototype = new fNOP();
+
+    return fBound;
+  };
+}
+
+ +

Некоторые из многих отличий (так же могут быть и другие, данный список далеко не исчерпывающий) между этой реализацией и реализацией по умолчанию:

+ + + +

Если вы решили использовать частичную реализацию, не рассчитывайте на корректную работу в тех случаях, когда реализация отклоняется от спецификации ECMA-262 5-го издания! Однако, в определённых случаях (и, возможно, с дополнительными модификациями для отдельных нужд), применение данной частичной реализации может быть вполне оправданным до тех пор, пока bind() не станет широко реализован в соответствии со спецификацией.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-function.prototype.bind', 'Function.prototype.bind')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("7")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5.1.4")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatAndroid("4.0")}}{{CompatChrome("0.16")}}{{CompatGeckoMobile("2")}}{{CompatUnknown}}{{CompatOperaMobile("11.50")}}{{CompatSafari("6.0")}}
+
+ +

На основе таблицы совместимости Kangax.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/call/index.html b/files/ru/web/javascript/reference/global_objects/function/call/index.html new file mode 100644 index 0000000000..500c4af182 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/call/index.html @@ -0,0 +1,175 @@ +--- +title: Function.prototype.call() +slug: Web/JavaScript/Reference/Global_Objects/Function/call +tags: + - Function + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Function/call +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Сводка

+ +

Метод call() вызывает функцию с указанным значением this и индивидуально предоставленными аргументами.

+ +
+

Примечание: хотя синтаксис этой функции практически полностью идентичен функции {{jsxref("Function.prototype.apply", "apply()")}}, фундаментальное различие между ними заключается в том, что функция call() принимает список аргументов, в то время, как функция apply() - одиночный массив аргументов.

+
+ +

Синтаксис

+ +
fun.call(thisArg[, arg1[, arg2[, ...]]])
+ +

Параметры

+ +
+
thisArg
+
Значение this, предоставляемое для вызова функции fun. Обратите внимание, что this может не быть реальным значением, видимым этим методом: если метод является функцией в {{jsxref("Functions_and_function_scope/Strict_mode", "нестрогом режиме", "", 1)}}, значения {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}} будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.
+
arg1, arg2, ...
+
Аргументы для объекта.
+
+ +

Описание

+ +

Вы можете присваивать различные объекты this при вызове существующей функции. this ссылается на текущий объект, вызвавший объект. С помощью call вы можете написать метод один раз, а затем наследовать его в других объектах, без необходимости переписывать метод для каждого нового объекта.

+ +

Примеры

+ +

Пример: использование call для связи конструкторов объекта в цепочку

+ +

Вы можете использовать метод call для объединения в цепочку {{jsxref("Operators/new", "конструкторов", "", 1)}} объекта, как в Java. В следующем примере для объекта продукта Product объявлен конструктор с двумя параметрами, названием name и ценой price. Продукт инициализирует свойства name и price, а специализированные функции определяют ещё категорию category.

+ +
function Product(name, price) {
+  this.name = name;
+  this.price = price;
+
+  if (price < 0) {
+    throw RangeError('Нельзя создать продукт ' +
+                      this.name + ' с отрицательной ценой');
+  }
+}
+
+function Food(name, price) {
+  Product.call(this, name, price);
+  this.category = 'еда';
+}
+
+Food.prototype = Object.create(Product.prototype);
+
+function Toy(name, price) {
+  Product.call(this, name, price);
+  this.category = 'игрушка';
+}
+
+Toy.prototype = Object.create(Product.prototype);
+
+var cheese = new Food('фета', 5);
+var fun = new Toy('робот', 40);
+
+ +

Пример: использование call для вызова анонимной функции

+ +

В этом чисто искусственном примере, мы создаём анонимную функцию и используем call для вызова её на каждом элементе массива. Главная задача анонимной функции здесь — добавить функцию печати в каждый объект, способную напечатать правильный индекс объекта в массиве. Передача объекта в качестве значения this не является острой необходимостью, но мы делаем это в целях объяснения.

+ +
var animals = [
+  { species: 'Лев', name: 'Король' },
+  { species: 'Кит', name: 'Фэйл' }
+];
+
+for (var i = 0; i < animals.length; i++) {
+  (function(i) {
+    this.print = function() {
+      console.log('#' + i + ' ' + this.species
+                  + ': ' + this.name);
+    }
+    this.print();
+  }).call(animals[i], i);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/caller/index.html b/files/ru/web/javascript/reference/global_objects/function/caller/index.html new file mode 100644 index 0000000000..4055eaf092 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/caller/index.html @@ -0,0 +1,131 @@ +--- +title: Function.caller +slug: Web/JavaScript/Reference/Global_Objects/Function/caller +tags: + - Function + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller +--- +
{{JSRef("Global_Objects", "Function")}} {{non-standard_header}}
+ +

Сводка

+ +

Свойство function.caller возвращает функцию, которая вызвала указанную функцию.

+ +

Описание

+ +

Если функция f была вызвана из кода самого верхнего уровня, значение f.caller будет равно {{jsxref("Global_Objects/null", "null")}}, в противном случае значение будет равно функции, вызвавшей f.

+ +

Это свойство пришло на замену удалённого свойства {{jsxref("Functions_and_function_scope/arguments/caller", "arguments.caller")}} объекта {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.

+ +

Специальное свойство __caller__, возвращающее объект активации вызывающей функции и, таким образом, позволяющее восстанавливать стек вызовов, было удалено по соображениям безопасности.

+ +

Примечания

+ +

Обратите внимание, что в случае рекурсии, вы не сможете воссоздать стек вызовов, используя это свойство. Пусть у нас есть функции:

+ +
function f(n) { g(n - 1); }
+function g(n) { if (n > 0) { f(n); } else { stop(); } }
+f(2);
+
+ +

В момент вызова функции stop(), стек вызовов имеет следующий вид:

+ +
f(2) -> g(2) -> f(2) -> g(1) -> f(1) -> g(0) -> stop()
+
+ +

Следующее условие верно:

+ +
stop.caller === g && f.caller === g && g.caller === f
+
+ +

так что если вы попытаетесь оттрассировать стек в функции stop() подобным образом:

+ +
var f = stop;
+var stack = 'Трассировка стека:';
+while (f) {
+  stack += '\n' + f.name;
+  f = f.caller;
+}
+
+ +

то этот цикл никогда не остановится.

+ +

Примеры

+ +

Пример: проверка значения свойства caller функции

+ +

Следующий код проверяет значение свойства caller функции.

+ +
function myFunc() {
+  if (myFunc.caller == null) {
+    return 'Эта функция была вызвана из верхнего уровня!';
+  } else {
+    return 'Эта функция была вызвана из ' + myFunc.caller;
+  }
+}
+
+ +

Спецификации

+ +

Не является частью какой-либо спецификации. Реализована в JavaScript 1.5.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/displayname/index.html b/files/ru/web/javascript/reference/global_objects/function/displayname/index.html new file mode 100644 index 0000000000..11bae88221 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/displayname/index.html @@ -0,0 +1,111 @@ +--- +title: Function.displayName +slug: Web/JavaScript/Reference/Global_Objects/Function/displayName +tags: + - Function + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName +--- +
+ {{JSRef("Global_Objects", "Function")}} {{Non-standard_header}}
+

Сводка

+

Свойство function.displayName возвращает отображаемое имя функции.

+

Описание

+

Если оно определено, свойство displayName возвращает отображаемое имя функции:

+
function doSomething() {}
+
+alert(doSomething.displayName); // "undefined"
+
+var popup = function(content) { alert(content); };
+
+popup.displayName = 'Показать всплывающее окно';
+
+alert(popup.displayName); // "Показать всплывающее окно"
+
+

Вы можете определить функцию с отображаемым именем в {{jsxref("Functions_and_function_scope", "выражении функции", "", 1)}}:

+
var object = {
+  someMethod: function() {}
+};
+
+object.someMethod.displayName = 'someMethod';
+
+alert(object.someMethod.displayName); // выведет "someMethod"
+
+try { someMethod } catch(e) { alert(e); }
+// ReferenceError: someMethod is not defined
+
+

Вы можете динамически изменять свойство displayName функции:

+
var object = {
+  // анонимная функция
+  someMethod: function(value) {
+    this.displayName = 'someMethod (' + value + ')';
+  }
+};
+
+alert(object.someMethod.displayName); // "undefined"
+
+object.someMethod('123')
+alert(object.someMethod.displayName); // "someMethod (123)"
+
+

Примеры

+

Обычно оно используется консолью и профилировщиком, как обёртка над {{jsxref("Function.name", "func.name")}} для отображения имени функции.

+

Введя следующий пример в консоль, вы должны увидеть что-то вроде "function Моя функция()":

+
var a = function() {};
+a.displayName = 'Моя функция';
+
+a
+
+

Спецификации

+

Не является частью какой-либо спецификации.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatGeckoDesktop(13)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

 

diff --git a/files/ru/web/javascript/reference/global_objects/function/index.html b/files/ru/web/javascript/reference/global_objects/function/index.html new file mode 100644 index 0000000000..63d7e776c0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/index.html @@ -0,0 +1,200 @@ +--- +title: Function +slug: Web/JavaScript/Reference/Global_Objects/Function +tags: + - JavaScript + - Конструктор + - Функция +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

{{JSRef}}

+ +

Function constructor создает новый объект Function. Вызов constructor создает функцию динамически, но страдает от проблем безопасности и аналогичных (но гораздо менее значительных) проблем производительности {{jsxref("eval")}}. Однако, в отличие от eval, конструктор функций создает функции, которые выполняются только в глобальной области..

+ +

{{EmbedInteractiveExample("pages/js/function-constructor.html")}}

+ + + +

Каждая функция JavaScript на самом деле является объектом функции. Это можно увидеть с помощью кода (function(){}).constructor === Function которая возвращает true.

+ +

Синтаксис

+ +
new Function([arg1[, arg2[, ...argN]],] functionBody)
+ +

Параметры

+ +
+
arg1, arg2, ... argN
+
Имена, используемые функцией в качестве имён формальных аргументов. Каждое имя должно быть строкой, представляющий допустимый идентификатор JavaScript, либо списком таких строк, разделённых запятой; например "x", "theValue" или "a,b".
+
functionBody
+
Строка, содержащая инструкции JavaScript, составляющие определение функции.
+
+ +

Описание

+ +

Объекты Function, созданные констуктором Function, разбираются при создании функции. Это менее эффективно определения функции при помощи выражения function или инструкции function и вызова её внутри вашего кода, поскольку такие функции разбираются вместе с остальным кодом.

+ +

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

+ +
+

Примечание: функции, созданные конструктором Function, не создают замыканий на их контексты создания; они всегда создаются в глобальной области видимости. При их вызове, они получат доступ только к своим локальным переменным и переменным из глобальной области видимости, но не к переменным в той области видимости, в которой вызывался конструктор Function. Это поведение отличается от поведения при использовании функции {{jsxref("Global_Objects/eval", "eval")}} с кодом создания функции.

+
+ +

Вызов констуктора Function как функции (без использования оператора new) имеет тот же самый эффект, что и вызов его как констуктора.

+ +

Свойства и методы объекта Function

+ +

Глобальный объект Function не имеет собственных методов или свойств, однако, поскольку он сам является функцией, он наследует некоторые методы и свойства через цепочку прототипов объекта {{jsxref("Function.prototype")}}.

+ +

Прототип объекта Function

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype', 'Methods')}}
+ +

Экземпляры объекта Function

+ +

Экземпляры объекта Function наследуют методы и свойства из объекта {{jsxref("Function.prototype")}}. Как и со всеми другими конструкторами, вы можете изменить объект прототипа констуктора для применения изменений ко всем экземплярам объекта Function.

+ +

Примеры

+ +

Пример: указание аргументов в конструкторе Function

+ +

Следующий код создаёт объект Function, который принимает два аргумента.

+ +
// Пример может быть запущен непосредственно в вашей консоли JavaScript
+
+// Создаём функцию, принимающую два аргумента, и возвращающую их сумму
+var adder = new Function('a', 'b', 'return a + b');
+
+// Вызываем функцию
+adder(2, 6);
+// > 8
+
+ +

Аргуметы "a" и "b" являются именами формальных аргументов, которые используются в теле функции, "return a + b".

+ +

Пример: рекурсивное сокращение для массового изменения DOM

+ +

Создание функции через конструктор Function - это один из способов динамического создания из функции неизвестного количества новых объектов с некоторым выполняемым кодом в глобальной области видимости. Следующий пример (a рекурсивное сокращение для массового изменения DOM) был бы невозможен без вызова конструктора Function для каждого нового запроса, если вы хотите избежать использования замыканий.

+ +
<!doctype html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Пример MDN - рекурсивное сокращение для массового изменения DOM</title>
+<script type="text/javascript">
+var domQuery = (function() {
+  var aDOMFunc = [
+    Element.prototype.removeAttribute,
+    Element.prototype.setAttribute,
+    CSSStyleDeclaration.prototype.removeProperty,
+    CSSStyleDeclaration.prototype.setProperty
+  ];
+
+  function setSomething(bStyle, sProp, sVal) {
+    var bSet = Boolean(sVal), fAction = aDOMFunc[bSet | bStyle << 1],
+        aArgs = Array.prototype.slice.call(arguments, 1, bSet ? 3 : 2),
+        aNodeList = bStyle ? this.cssNodes : this.nodes;
+
+    if (bSet && bStyle) { aArgs.push(''); }
+    for (
+      var nItem = 0, nLen = this.nodes.length;
+      nItem < nLen;
+      fAction.apply(aNodeList[nItem++], aArgs)
+    );
+    this.follow = setSomething.caller;
+    return this;
+  }
+
+  function setStyles(sProp, sVal) { return setSomething.call(this, true, sProp, sVal); }
+  function setAttribs(sProp, sVal) { return setSomething.call(this, false, sProp, sVal); }
+  function getSelectors() { return this.selectors; };
+  function getNodes() { return this.nodes; };
+
+  return (function(sSelectors) {
+    var oQuery = new Function('return arguments.callee.follow.apply(arguments.callee, arguments);');
+    oQuery.selectors = sSelectors;
+    oQuery.nodes = document.querySelectorAll(sSelectors);
+    oQuery.cssNodes = Array.prototype.map.call(oQuery.nodes, function(oInlineCSS) { return oInlineCSS.style; });
+    oQuery.attributes = setAttribs;
+    oQuery.inlineStyle = setStyles;
+    oQuery.follow = getNodes;
+    oQuery.toString = getSelectors;
+    oQuery.valueOf = getNodes;
+    return oQuery;
+  });
+})();
+</script>
+</head>
+
+<body>
+
+<div class="testClass">Lorem ipsum</div>
+<p>Некоторый текст</p>
+<div class="testClass">dolor sit amet</div>
+
+<script type="text/javascript">
+domQuery('.testClass')
+  .attributes('lang', 'en')('title', 'Risus abundat in ore stultorum')
+  .inlineStyle('background-color', 'black')('color', 'white')('width', '100px')('height', '50px');
+</script>
+</body>
+
+</html>
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.3', 'Function')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function-objects', 'Function')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Function")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html new file mode 100644 index 0000000000..e3a972e9e2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html @@ -0,0 +1,83 @@ +--- +title: Function.prototype.isGenerator() +slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator +tags: + - Function + - JavaScript + - Method + - Non-standard +translation_of: Archive/Web/JavaScript/Function.isGenerator +--- +
+ {{JSRef("Global_Objects", "Function")}} {{non-standard_header}}
+

Сводка

+

Метод isGenerator() определяет, является ли функция генератором.

+

Синтаксис

+
fun.isGenerator()
+

Описание

+

Метод isGenerator() определяет, является ли функция fun генератором. Он является частью раннего предложения Harmony, но не был включён в спецификацию ECMAScript 6.

+

Примеры

+
function f() {}
+
+function g() {
+  yield 42;
+}
+
+console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false
+console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true
+
+

Спецификации

+

Не является частью какой-либо спецификации. Реализована в JavaScript 1.8.6.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("5.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("5.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/function/length/index.html b/files/ru/web/javascript/reference/global_objects/function/length/index.html new file mode 100644 index 0000000000..e65e361f17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/length/index.html @@ -0,0 +1,145 @@ +--- +title: Function.length +slug: Web/JavaScript/Reference/Global_Objects/Function/length +tags: + - Function + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Function/length +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Сводка

+

Свойство length определяет количество аргументов, ожидаемых функцией.

+ +
{{js_property_attributes(0, 0, 1)}}
+ +

Описание

+

Свойство length является свойством объекта функции и указывает, сколько аргументов ожидает функция, то есть, количество формальных параметров. Это количество не включает {{jsxref("rest_parameters", "остаточные параметры", "", 1)}}. В отличие от него, свойство {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} является локальным для функции и предоставляет количество аргументов, реально переданных в функцию.

+ +

Свойство данных конструктора Function

+

Конструктор {{jsxref("Global_Objects/Function", "Function")}} сам является объектом {{jsxref("Global_Objects/Function", "Function")}}. Его свойство данных length имеет значение 1. Атрибуты свойства: записываемое: false, перечисляемое: false, настраиваемое: true.

+ +

Свойство объекта прототипа Function

+

Свойство length объекта прототипа {{jsxref("Global_Objects/Function", "Function")}} имеет значение 0.

+ +

Примеры

+
console.log(Function.length); /* 1 */
+
+console.log((function()        {}).length); /* 0 */
+console.log((function(a)       {}).length); /* 1 */
+console.log((function(a, b)    {}).length); /* 2 и так далее */
+console.log((function(...args) {}).length); /* 0, остаточные параметры не считаются */
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
+ Свойство length конструктора {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES5.1', '#sec-15.3.3.2', 'Function.length')}}
+ Свойство length объекта прототипа {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES5.1', '#sec-properties-of-the-function-prototype-object', 'Function.length')}}
+ Свойство length экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}} +
{{Spec2('ES5.1')}} 
+ Свойство length конструктора {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES6', '#sec-function.length', 'Function.length')}}
+ Свойство length объекта прототипа {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES6', '#sec-15.3.4', 'Function.length')}}
+ Свойство length экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}
+
{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Поддержка настраиваемости{{CompatUnknown}}{{CompatGeckoDesktop(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Поддержка настраиваемости{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/function/name/index.html b/files/ru/web/javascript/reference/global_objects/function/name/index.html new file mode 100644 index 0000000000..212b9cb735 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/name/index.html @@ -0,0 +1,219 @@ +--- +title: Function.name +slug: Web/JavaScript/Reference/Global_Objects/Function/name +tags: + - ECMAScript6 + - Function + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Function/name +--- +

{{JSRef}}

+ +

Read-only свойство name глобального объекта {{jsxref("Function")}} и его экзепляров содержит название функции созданное во время определения функции или присваивания ссылки на функцию переменной, свойству, аргументу и т. п. Для анонимных функций это свойство может иметь значение "anonymous" или пустую строку  "".

+ +

{{EmbedInteractiveExample("pages/js/function-name.html")}}

+ +

Интерактивные примеры размещены в GitHub репозитории. Если вы хотите добавить свои примеры, то клонируйте https://github.com/mdn/interactive-examples и пришлите пулл реквест.

+ +

{{js_property_attributes(0,0,1)}}
+  

+ +
+

Заметьте, что в нестандартном, pre-ES2015 релизе configurable свойство было false

+
+ +

Примеры

+ +

Имя объявленной функции

+ +

Свойство name возвращает имя функции, либо пустую строку для анонимных функций:

+ +
function doSomething() {}
+
+alert(doSomething.name); // выведет "doSomething"
+
+ +

Имя функции-конструктора

+ +

Функции, созданные синтаксисом new Function(...) или просто Function(...) создают  {{jsxref("Function")}} и имеют name "anonymous":​​​

+ +
(new Function).name; // "anonymous"
+
+ +

Предполагаемые имена функций

+ +

Переменные и методы могут предположить название анонимной функции из ее синтаксической позиции  (new in ECMAScript 2015).

+ +
var f = function() {};
+var object = {
+  someMethod: function() {}
+};
+
+console.log(f.name); // "f"
+console.log(object.someMethod.name); // "someMethod"
+ +

Вы можете определить функцию с именем в {{jsxref("Operators/Function", "function expression", "", 1)}}:

+ +
var object = {
+  someMethod: function object_someMethod() {}
+};
+console.log(object.someMethod.name); // выведет "object_someMethod"
+
+try { object_someMethod } catch(e) { console.log(e); }
+// ReferenceError: object_someMethod is not defined
+
+ +

Вы не можете изменить имя функции, это свойство только для чтения:

+ +
var object = {
+  // анонимная функция
+  someMethod: function() {}
+};
+
+object.someMethod.name = 'otherMethod';
+alert(object.someMethod.name); //someMethod
+
+
+ +

Для изменения name можно использовать {{jsxref("Object.defineProperty()")}}.

+ +

Сокращенные имена методов

+ +
var o = {
+  foo(){}
+};
+o.foo.name; // "foo";
+ +

Имена функций после байндинга

+ +

{{jsxref("Function.bind()")}} производит функцию, получающую имя "bound  и название самой функции.

+ +
function foo() {};
+foo.bind({}).name; // "bound foo"
+
+ +

Имена функций для getters и setters

+ +

Когда используются get и set, "get" и "set" появятся в имени функции.

+ +
let o = {
+  get foo(){},
+  set foo(x){}
+};
+
+var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+descriptor.get.name; // "get foo"
+descriptor.set.name; // "set foo";
+ +

Имена функций-классов

+ +

Можно использовать obj.constructor.name чтобы проверить "class" объекта (читайте предупреждение ниже):

+ +
function Foo() {}  // ES2015 Syntax: class Foo {}
+
+var fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // logs "Foo"
+
+ +
+

Warning: Интерпретатор объявит встроенное Function.name свойство только если функция не имеет своего собственного свойства name (см.  9.2.11 of the ECMAScript2015 Language Specification). Однако, в ES2015 статичные методы перезаписывают OwnProperty конструкторов класса-функции (ECMAScript2015, 14.5.14.21.b + 12.2.6.9).

+
+ +

Таким образом, нельзя получить доступ к name любого класса со статичным свойством name()​​​​​​:

+ +
class Foo {
+  constructor() {}
+  static name() {}
+}
+
+ +

Со static name() методом Foo.name больше не содержит название класса, но отсылает к функции name(). Приведенное выше определение класса в ES2015 будет вести себя в Chrome и Firefx как в  ES5:

+ +
function Foo() {}
+Object.defineProperty(Foo, 'name', { writable: true });
+Foo.name = function() {};
+ +

Пытаясь получить доступ к fooInstance с помощью fooInstance.constructor.name не даст название класса, но выведет метод name(). Пример:

+ +
let fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // logs function name()
+ +

Из ES5 syntax примера также видно, что в Chrome или Firefox статичное определение Foo.name становится записываемым (writable). Встроенное определение в отсутствии кастомного статичного методадоступно только для чтения:

+ +
Foo.name = 'Hello';
+console.log(Foo.name); // logs "Hello" if class Foo has a static name() property but "Foo" if not.
+ +

Следовательно не ожидайте, что Function.name свойство будет всегда содержать имя класса.

+ +

Имена функций-символов

+ +

Если у {{jsxref("Symbol")}} объявляется имя, то название метода - это имя квадратных скобках.

+ +
let sym1 = Symbol("foo");
+let sym2 = Symbol();
+let o = {
+  [sym1]: function(){},
+  [sym2]: function(){}
+};
+
+o[sym1].name; // "[foo]"
+o[sym2].name; // ""
+
+ +

JavaScript минифицированный

+ +
+

Warning: Будьте осторожны, используя Function.name и изменения source кода с помощью JavaScript compressors (minifiers) или обфускаторов. Эти инструменты часто используются, как встроенные в  JavaScript build pipeline, чтобы сократить размер билда перед деплоем в production. Такие трансформации часто изменяют имена функций.

+
+ +

Такой source code:

+ +
function Foo() {};
+let foo = new Foo();
+
+if (foo.constructor.name === 'Foo') {
+  console.log("'foo' is an instance of 'Foo'");
+} else {
+  console.log('Oops!');
+}
+ +

может быть сжат в:

+ +
function a() {};
+let b = new a();
+if (b.constructor.name === 'Foo') {
+  console.log("'foo' is an instance of 'Foo'");
+} else {
+  console.log('Oops!');
+}
+ +

В несжатой версии код выполняется ожидаемо "'foo' is an instance of 'Foo'". В то время, как в сжатой версии он ведет себя иначе. Если вы полагаетесь на Function.name, как в примере, то убедитесь, что pipeline не меняет код или не ожидайте от функции определенного имени.

+ + + + + + + + + + + + + + +
+

Спецификация

+
СтатусКомментарии
{{SpecName('ES6', '#sec-name', 'name')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Function.name")}}

+ +
diff --git a/files/ru/web/javascript/reference/global_objects/function/prototype/index.html b/files/ru/web/javascript/reference/global_objects/function/prototype/index.html new file mode 100644 index 0000000000..66a3ecc18e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/prototype/index.html @@ -0,0 +1,151 @@ +--- +title: Function.prototype +slug: Web/JavaScript/Reference/Global_Objects/Function/prototype +tags: + - Function + - JavaScript + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Сводка

+ +

Свойство Function.prototype представляет прототип объекта {{jsxref("Global_Objects/Function", "Function")}}.

+ +

Описание

+ +

Объекты {{jsxref("Global_Objects/Function", "Function")}} наследуются от Function.prototype. Объект Function.prototype не может быть изменён.

+ +

Свойства

+ +
+
{{jsxref("Function.arguments")}} {{deprecated_inline}}
+
Массив, соответствующий аргументам, переданным в функцию. Это устаревшее свойство {{jsxref("Global_Objects/Function", "Function")}}, используйте вместо него объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}, доступный внутри функции.
+
{{jsxref("Function.arity")}} {{obsolete_inline}}
+
Использовалось для определения количества аргументов, ожидаемых функцией, но было удалено. Вместо него используйте свойство {{jsxref("Function.length", "length")}}.
+
{{jsxref("Function.caller")}} {{non-standard_inline}}
+
Определяет функцию, вызвавшую текущую выполняющуюся функцию.
+
{{jsxref("Function.length")}}
+
Определяет количество аргументов, ожидаемых функцией.
+
{{jsxref("Function.name")}} {{non-standard_inline}}
+
Имя функции.
+
{{jsxref("Function.displayName")}} {{non-standard_inline}}
+
Отображаемое имя функции.
+
Function.prototype.constructor
+
Определяет функцию, создающую прототип объекта. Смотрите документацию по {{jsxref("Object.prototype.constructor")}}.
+
+ +

Методы

+ +
+
{{jsxref("Function.prototype.apply()")}}
+
Вызывает функцию и устанавливает this в контекст предоставленного значения; аргументы передаются объектом {{jsxref("Global_Objects/Array", "Array")}}.
+
{{jsxref("Function.prototype.bind()")}}
+
Создаёт новую функцию, которая, при вызове, самостоятельно вызывает эту функцию в контексте предоставленного значения, с данной последовательностью аргументов, предшествующих любым аргументам, переданным в новую функцию при её вызове. Устанавливает this в контекст предоставленного значения.
+
{{jsxref("Function.prototype.call()")}}
+
Вызывает (выполняет) функцию и устанавливает this в контекст предоставленного значения; аргументы передаются как есть.
+
{{jsxref("Function.prototype.isGenerator()")}} {{non-standard_inline}}
+
Возвращает true, если функция является генератором; в противном случае возвращает false.
+
{{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает строку, представляющую исходный код функции. Переопределяет метод {{jsxref("Object.prototype.toSource")}}.
+
{{jsxref("Function.prototype.toString()")}}
+
Возвращает строку, представляющую исходный код функции. Переопределяет метод {{jsxref("Object.prototype.toString")}}.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.3.1', 'Function.prototype')}}
+ Для экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES5.1', '#sec-15.3.5.2', 'Function.prototype')}}
{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-function.prototype', 'Function.prototype')}}
+ Для экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:
+ {{SpecName('ES6', '#sec-function-instances-prototype', 'Function.prototype')}}
{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-function-instances-prototype', 'Function.prototype')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/function/tosource/index.html b/files/ru/web/javascript/reference/global_objects/function/tosource/index.html new file mode 100644 index 0000000000..335967947b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/tosource/index.html @@ -0,0 +1,87 @@ +--- +title: Function.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Function/toSource +tags: + - Function + - JavaScript + - Method + - Non-standard +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource +--- +
+ {{JSRef("Global_Objects", "Function")}} {{non-standard_header}}
+

Сводка

+

Метод toSource() возвращает строку, представляющую исходный код объекта.

+

Синтаксис

+
function.toSource();
+Function.toSource();
+
+

Параметры

+

Нет.

+

Описание

+

Метод toSource возвращает следующие значения:

+ +

Этот метод обычно вызывается внутренними механизмаим движка JavaScript, а не явно в коде. Вы можете вызвать toSource во время отладки для изучения содержимого объекта.

+

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/function/tostring/index.html b/files/ru/web/javascript/reference/global_objects/function/tostring/index.html new file mode 100644 index 0000000000..70b6522ebe --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/tostring/index.html @@ -0,0 +1,110 @@ +--- +title: Function.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Function/toString +tags: + - Function + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Сводка

+

Метод toString() возвращает строку, представляющую исходный код функции.

+ +

Синтаксис

+
function.toString(indentation)
+ +

Параметры

+
+
indentation {{non-standard_inline}} {{obsolete_inline(17)}}
+
Количество пробелов для отступов в строковом представлении исходного кода. Если параметр меньше или равен -1, большинство ненужных пробелов будет удалено.
+
+ +

Описание

+

Объект {{jsxref("Global_Objects/Function", "Function")}} переопределяет метод {{jsxref("Object.prototype.toString", "toString")}}, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString")}}. Для объектов {{jsxref("Global_Objects/Function", "Function")}} метод toString возвращает строку, представляющую объект в форме объявления функции. То есть, метод toString декомпилирует функцию и возвращает строку, включающую ключевое слово function, список аргументов, фигурные скобки и исходный код тела функции.

+

JavaScript вызывает метод toString автоматически в случае, когда объект {{jsxref("Global_Objects/Function", "Function")}} представляется в качестве текстового значения, то есть, когда функция соединяется со строкой.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.4.2', 'Function.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Особый случай с Gecko

+

Начиная с Gecko 17.0 {{geckoRelease("17")}}, метод Function.prototype.toString() реализован с сохранением исходного кода функции. Декомпилятор был удалён, так что параметр indentation больше не требуется. Смотрите {{bug("761723")}} для подробностей.

+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/generator/index.html b/files/ru/web/javascript/reference/global_objects/generator/index.html new file mode 100644 index 0000000000..b5fe95a5bf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/index.html @@ -0,0 +1,187 @@ +--- +title: Generator +slug: Web/JavaScript/Reference/Global_Objects/Generator +tags: + - ECMAScript 2015 + - Generator + - JavaScript + - Legacy Generator + - Legacy Iterator + - NeedsTranslation + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Generator +--- +
{{JSRef}}
+ +

Генератор - это объект, возвращаемый {{jsxref("Statements/function*", "функцией-генератором", "", 1)}} и соответствующий как "Итерируемому" протоколу, так и протоколу "Итератор".

+ +

Синтаксис

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen(); // "Generator { }"
+ +

Методы

+ +
+
{{jsxref("Generator.prototype.next()")}}
+
Возвращает значение, полученное выражением {{jsxref("Operators/yield", "yield")}}.
+
{{jsxref("Generator.prototype.return()")}}
+
Возвращает заданное значение и заканчивает генератор.
+
{{jsxref("Generator.prototype.throw()")}}
+
Выдает ошибку генератора.
+
+ +

Пример

+ +

Бесконечный Итератор

+ +
function* idMaker() {
+    var index = 0;
+    while(true)
+        yield index++;
+}
+
+var gen = idMaker(); // "Generator { }"
+
+console.log(gen.next().value); // 0
+console.log(gen.next().value); // 1
+console.log(gen.next().value); // 2
+// ...
+ +

Legacy generator objects

+ +

Firefox (SpiderMonkey) also implements an earlier version of generators in JavaScript 1.7, where the star (*) in the function declaration was not necessary (you just use the yield keyword in the function body). However, legacy generators are deprecated. Do not use them; they are going to be removed ({{bug(1083482)}}).

+ +

Legacy generator methods

+ +
+
Generator.prototype.next() {{non-standard_inline}}
+
Returns a value yielded by the {{jsxref("Operators/yield", "yield")}} expression. This corresponds to next() in the ES2015 generator object.
+
Generator.prototype.close() {{non-standard_inline}}
+
Closes the generator, so that when calling next() an {{jsxref("StopIteration")}} error will be thrown. This corresponds to the return() method in the ES2015 generator object.
+
Generator.prototype.send() {{non-standard_inline}}
+
Used to send a value to a generator. The value is returned from the {{jsxref("Operators/yield", "yield")}} expression, and returns a value yielded by the next {{jsxref("Operators/yield", "yield")}} expression. send(x) corresponds to next(x) in the ES2015 generator object.
+
Generator.prototype.throw() {{non-standard_inline}}
+
Throws an error to a generator. This corresponds to the throw() method in the ES2015 generator object.
+
+ +

Legacy generator example

+ +
function fibonacci() {
+  var a = yield 1;
+  yield a * 2;
+}
+
+var it = fibonacci();
+console.log(it);          // "Generator {  }"
+console.log(it.next());   // 1
+console.log(it.send(10)); // 20
+console.log(it.close());  // undefined
+console.log(it.next());   // throws StopIteration (as the generator is now closed)
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatChrome(39.0)}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(39.0)}}
+
+ +

See also

+ +

Legacy generators

+ + + +

ES2015 generators

+ + diff --git a/files/ru/web/javascript/reference/global_objects/generator/next/index.html b/files/ru/web/javascript/reference/global_objects/generator/next/index.html new file mode 100644 index 0000000000..5e69003f85 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/next/index.html @@ -0,0 +1,116 @@ +--- +title: Generator.prototype.next() +slug: Web/JavaScript/Reference/Global_Objects/Generator/next +tags: + - ECMAScript6 + - JavaScript + - Reference + - генератор + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next +--- +
{{JSRef}}
+ +

Метод next() возвращает объект с двумя свойствами done и value. Также вы можете задать параметр для метода next, чтобы отправить значение в генератор.

+ +

Синтаксис

+ +
gen.next(value)
+ +

Параметры

+ +
+
value
+
Значение, отправляемое в генератор. Значение будет установлено в виде результата выражения yield, т. е. в [переменная] = yield [выражение] значение, которое было передано в функцию .next будет присвоено [переменной].
+
+ +

Возвращаемое значение

+ +

Object с двумя свойствами:

+ + + +

Примеры

+ +

Использование next()

+ +

Следующий пример показывает простой генератор и объект, который возвращает метод next:

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen(); // "Generator { }"
+g.next();      // "Object { value: 1, done: false }"
+g.next();      // "Object { value: 2, done: false }"
+g.next();      // "Object { value: 3, done: false }"
+g.next();      // "Object { value: undefined, done: true }"
+
+ +

Отправка значения в генератор

+ +

В этом примере next вызывается со значением. Отметим, что первый вызов ничего не вывел, потому что генератор изначально ничего не получил.

+ +
function* gen() {
+  while(true) {
+    var value = yield null;
+    console.log(value);
+  }
+}
+
+var g = gen();
+g.next(1);
+// "{ value: null, done: false }"
+g.next(2);
+// 2
+// "{ value: null, done: false }"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ES2015')}}Изначальное определение
{{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}{{Spec2('ESDraft')}}
+ +

Совсестимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Generator.next")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/generator/return/index.html b/files/ru/web/javascript/reference/global_objects/generator/return/index.html new file mode 100644 index 0000000000..1e77d8c64a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/return/index.html @@ -0,0 +1,95 @@ +--- +title: Generator.prototype.return() +slug: Web/JavaScript/Reference/Global_Objects/Generator/return +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return +--- +
{{JSRef}}
+ +

Метод return() возвращает полученное значение и останавливает генератор.

+ +

Синтаксис

+ +
gen.return(value)
+ +

Параметры

+ +
+
value
+
Значение для возврата.
+
+ +

Возвращаемое значение

+ +

Значение, которое было передано в виде аргумента.

+ +

Примеры

+ +

Использование return()

+ +

Следующий пример показывает простой генератор и метод return.

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen();
+
+g.next();        // { value: 1, done: false }
+g.return('foo'); // { value: "foo", done: true }
+g.next();        // { value: undefined, done: true }
+
+ +

Если return(value) вызывает генератор, который находится в уже "завершённом" состоянии, генератор останется в "завершённом" состоянии. Если аргумент не был передан, свойство value вернёт тот же объект, что и .next(). Если аргумент был передан, он будет установлен как значение свойства value возвращаемого объекта.

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen();
+g.next(); // { value: 1, done: false }
+g.next(); // { value: 2, done: false }
+g.next(); // { value: 3, done: false }
+g.next(); // { value: undefined, done: true }
+g.return(); // { value: undefined, done: true }
+g.return(1); // { value: 1, done: true }
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Generator.return")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/generator/throw/index.html b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html new file mode 100644 index 0000000000..cfdf5d3bbc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html @@ -0,0 +1,140 @@ +--- +title: Generator.prototype.throw() +slug: Web/JavaScript/Reference/Global_Objects/Generator/throw +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw +--- +
{{JSRef}}
+ +

Метод throw() возобновляет выполнение тела генератора кидая внутри исключение  и возвращает объект со свойствами done и value.

+ +

Синтаксис

+ +
gen.throw(exception)
+ +

Параметры

+ +
+
exception
+
Исключение, которое будет брошено. Во время отладки бывает полезно сделать его instanceof {{jsxref("Error")}}.
+
+ +

Возвращаемое значение

+ +

Объект с двумя свойствами:

+ + + +

Примеры

+ +

Использование throw()

+ +

В этом примере показан простой генератор и исключение,  которое выбрасывается используя метод throw. Исключение может быть поймано, используя, как обычно, блок try...catch.

+ +
function* gen() {
+  while(true) {
+    try {
+       yield 42;
+    } catch(e) {
+      console.log('Error caught!');
+    }
+  }
+}
+
+var g = gen();
+g.next();
+// { value: 42, done: false }
+g.throw(new Error('Something went wrong'));
+// "Error caught!"
+// { value: 42, done: false }
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}{{Spec2('ESDraft')}} 
+ +

Совместимость браузеров

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}13{{CompatGeckoDesktop(26)}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatSafari(10)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support5.1{{CompatVersionUnknown}}{{CompatGeckoMobile(26)}}{{CompatUnknown}}{{CompatUnknown}}10
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html new file mode 100644 index 0000000000..4cce9504e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html @@ -0,0 +1,108 @@ +--- +title: GeneratorFunction +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +
{{JSRef}}
+ +

GeneratorFunction constructor создает новый {{jsxref("Statements/function*", "generator function")}} объект. В JavaScript каждая функция-генератор - это фактически GeneratorFunction объект.

+ +

Обратите внимание, что GeneratorFunction - это не глобальный объект. Он может быть получен при выполнении следующего кода.

+ +
Object.getPrototypeOf(function*(){}).constructor
+
+ +

Синтаксис

+ +
new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)
+ +

Параметры

+ +
+
arg1, arg2, ... argN
+
Имена, используемые функцией как имена формальных аргументов. Каждый должен быть строкой, которая соответствует правильному JavaScript идентификатору или списком таких строк, разделенных запятыми; например "x", "theValue", или "a,b".
+
functionBody
+
A string containing the JavaScript statements comprising the function definition.
+
+ +

Description

+ +

{{jsxref("Statements/function*", "generator function")}} objects created with the GeneratorFunction constructor are parsed when the function is created. This is less efficient than declaring a generator function with a {{jsxref("Statements/function*", "function* expression")}} and calling it within your code, because such functions are parsed with the rest of the code.

+ +

All arguments passed to the function are treated as the names of the identifiers of the parameters in the function to be created, in the order in which they are passed.

+ +
+

Note: {{jsxref("Statements/function*", "generator function")}} created with the GeneratorFunction constructor do not create closures to their creation contexts; they always are created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the GeneratorFunction constructor was called. This is different from using {{jsxref("Global_Objects/eval", "eval")}} with code for a generator function expression.

+
+ +

Invoking the GeneratorFunction constructor as a function (without using the new operator) has the same effect as invoking it as a constructor.

+ +

Properties

+ +
+
GeneratorFunction.length
+
The GeneratorFunction constructor's length property whose value is 1.
+
{{jsxref("GeneratorFunction.prototype")}}
+
Allows the addition of properties to all generator function objects.
+
+ +

GeneratorFunction prototype object

+ +

Properties

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype', 'Properties')}}
+ +

GeneratorFunction instances

+ +

GeneratorFunction instances inherit methods and properties from {{jsxref("GeneratorFunction.prototype")}}. As with all constructors, you can change the constructor's prototype object to make changes to all GeneratorFunction instances.

+ +

Examples

+ +

Creating a generator function from a GeneratorFunction constructor

+ +
var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
+var g = new GeneratorFunction('a', 'yield a * 2');
+var iterator = g(10);
+console.log(iterator.next().value); // 20
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.GeneratorFunction")}}

+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html b/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html new file mode 100644 index 0000000000..c451547ad0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html @@ -0,0 +1,58 @@ +--- +title: GeneratorFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +
{{JSRef}}
+ +

Свойство GeneratorFunction.prototype представляет собой прототип объекта {{jsxref("GeneratorFunction")}} .

+ +

Описание

+ +

Объект {{jsxref("GeneratorFunction")}} наследуется из GeneratorFunction.prototype. GeneratorFunction.prototype не может быть изменён.

+ +

Свойства

+ +
+
GeneratorFunction.constructor
+
Изначальное значение {{jsxref("GeneratorFunction")}}.
+
GeneratorFunction.prototype.prototype
+
Значение %GeneratorPrototype%.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.GeneratorFunction.prototype")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/globalthis/index.html b/files/ru/web/javascript/reference/global_objects/globalthis/index.html new file mode 100644 index 0000000000..ce4cb48419 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/globalthis/index.html @@ -0,0 +1,88 @@ +--- +title: globalThis +slug: Web/JavaScript/Reference/Global_Objects/globalThis +tags: + - JavaScript + - Reference + - global + - globalThis + - this +translation_of: Web/JavaScript/Reference/Global_Objects/globalThis +--- +
{{jsSidebar("Objects")}}
+ +

Глобальное свойство globalThis содержит значение глобального this, который является глобальным объектом.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}
+ + + +

Синтаксис

+ +
globalThis
+
+ +

Описание

+ +

Исторически, для доступа к глобальному объекту использовался разный синтаксис в разных средах JavaScript. В вебе вы могли использовать {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} или {{domxref("Window.frames", "frames")}}, но в Worker можно использовать только self. В Node.js ничего из этого не работает, поэтому вы должны использовать global.

+ +

Ключевое слово this можно использовать внутри функций в нестрогом режиме. Но в строгом режиме внутри функций и в Модулях this равняется undefined. Вы можете использовать Function('return this')(), но среды, которые отключают {{jsxref("eval", "eval()")}}, такие как {{Glossary('CSP')}} в браузерах, препятствуют использованию {{jsxref("Function")}} таким способом.

+ +

Свойство globalThis даёт возможность стандартного доступа к глобальному значению this (и как следствие, к глобальному объекту) вне зависимости от окружения. В отличии от похожих свойств, таких как window и self, оно гарантирует работу как в среде, где есть window, так и в среде, где его нет. Таким образом вы можете получить доступ к глобальному объекту даже не зная в какой среде будет запущен код. Чтобы помочь запомнить название, просто запомните, что глобальное значение this равно globalThis.

+ +

HTML и WindowProxy

+ +

Во многих движках globalThis будет ссылкой на фактический глобальный объект, но в веб-браузерах из-за соображений безопасности iframe и cross-window он ссылается на {{jsxref ("Proxy")}} вокруг фактического глобального объекта (который вы не можете получить прямым доступом). Это различие редко актуально в обычном использовании, но его важно знать.

+ +

Название

+ +

Некоторые другие популярные имена, такие как self и global были исключены из рассмотрения из-за того, что они могут нарушать совместимость с существующим кодом. Смотрите документ по планированию именования для большей информации.

+ +

Примеры

+ +

До globalThis единственным кросс-платформенным путём получения глобального объекта в любой среде было Function('return this')(). Однако, это нарушает CSP в некоторых случаях. Например, es6-shim делает такую проверку:

+ +
var getGlobal = function () {
+  if (typeof self !== 'undefined') { return self; }
+  if (typeof window !== 'undefined') { return window; }
+  if (typeof global !== 'undefined') { return global; }
+  throw new Error('unable to locate global object');
+};
+
+var globals = getGlobal();
+
+if (typeof globals.setTimeout !== 'function') {
+  // в данном окружении не существует setTimeout!
+}
+
+ +

С globalThis дополнительный поиск глобального объекта в разных средах больше не нужен:

+ +
if (typeof globalThis.setTimeout !== 'function') {
+// в данном окружении не существует setTimeout!
+}
+ +

Спецификации

+ + + + + + + + + + +
Specification
{{SpecName("ESDraft", "#sec-globalthis", "globalThis")}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.globalThis")}}

+ +

Прогресс реализации

+ +

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

+ +

{{EmbedTest262ReportResultsTable("globalThis")}}

diff --git a/files/ru/web/javascript/reference/global_objects/index.html b/files/ru/web/javascript/reference/global_objects/index.html new file mode 100644 index 0000000000..b464ca01b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/index.html @@ -0,0 +1,166 @@ +--- +title: Стандартные встроенные объекты +slug: Web/JavaScript/Reference/Global_Objects +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects +--- +
{{jsSidebar("Objects")}}
+ +

Сводка

+ +

Эта глава описывает все стандартные встроенные объекты JavaScript, вместе с их методами и свойствами.

+ +
+

Термин «глобальные объекты» (или стандартные встроенные объекты) здесь не следует путать с самим глобальным объектом. Далее в главе под этим обозначением понимаются объекты в глобальном пространстве имён (но только, если не используется строгий режим ECMAScript 5! В противном случае они возвращают undefined). Сам же глобальный объект в глобальном пространстве имён доступен через оператор {{jsxref("Operators/this", "this")}}. На самом деле, глобальное пространство имён состоит из свойств глобального объекта (в том числе включая унаследованные свойства, если они есть).

+ +

Другие объекты в глобальном пространстве имён создаются либо с помощью пользовательских скриптов, либо предоставляются приложением хоста. Объекты хоста, доступные в контекстах браузера, задокументированы в справке по API. Для получения дополнительной информации о различии между DOM и ядром JavaScript, смотрите обзор технологии JavaScript.

+ +

Стандартные объекты (по категориям)

+ +

Значения

+ +

Глобальные свойства, возвращающие простое значение.

+ + + +

Функции

+ +

Глобальные функции, возвращающие результат определённой подпрограммы.

+ + + +

Фундаментальные объекты

+ +

Общие языковые объекты, функции и ошибки.

+ + + +

Числа и даты

+ +

Объекты, имеющие дело с числами, датами и математическими вычислениями.

+ + + +

Обработка текста

+ +

Объекты для манипулирования текстом.

+ + + +

Индексированные коллекции

+ +

Коллекции, упорядоченные по индексам. Массивоподобные объекты.

+ + + +

Коллекции по ключу

+ +

Коллекции объектов по ключу. Элементы обходятся в порядке вставки.

+ + + +

Структурированные данные

+ +

Буферы данных и Объектная нотация JavaScript (JavaScript Object Notation).

+ + + +

Объекты управляющих абстракций

+ + + +

Рефлексия

+ + + +

Интернационализация

+ +

Дополнения к ядру ECMAScript, отвечающие за функциональность, чувствительную к языку.

+ + + +

Нестандартные объекты

+ + + +

Прочее

+ + +
diff --git a/files/ru/web/javascript/reference/global_objects/infinity/index.html b/files/ru/web/javascript/reference/global_objects/infinity/index.html new file mode 100644 index 0000000000..143576e6b7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/infinity/index.html @@ -0,0 +1,98 @@ +--- +title: Infinity +slug: Web/JavaScript/Reference/Global_Objects/Infinity +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Infinity +--- +
{{jsSidebar("Objects")}}
+ +

Сводка

+ +

Глобальное свойство Infinity является числовым значением, представляющим бесконечность.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +
 
+ +

{{EmbedInteractiveExample("pages/js/globalprops-infinity.html")}}

+ + + +

Описание

+ +

Infinity является свойством глобального объекта, то есть, это переменная в глобальной области видимости.

+ +

Начальным значением Infinity является {{jsxref("Number.POSITIVE_INFINITY")}}. Значение Infinity (положительная бесконечность) больше любого другого числа, включая саму положительную бесконечность. Это значение ведёт себя как математическая бесконечность; например, любое положительное число, умноженное на Infinity даёт Infinity, а любое число, делённое на Infinity даёт 0.

+ +

В спецификации ECMAScript 5 Infinity является свойством только для чтения (реализована в JavaScript 1.8.5 / Firefox 4).

+ +

 

+ +

Примеры

+ +
console.log(Infinity          ); /* Infinity */
+console.log(Infinity + 1      ); /* Infinity */
+console.log(Math.pow(10, 1000)); /* Infinity */
+console.log(Math.log(0)       ); /* -Infinity */
+console.log(1 / Infinity      ); /* 0 */
+ +

 

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.2', 'Infinity')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Infinity")}}

+ +

 

+ +
 
+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/int16array/index.html b/files/ru/web/javascript/reference/global_objects/int16array/index.html new file mode 100644 index 0000000000..3178930fc7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int16array/index.html @@ -0,0 +1,201 @@ +--- +title: Int16Array +slug: Web/JavaScript/Reference/Global_Objects/Int16Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array +--- +
{{JSRef}}
+ +
 
+ +

Объект Int16Array представляет типизированный массив 16-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте {{jsxref("DataView")}}. Содержимое инициализируется значением 0. Создав экземпляр Int16Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Syntax

+ +
new Int16Array(); // new in ES2017
+new Int16Array(length);
+new Int16Array(typedArray);
+new Int16Array(object);
+new Int16Array(buffer [, byteOffset [, length]]);
+ +

For more information about the constructor syntax and the parameters, see TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size. 2 in the case of an Int16Array.
+
Int16Array.length
+
Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Int16Array.name")}}
+
Returns the string value of the constructor name. In the case of the Int16Array type: "Int16Array".
+
{{jsxref("TypedArray.prototype", "Int16Array.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Int16Array.from()")}}
+
Creates a new Int16Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Int16Array.of()")}}
+
Creates a new Int16Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Int16Array prototype

+ +

All Int16Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Int16Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Int16Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Int16Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Int16Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Int16Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Int16Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Int16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}
+
Returns a new Int16Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create an Int16Array:

+ +
// From a length
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+console.log(int16.length); // 2
+console.log(int16.BYTES_PER_ELEMENT); // 2
+
+// From an array
+var arr = new Int16Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Int16Array([21, 31]);
+var y = new Int16Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Int16Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var int16 = new Int16Array(iterable);
+// Int16Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Int16Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Int16Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Int16Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Int16Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Int16Array([1, 2, 3]);
+// TypeError: calling a builtin Int16Array constructor
+// without new is forbidden
+ +
var dv = new Int16Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/int32array/index.html b/files/ru/web/javascript/reference/global_objects/int32array/index.html new file mode 100644 index 0000000000..bcb0ba23a0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int32array/index.html @@ -0,0 +1,199 @@ +--- +title: Int32Array +slug: Web/JavaScript/Reference/Global_Objects/Int32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int32Array +--- +
{{JSRef}}
+ +

Объект Int32Array представляет типизированный массив 32-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Int32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Синтаксис

+ +
new Int32Array(); // добавлено в ES2017
+new Int32Array(length);
+new Int32Array(typedArray);
+new Int32Array(object);
+new Int32Array(buffer [, byteOffset [, length]]);
+ +

Для получения дополнительной информации о синтаксисе конструктора и параметрах TypedArray.

+ +

Свойства

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}}
+
Возвращает числовое значение размера элемента. 4 в случае с Int32Array.
+
Int32Array.length
+
Свойство статического размера, значение которого равно 3. Для актуального размера (колличества элементов), смотрите {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Int32Array.name")}}
+
Возвращяает строковое значение названия конструктора. В случае с тиопм Int32Array: "Int32Array".
+
{{jsxref("TypedArray.prototype", "Int32Array.prototype")}}
+
Прототип для TypedArray объектов.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.from", "Int32Array.from()")}}
+
Создаёт новый Int32Array из массивоподобного или итеративного объекта. Смотрите также {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Int32Array.of()")}}
+
Создаёт новый Int32Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Int32Array прототип

+ +

All Int32Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Свойства

+ +
+
Int32Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Int32Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Int32Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Int32Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Int32Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Int32Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Int32Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Int32Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Int32Array. Fixed at construction time and thus read only.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Int32Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Int32Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Int32Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Int32Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Int32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Int32Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Int32Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}}
+
Returns a new Int32Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Int32Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Примеры

+ +

Разные способы создания Int32Array:

+ +
// С указанием размера
+var int32 = new Int32Array(2);
+int32[0] = 42;
+console.log(int32[0]); // 42
+console.log(int32.length); // 2
+console.log(int32.BYTES_PER_ELEMENT); // 4
+
+// Из массива (Array)
+var arr = new Int32Array([21,31]);
+console.log(arr[1]); // 31
+
+// Из другого типизированного массива (TypedArray)
+var x = new Int32Array([21, 31]);
+var y = new Int32Array(x);
+console.log(y[0]); // 21
+
+// Из ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Int32Array(buffer, 0, 4);
+
+// Из итерируемого объекта (iterable)
+var iterable = function*(){ yield* [1,2,3]; }();
+var int32 = new Int32Array(iterable);
+// Int32Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationСтатусКоментарии
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Int32Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Int32Array")}}

+ +

Compatibility notes

+ +

Начиная с ECMAScript 2015, конструкторы Int32Array требуют оператор {{jsxref("Operators/new", "new")}}. Вызов Int32Array коструктора как функцию без оператора new, вызовет ошибку {{jsxref("TypeError")}}.

+ +
var dv = Int32Array([1, 2, 3]);
+// TypeError: calling a builtin Int32Array constructor
+// without new is forbidden
+ +
var dv = new Int32Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/int8array/index.html b/files/ru/web/javascript/reference/global_objects/int8array/index.html new file mode 100644 index 0000000000..68ac4ff10c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int8array/index.html @@ -0,0 +1,199 @@ +--- +title: Int8Array +slug: Web/JavaScript/Reference/Global_Objects/Int8Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int8Array +--- +
{{JSRef}}
+ +

Объект Int8Array представляет типизированный массив 8-разрядных целых значений. Содержимое инициализируется значением 0. Создав экземпляр Int8Array, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Syntax

+ +
new Int8Array(); // new in ES2017
+new Int8Array(length);
+new Int8Array(typedArray);
+new Int8Array(object);
+new Int8Array(buffer [, byteOffset [, length]]);
+ +

Для более детальной информации о синтаксисе конструктора смотрите TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}}
+
Возвращает числовое значение размера элемента массива. 1 в случае с Int8Array.
+
Int8Array.length
+
Статическая длина конструктора Int8Array, всегда равна 3 (т.к. конструктор принимает до 3 аргументов). Чтобы узнать длину созданого массива, see {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Int8Array.name")}}
+
Возращает строчное значение имени конструктора. В случае с Int8Array: "Int8Array".
+
{{jsxref("TypedArray.prototype", "Int8Array.prototype")}}
+
Прототип для TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Int8Array.from()")}}
+
Creates a new Int8Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Int8Array.of()")}}
+
Creates a new Int8Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Int8Array prototype

+ +

All Int8Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Int8Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Int8Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Int8Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Int8Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Int8Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Int8Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Int8Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Int8Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Int8Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Int8Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Int8Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Int8Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Int8Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Int8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Int8Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Int8Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}}
+
Returns a new Int8Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Int8Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create an Int8Array:

+ +
// From a length
+var int8 = new Int8Array(2);
+int8[0] = 42;
+console.log(int8[0]); // 42
+console.log(int8.length); // 2
+console.log(int8.BYTES_PER_ELEMENT); // 1
+
+// From an array
+var arr = new Int8Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Int8Array([21, 31]);
+var y = new Int8Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Int8Array(buffer, 1, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var int8 = new Int8Array(iterable);
+// Int8Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Int8Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Int8Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Int8Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Int8Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Int8Array([1, 2, 3]);
+// TypeError: calling a builtin Int8Array constructor
+// without new is forbidden
+ +
var dv = new Int8Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/internalerror/index.html b/files/ru/web/javascript/reference/global_objects/internalerror/index.html new file mode 100644 index 0000000000..50aa493d12 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/internalerror/index.html @@ -0,0 +1,113 @@ +--- +title: InternalError +slug: Web/JavaScript/Reference/Global_Objects/InternalError +tags: + - Error + - InternalError + - JavaScript + - Non-standard + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Объект InternalError представляет ошибку, возникающую внутри движка JavaScript. Например: "InternalError: too much recursion".

+ +

Синтаксис

+
new InternalError([message[, fileName[, lineNumber]]])
+ +

Параметры

+
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+

Исключение InternalError выбрасывается при возникновении внутренней ошибки в движке JavaScript.

+

Как правило, эти ошибки связаны с тем, что что-то стало слишком большим, либо чего-то стало слишком много, например:

+ + +

Свойства

+
+
{{jsxref("InternalError.prototype")}}
+
Позволяет добавлять свойства в объект InternalError.
+
+ +

Методы

+

Глобальный объект InternalError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта InternalError

+ +

Свойства

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/InternalError/prototype', 'Properties')}}
+ +

Методы

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/InternalError/prototype', 'Methods')}}
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html new file mode 100644 index 0000000000..31c8829a90 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html @@ -0,0 +1,99 @@ +--- +title: InternalError.prototype +slug: Web/JavaScript/Reference/Global_Objects/InternalError/prototype +tags: + - Error + - InternalError + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Свойство InternalError.prototype представляет прототип конструктора объекта {{jsxref("InternalError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("InternalError")}} наследуются от объекта InternalError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
InternalError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}
+
Сообщение ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("InternalError")}} не содержит собственных методов, экземпляры {{jsxref("InternalError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html new file mode 100644 index 0000000000..bcb34c805e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html @@ -0,0 +1,125 @@ +--- +title: Intl.Collator.prototype.compare +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare +tags: + - Collator + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare +--- +
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+

Свойство Intl.Collator.prototype.compare возвращает функцию-геттер, сравнивающую две строки согласно порядку сортировки соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}.

+ +

Синтаксис

+
collator.compare(string1, string2)
+ +

Параметры

+
+
string1
+
string2
+
Сравниваемые друг с другом строки.
+
+ +

Описание

+

Функция, возвращённая гетером compare, возвращает число, указывающее, как строки string1 и string2 сравниваются друг с другом в соответствии с порядком сортировки объекта {{jsxref("Global_Objects/Collator", "Collator")}}: отрицательное значение, если строка string1 предшествует строке string2; положительное значение, если строка string1 следует за строкой string2; 0, если строки считаются равными.

+ +

Примеры

+ +

Пример: использование функции compare для сортировки массива

+

Использование функции, возвращённой геттером compare, для сортировки массивов. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/Collator", "Collator")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.sort()")}} напрямую.

+
var a = ['Offenbach', 'Österreich', 'Odenwald'];
+var collator = new Intl.Collator('de-u-co-phonebk');
+a.sort(collator.compare);
+console.log(a.join(', '));
+// → "Odenwald, Österreich, Offenbach"
+
+ +

Пример: использование функции compare для поиска в массиве

+

Использование функции, возвращённой геттером compare, для поиска совпадающих строк в массиве:

+
var a = ['Congrès', 'congres', 'Assemblée', 'poisson'];
+var collator = new Intl.Collator('fr', { usage: 'search', sensitivity: 'base' });
+var s = 'congres';
+var matches = a.filter(function(v) {
+  return collator.compare(v, s) === 0;
+});
+console.log(matches.join(', '));
+// → "Congrès, congres"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/index.html new file mode 100644 index 0000000000..cf3a3d3e52 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/index.html @@ -0,0 +1,187 @@ +--- +title: Intl.Collator +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator +tags: + - Collator + - Internationalization + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator +--- +
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+

Объект Intl.Collator является конструктором сортировщиков — объектов, включающих языко-зависимое сравнение строк.

+ +

Синтаксис

+
new Intl.Collator([locales[, options]])
+Intl.Collator.call(this[, locales[, options]])
+ +

Параметры

+
+
locales
+
+

Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:

+
+
co
+
Варианты сортировки для конкретных локалей. Возможные значения включают в себя: "big5han", "dict", "direct", "ducet", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad" и "unihan". Значения "standard" и "search" игнорируются; они заменяются свойством usage аргумента options (смотрите ниже).
+
kn
+
Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются "true" и "false". Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет.
+
kf
+
Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются "upper", "lower" и "false" (используется значение по умолчанию из локали). Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет.
+
+
+
options
+
+

Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:

+
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
usage
+
Определяет, используется ли сравнение для сортировки или для поиска совпадающих строк. Возможными значениями являются "sort" и "search"; значением по умолчанию является "sort".
+
sensitivity
+
+

Определяет, какие различия в строках должны приводить к ненулевому результату. Возможными значениями являются:

+
    +
  • "base": считаются различными только строки, отличающиеся базовыми буквами. Примеры: a ≠ b, a = á, a = A.
  • +
  • "accent": считаются различными только строки, отличающиеся базовыми буквами или акцентами и другими диакритическими знаками. Примеры: a ≠ b, a ≠ á, a = A.
  • +
  • "case": считаются различными только строки, отличающиеся базовыми буквами или регистром букв. Примеры: a ≠ b, a = á, a ≠ A.
  • +
  • "variant": считаются различными строки, отличающиеся базовыми буквами, акцентами и другими диакритическими знаками или регистром букв. Также во внимание могут приниматься и другие различия. Примеры: a ≠ b, a ≠ á, a ≠ A.
  • +
+

Значением по умолчанию является "variant" при использовании свойства usage, равного "sort", и зависит от локали при использовании свойства usage, равного "search".

+
+
ignore­Punctua­tion
+
Определяет, должна ли игнорироваться пунктуация. Возможными значениями являются true и false; значением по умолчанию является false.
+
numeric
+
Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются true и false; значением по умолчанию является false. Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.
+
caseFirst
+
Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются "upper", "lower" и "false" (используется значение по умолчанию из локали); значением по умолчанию является "false". Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.
+
+
+
+ +

Описание

+ +

Свойства

+
+
{{jsxref("Collator.prototype", "Intl.Collator.prototype")}}
+
Позволяет добавлять свойства ко всем объектам.
+
+ +

Методы

+
+
{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
+
Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.
+
+ +

Экземпляры объекта Collator

+ +

Свойства

+

Экземпляры Collator наследуют следующие свойства из своего прототипа:

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Properties')}}
+ +

Методы

+

Экземпляры Collator наследуют следующие методы из своего прототипа:

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование Collator

+

Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:

+
console.log(new Intl.Collator().compare('a', 'c')); // → отрицательное значение
+console.log(new Intl.Collator().compare('c', 'a')); // → положительное значение
+console.log(new Intl.Collator().compare('a', 'a')); // → 0
+
+

Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только чтобы при следовании строки до значение было отрицательным, а после — положительным.

+ +

Пример: использование аргумента locales

+

Результаты, предоставляемые функцией {{jsxref("Collator.prototype.compare()")}} сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+
// В немецком буква ä идёт рядом с буквой a
+console.log(new Intl.Collator('de').compare('ä', 'z'));
+// → отрицательное значение
+
+// В шведском буква ä следует после буквы z
+console.log(new Intl.Collator('sv').compare('ä', 'z'));
+// → положительное значение
+
+ +

Пример: использование аргумента options

+

Результат, предоставляемый функцией {{jsxref("Collator.prototype.compare()")}}, может быть настроен с помощью аргумента options:

+
// В немецком буква a является базовой для буквы ä
+console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a'));
+// → 0
+
+// В шведском буквы ä и a являются двумя разными базовыми буквами
+console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a'));
+// → положительное значение
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}
diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html new file mode 100644 index 0000000000..1a9983f373 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.Collator.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype +tags: + - Collator + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator +--- +
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+

Свойство Intl.Collator.prototype представляет объект прототипа конструктора {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Смотрите {{jsxref("Global_Objects/Collator", "Collator")}} для описания экземпляров Intl.NumberFormat.

+

Экземпляры {{jsxref("Global_Objects/Collator", "Intl.Collator")}} наследуются от Intl.NumberFormat.prototype. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.

+ +

Свойства

+
+
Intl.Collator.prototype.constructor
+
Ссылка на {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.
+
{{jsxref("Collator.compare", "Intl.Collator.prototype.compare")}}
+
Геттер; возвращает функцию, сравнивающую две строки согласно порядку сортировки этого объекта {{jsxref("Global_Objects/Collator", "Collator")}}.
+
+ +

Методы

+
+
{{jsxref("Collator.resolvedOptions", "Intl.Collator.prototype.resolvedOptions()")}}
+
Возвращает новый объект со свойствами, отражающими локаль и опции сравнения строк, вычисленные при инициализации объекта.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-10.2.1', 'Intl.Collator.prototype')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html new file mode 100644 index 0000000000..001b0a86ed --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.Collator.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions +tags: + - Collator + - Internationalization + - JavaScript + - Method + - NeedsExample + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions +--- +
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+

Метод Intl.Collator.prototype.resolvedOptions() возвращает новый объект со свойствами, отражающими локаль и параметры сравнения строк, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}.

+ +

Синтаксис

+
collator.resolvedOptions()
+ +

Описание

+

Возвращает новый объект со свойствами, отражающими локаль и параметры сравнения строк, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}. Объект содержит следующие свойства:

+
+
locale
+
Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство locale.
+
usage
+
sensitivity
+
ignorePunctuation
+
Значения, предоставленные для этих свойств в аргументе options, либо значения по умолчанию.
+
collation
+
Значение, запрошенное ключом расширения Unicode "co", если он поддерживается для локали locale, либо значение "default".
+
numeric
+
caseFirst
+
Значения, предоставленные для этих свойств в аргументе options или запрошенные ключами расширения Unicode "kn" и "kf", либо значения по умолчанию. Если реализация не поддерживает эти свойства, они будут опущены.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html new file mode 100644 index 0000000000..5aca430d38 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.Collator.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf +tags: + - Collator + - Internationalization + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf +--- +
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+

Метод Intl.Collator.supportedLocalesOf() возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при сравнении строк без отката к локали по умолчанию среды выполнения.

+ +

Синтаксис

+
Intl.Collator.supportedLocalesOf(locales[, options])
+ +

Параметры

+
+
locales
+
Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.
+
options
+
+

Необязательный параметр. Объект, который может содержать следующее свойство:

+
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
+
+
+ +

Описание

+

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

+ +

Примеры

+ +

Пример: использование supportedLocalesOf

+

Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское сравнение строк, метод supportedLocalesOf вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка pinyin не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма "lookup" — сопоставление "best fit" может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.

+
var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.Collator.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html new file mode 100644 index 0000000000..ff24de6317 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html @@ -0,0 +1,123 @@ +--- +title: Intl.DateTimeFormat.prototype.format +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format +tags: + - DateTimeFormat J + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format +--- +
{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
+ +

Сводка

+

Свойство Intl.DateTimeFormat.prototype.format возвращает функцию-геттер, форматирующую дату согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.

+ +

Синтаксис

+
dateTimeFormat.format(date)
+ +

Параметры

+
+
date
+
Дата для форматирования.
+
+ +

Описание

+

Функция, возвращённая геттером format, форматирует дату согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.

+ +

Примеры

+ +

Пример: использование функции format

+

Использование функции, возвращённой геттером format, для форматирования одной даты, здесь пример для сербского языка:

+
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+var dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options);
+console.log(dateTimeFormat.format(new Date()));
+// → "недеља, 7. април 2013."
+
+ +

Пример: использование функции format вместе с map

+

Использование функции, возвращённой геттером format, для форматирования всех дат в массиве. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.map()")}} напрямую.

+
var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
+var options = { year: 'numeric', month: 'long' };
+var dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options);
+var formatted = a.map(dateTimeFormat.format);
+console.log(formatted.join('; '));
+// → "setembro de 2012; dezembro de 2012; abril de 2012"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html new file mode 100644 index 0000000000..acfff0a5a2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html @@ -0,0 +1,169 @@ +--- +title: Intl.DateTimeFormat.prototype.formatToParts() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts +tags: + - DateTimeFormat + - Intl + - JavaScript + - Method + - Prototype + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts +--- +
{{JSRef}}
+ +
Метод Intl.DateTimeFormat.prototype.formatToParts() позволяет выполнять форматирование строк с учётом форматирования DateTimeFormat.
+ +

Синтаксис

+ +
Intl.DateTimeFormat.prototype.formatToParts(date)
+ +

Параметры

+ +
+
date {{optional_inline}}
+
Дата, которую нужно отформатировать.
+
+ +

Возвращаемое значение

+ +

Массив объектов {{jsxref("Array")}}, содержащий отформатированную дату по частям.

+ +

Описание

+ +

Метод formatToParts() полезен для пользовательского форматирования строки даты. Он возвращает массив объектов {{jsxref("Array")}}, содерщащий специфичные для данного места токены, из которых можно выстроить пользовательскую строку, которая сохранит специфичные для данного места части. Структура возвращаемого значения методом formatToParts() выглядит так:

+ +
[
+  { type: 'day', value: '17' },
+  { type: 'weekday', value: 'Monday' }
+]
+ +

Возможные типы:

+ +
+
day
+
Строка, используемая для дня, например, "17".
+
dayPeriod
+
Строка, используемая для времени суток, например, "AM" или "PM".
+
era
+
Строка, используемая для эры, например, "BC" или "AD".
+
hour
+
Строка, используемая для часа, например, "3" или "03".
+
literal
+
Строка, используемая для разделения значений даты и времени, например, "/", ",", "o'clock", "de" и другие.
+
minute
+
Строка, используемая для минут, например, "00".
+
month
+
Строка, используемая для месяца, например, "12".
+
second
+
Строка, используемая для секунд, например, "07" или "42".
+
timeZoneName
+
Строка, используемая для названия временной зоны, например, "UTC".
+
weekday
+
Строка, используемая для дня недели, например, "M", "Monday" или "Montag".
+
year
+
Строка, используемая для года, например, "2012" или "96".
+
+ +

Примеры

+ +

DateTimeFormat выводит локализированные строки, которые нельзя изменять напрямую:

+ +
var date = Date.UTC(2012, 11, 17, 3, 0, 42);
+
+var formatter = new Intl.DateTimeFormat('ru', {
+  weekday: 'long',
+  year: 'numeric',
+  month: 'numeric',
+  day: 'numeric',
+  hour: 'numeric',
+  minute: 'numeric',
+  second: 'numeric',
+  hour12: true,
+  timeZone: 'UTC'
+});
+
+formatter.format(date);
+// "понедельник, 17.12.2012 г., 3:00:42 AM"
+
+ +

Однако, во многих пользовательских интерфейсах есть желание настроить форматирование этой строки. Метод formatToParts включает форматирование строки с учётом местности, созданной форматером DateTimeFormat, предоставляя вам строку по частям:

+ +
formatter.formatToParts(date);
+
+// возвращаемое значение:
+[
+  { type: 'weekday',   value: 'понедельник'},
+  { type: 'literal',   value: ', '         },
+  { type: 'day',       value: '17'         },
+  { type: 'literal',   value: '.'          },
+  { type: 'month',     value: '12'         },
+  { type: 'literal',   value: '.'          },
+  { type: 'year',      value: '2012'       },
+  { type: 'literal',   value: 'г., '       },
+  { type: 'hour',      value: '3'          },
+  { type: 'literal',   value: ':'          },
+  { type: 'minute',    value: '00'         },
+  { type: 'literal',   value: ':'          },
+  { type: 'second',    value: '42'         },
+  { type: 'literal',   value: ' '          },
+  { type: 'dayPeriod', value: 'AM'         }
+]
+
+ +

Теперь информация доступна по отдельности и может быть отформатирована и объединена снова в пользавотельском порядке. Например, используя {{jsxref("Array.prototype.map()")}}, стрелочные функции, инструкцию switch, шаблонные строки и {{jsxref("Array.prototype.reduce()")}}.

+ +
var dateString = formatter.formatToParts(date).map(({type, value}) => {
+  switch (type) {
+    case 'dayPeriod': return `<b>${value}</b>`;
+    default : return value;
+  }
+}).reduce((string, part) => string + part);
+
+ +

Здесь время суток будет выделено жирным с использованием метода formatToParts().

+ +
console.log(formatter.format(date));
+// "понедельник, 17.12.2012 г., 3:00:42 AM"
+
+console.log(dateString);
+// "понедельник, 17.12.2012 г., 3:00:42 <b>AM</b>"
+ +

Полифилл

+ +

Полифил для данного метода доступен здесь.

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецфикацияСтатусКомментарий
{{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.formatToParts', 'Intl.DateTimeFormat.prototype.formatToParts')}}{{Spec2('ES Int Draft')}}Изначальное определение
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Intl.DateTimeFormat.formatToParts")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html new file mode 100644 index 0000000000..2bd44c9522 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html @@ -0,0 +1,276 @@ +--- +title: Intl.DateTimeFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +tags: + - DateTimeFormat + - Internationalization + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +--- +
{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
+ +

Сводка

+ +

Объект Intl.DateTimeFormat является конструктором объектов, включающих языко-зависимое форматирование даты и времени.

+ +

Синтаксис

+ +
new Intl.DateTimeFormat([locales[, options]])
+Intl.DateTimeFormat.call(this[, locales[, options]])
+ +

Параметры

+ +
+
locales
+
+

Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:

+ +
+
nu
+
Используемая система нумерации. Возможные значения включают в себя: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
+
ca
+
Используемый календарь. Возможные значения включают в себя: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
+
+
+
options
+
+

Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:

+ +
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
timeZone
+
Используемый часовой пояс. Единственным значением, которые реализации обязаны распознавать, является "UTC"; значением по умолчанию является часовой пояс по умолчанию среды выполнения. Реализации также могут распознавать названия часовых поясов из базы данных часовых поясов IANA, например "Asia/Shanghai", "Asia/Kolkata" или "America/New_York".
+
hour12
+
Определяет, использовать ли 12-часовой формат времени (в противовес 24-часовому). Возможными значениями являются true и false; значение по умолчанию зависит от локали.
+
formatMatcher
+
Используемый алгоритм сопоставления форматов. Возможными значениями являются "basic" и "best fit"; значением по умолчанию является "best fit". Смотрите следующий абзац, объясняющий, как использовать это свойство.
+
+ +

Следующие свойства описывают компоненты даты/времени, используемые в форматированном выводе, и их желаемые представления. Реализации должны поддерживать, как минимум, следующие подмножества:

+ +
    +
  • weekday, year, month, day, hour, minute, second
  • +
  • weekday, year, month, day
  • +
  • year, month, day
  • +
  • year, month
  • +
  • month, day
  • +
  • hour, minute, second
  • +
  • hour, minute
  • +
+ +

Также реализации могут поддерживать другие подмножества и запросы будут сравниваться со всеми доступными подмножествами представлений для поиска наилучшего соответствия. Для такого сравнения доступно два алгоритма, нужный из которых выбирается свойством formatMatcher: чётко определённый алгоритм "basic" и зависящий от реализации алгоритм "best fit".

+ +
+
weekday
+
Представление дней недели. Возможными значениями являются "narrow", "short" и "long".
+
era
+
Представление эр. Возможными значениями являются "narrow", "short" и "long".
+
year
+
Представление лет. Возможными значениями являются "numeric" и "2-digit".
+
month
+
Представление месяцев. Возможными значениями являются "numeric", "2-digit", "narrow", "short" и "long".
+
day
+
Представление дней. Возможными значениями являются "numeric" и "2-digit".
+
hour
+
Представление часов. Возможными значениями являются "numeric" и "2-digit".
+
minute
+
Представление минут. Возможными значениями являются "numeric" и "2-digit".
+
second
+
Представление секунд. Возможными значениями являются "numeric" и "2-digit".
+
timeZoneName
+
Представление названий часовых поясов. Возможными значениями являются "short" и "long".
+
+ +

Значение по умолчанию для всех свойств компонентов даты/времени является значение {{jsxref("Global_Objects/undefined", "undefined")}},но если все свойства компонентов будут равны {{jsxref("Global_Objects/undefined", "undefined")}}, то будет предполагаться, что значением свойств year, month и day является "numeric".

+
+
+ +

Описание

+ +

Свойства

+ +
+
{{jsxref("DateTimeFormat.prototype", "Intl.DateTimeFormat.prototype")}}
+
Позволяет добавлять свойства ко всем объектам.
+
+ +

Методы

+ +
+
{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}
+
Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.
+
+ +

Экземпляры объекта DateTimeFormat

+ +

Свойства

+ +

Экземпляры DateTimeFormat наследуют следующие свойства из своего прототипа:

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype', 'Properties')}}
+ +

Методы

+ +

Экземпляры DateTimeFormat наследуют следующие методы из своего прототипа:

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование DateTimeFormat

+ +

При базовом использовании без определения локали DateTimeFormat использует локаль и опции по умолчанию.

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Вывод format без аргументов зависит от реализации,
+// локали по умолчанию и часового пояса по умолчанию
+console.log(new Intl.DateTimeFormat().format(date));
+// → "12/19/2012", если код запущен с локалью en-US и часовым поясом America/Los_Angeles
+
+ +

Пример: использование аргумента locales

+ +

Этот пример показывает некоторые локализованные форматы даты и времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Форматирование ниже предполагает, что местный часовой пояс равен
+// America/Los_Angeles для локали США
+
+// В америкаском английском используется порядок месяц-день-год
+console.log(new Intl.DateTimeFormat('en-US').format(date));
+// → "12/19/2012"
+
+// В британском английском используется порядок день-месяц-год
+console.log(new Intl.DateTimeFormat('en-GB').format(date));
+// → "20/12/2012"
+
+// В корейском используется порядок год-месяц-день
+console.log(new Intl.DateTimeFormat('ko-KR').format(date));
+// → "2012. 12. 20."
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(new Intl.DateTimeFormat('ar-EG').format(date));
+// → "٢٠‏/١٢‏/٢٠١٢"
+
+// В Японии приложения могут захотеть использовать японский календарь,
+// в котором 2012 год являеся 24-м годом эры Хейсей
+console.log(new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(date));
+// → "24/12/20"
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(new Intl.DateTimeFormat(['ban', 'id']).format(date));
+// → "20/12/2012"
+
+ +

Пример: использование аргумента options

+ +

Формат даты и времени может быть настроен с помощью аргумента options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Запрашиваем день недели вместе с длинным форматом даты
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(new Intl.DateTimeFormat('de-DE', options).format(date));
+// → "Donnerstag, 20. Dezember 2012"
+
+// Приложение может захотеть использовать UTC и показать это
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → "Thursday, December 20, 2012, GMT"
+
+// Иногда нам нужна большая точность
+options = {
+  hour: 'numeric', minute: 'numeric', second: 'numeric',
+  timeZoneName: 'short'
+};
+console.log(new Intl.DateTimeFormat('en-AU', options).format(date));
+// → "2:00:00 pm AEDT"
+
+// Иногда даже в США нужен 24-часовой формат времени
+options = {
+  year: 'numeric', month: 'numeric', day: 'numeric',
+  hour: 'numeric', minute: 'numeric', second: 'numeric',
+  hour12: false
+};
+console.log(date.toLocaleString('en-US', options));
+// → "12/19/2012, 19:00:00"
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-12.1', 'Intl.DateTimeFormat')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}
+ {{bug("864843")}}
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}
diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html new file mode 100644 index 0000000000..dfaf7d5c92 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.DateTimeFormat.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +--- +
{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
+ +

Сводка

+

Свойство Intl.DateTimeFormat.prototype представляет объект прототипа конструктора {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Смотрите {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}} для описания экземпляров Intl.NumberFormat.

+

Экземпляры {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} наследуются от Intl.NumberFormat.prototype. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.

+ +

Свойства

+
+
Intl.DateTimeFormat.prototype.constructor
+
Ссылка на {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.
+
{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}}
+
Геттер; возвращает функцию, форматирующую дату согласно локали и опциям форматирования этого объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.
+
+ +

Методы

+
+
{{jsxref("DateTimeFormat.resolvedOptions", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}
+
Возвращает новый объект со свойствами, отражающими локаль и опции форматирования, вычисленные при инициализации объекта.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-12.2.1', 'Intl.DateTimeFormat.prototype')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html new file mode 100644 index 0000000000..a1cb4bff8b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html @@ -0,0 +1,116 @@ +--- +title: Intl.DateTimeFormat.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Method + - NeedsExample + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions +--- +
{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
+ +

Сводка

+

Метод Intl.DateTimeFormat.prototype.resolvedOptions() возвращает новый объект со свойствами, отражающими локаль и параметры форматирования даты и времени, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.

+ +

Синтаксис

+
dateTimeFormat.resolvedOptions()
+ +

Описание

+

Возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}. Объект содержит следующие свойства:

+
+
locale
+
Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство locale.
+
calendar
+
numberingSystem
+
Значения, запрошенные ключами расширения Unicode "ca" и "nu", либо значения по умолчанию.
+
timeZone
+
Значение, предоставленное для этого свойства в аргументе options; {{jsxref("Global_Objects/undefined", "undefined")}} (представляет временную зону по умолчанию среды выполнения), если ничего не было предоставлено. Предупреждение: приложения не должны полагаться на возврат {{jsxref("Global_Objects/undefined", "undefined")}}, поскольку будущие версии вместо него могут возвращать строковое значение, идентифицирующее временную зону по умолчанию среды выполнения.
+
hour12
+
Значение, предоставленное для этого свойства в аргументе options, либо значение по умолчанию.
+
weekday
+
era
+
year
+
month
+
day
+
hour
+
minute
+
second
+
timeZoneName
+
Значения, получившиеся в результате объединения соответствующих свойств в аргументе options и доступных комбинаций и представлений форматирования даты/времени в выбранной локали. Некоторые из этих свойств могут не присутствовать, что означает, что соответствующие компоненты не попадают в форматированный вывод.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-12.3.3', 'Intl.DateTimeFormat.prototype.resolvedOptions')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html new file mode 100644 index 0000000000..54a485d2c1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html @@ -0,0 +1,118 @@ +--- +title: Intl.DateTimeFormat.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf +--- +
{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}
+ +

Сводка

+

Метод Intl.DateTimeFormat.supportedLocalesOf() возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при форматировании даты и времени без отката к локали по умолчанию среды выполнения.

+ +

Синтаксис

+
Intl.DateTimeFormat.supportedLocalesOf(locales[, options])
+ +

Параметры

+
+
locales
+
Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.
+
options
+
+

Необязательный параметр. Объект, который может содержать следующее свойство:

+
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
+
+
+ +

Описание

+

Возвращает массив с подмножеством языковых меток, предоставленных в аргументе locales. Возвращаются те языковые метки, для которых среда выполнения поддерживает форматирование даты и времени без отката к локали по умолчанию; при поиске используется предоставленный алгоритм сопоставления локалей.

+ +

Примеры

+ +

Пример: использование supportedLocalesOf

+

Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское форматирование даты и времени, метод supportedLocalesOf вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка pinyin не относится к форматированию даты и времени, не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма "lookup" — сопоставление "best fit" может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.

+
var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.DateTimeFormat.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html b/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html new file mode 100644 index 0000000000..9a433c2776 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html @@ -0,0 +1,73 @@ +--- +title: Intl.getCanonicalLocales() +slug: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales +tags: + - Intl + - JavaScript + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales +--- +
{{JSRef}}
+ +

Метод Intl.getCanonicalLocales() возвращает массив, содержащий канониченские коды языков. Повторяющиеся значения будут отброшены и элементы будут проверены на соответствие структуры языковых тегов.

+ +
{{EmbedInteractiveExample("pages/js/intl-getcanonicallocales.html")}}
+ + + +

Синтаксис

+ +
Intl.getCanonicalLocales(locales)
+ +

Парамерты

+ +
+
locales
+
Список {{jsxref("String")}} значений, из которых нужно получить канонические коды языков.
+
+ +

Возвращаемое значение

+ +

Массив, содержащий канонические коды языков

+ +

Примеры

+ +
Intl.getCanonicalLocales('RU-RU'); // ["ru-RU"]
+Intl.getCanonicalLocales(['RU-RU', 'Fr']); // ["ru-RU", "fr"]
+
+Intl.getCanonicalLocales('RU_RU');
+// RangeError:'EN_US' is not a structurally valid language tag
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES Int Draft', '#sec-intl.getcanonicallocales', 'Intl.getCanonicalLocales')}}{{Spec2('ES Int Draft')}}Первоначальное определение
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Intl.getCanonicalLocales")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/intl/index.html b/files/ru/web/javascript/reference/global_objects/intl/index.html new file mode 100644 index 0000000000..cebbeccc60 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/index.html @@ -0,0 +1,117 @@ +--- +title: Intl +slug: Web/JavaScript/Reference/Global_Objects/Intl +tags: + - Internationalization + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Intl +--- +
{{JSRef("Global_Objects", "Intl", "Collator,DateTimeFormat,NumberFormat")}}
+ +

Сводка

+ +

Объект Intl является пространством имён для API интернационализации ECMAScript, предосталяющим языко-зависимое сравнение строк, форматирование чисел и дат со временем. Конструкторы объектов {{jsxref("Global_Objects/Collator", "Collator")}}, {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} и {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}} являются свойствами объекта Intl. На этой странице описаны эти свойства, а также общая функциональность конструкторов интернационализации и других языко-зависимых функций.

+ +

Свойства

+ +
+
{{jsxref("Global_Objects/Collator", "Intl.Collator")}}
+
Конструктор сортировщиков — объектов, включающих языко-зависимое сравнение строк.
+
{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}
+
Конструктор объектов, включающих языко-зависимое форматирование даты и времени.
+
{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}
+
Конструктор объектов, включающих языко-зависимое форматирование чисел.
+
+ +

Methods

+ +
+
{{jsxref("Intl.getCanonicalLocales()")}}
+
Returns canonical locale names.
+
+ +

Идентификация и согласование локали

+ +

Конструкторы интернационализации, а также некоторые языко-зависимые методы других конструкторов (перечисленные в разделе {{anch("See_also", "Смотрите также")}}) используют общий шаблон для идентификации локалей и определения используемой локали: они все принимают аргументы locales и options и согласовывают запрошенную локаль (локали) с поддерживаемыми локалями согласно алгоритму, определённому свойством options.localeMatcher.

+ +

Аргумент locales

+ +

Аргумет locales должен быть либо строкой, содержащей языковую метку BCP 47, либо массивом таких языковых меток. Если аргумент locales не предоставлен или не определён, используется локаль по умолчанию среды выполнения.

+ +

Языковая метка BCP 47 однозначно определяет язык или локаль (разница между ними весьма расплывчата). В своей самой общей форме она может содержать в следующем порядке: код языка, код письменности и код страны, разделённые символами дефиса. Примеры:

+ + + +

Подметки, определяющие языки, письменности, страны (регионы) и (используется не часто) варианты в языковых метках BCP 47 могут быть найдены в Реестре языковых подметок IANA.

+ +

BCP 47 также позволяет использовать расширения, и одно из них имеет значение для функций интернационализации JavaScript: это расширение "u" (Unicode). Оно может использоваться для запрашивания настраиваемого языко-зависимого поведения объектов {{jsxref("Global_Objects/Collator", "Collator")}}, {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} или {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}. Примеры:

+ + + +

Согласование локали

+ +

Аргумент locales, после вырезания всех расширений Unicode, интерпретируется как приоритетный запрос из приложения. Среда выполнения сравнивает его с доступными локалями в выбирает наилучшую из имеющихся. Существует два алгоритма сравнения: сопоставление "lookup" (поиск) следует алгоритму поиска, определённому в BCP 47; сопоставление "best fit" (наилучший подходящий) позволяет среде выполнения предоставлять локаль, которая, как минимум, но возможно и лучше, подходит для запроса, нежели локаль, найденная с помощью алгоритма поиска. Если приложение не предоставляет аргумент locales или среда выполнения не имеет локали, соответствующей запросу, то используется локаль по умолчанию для среды выполнения. Метод сопоставления можно выбрать с помощью свойства аргумента options (смотрите ниже).

+ +

Если выбранная языковая метка содержит подстроку расширения Unicode, это расширение будет использоваться для настройки сконструированного объекта или поведения функции. Каждый конструктор или функция поддерживают только определённое подмножество ключей, определённых расширением Unicode, и поддерживаемые значения часто зависят от языковой метки. Например, ключ "co" (сравнение) поддерживается только объектом {{jsxref("Global_Objects/Collator", "Collator")}}, а его значение "phonebk" поддерживается только для немецкого языка.

+ +

Аргумент options

+ +

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

+ +

Одно свойство поддерживается для всех языко-зависимых конструкторов: свойство localeMatcher, чьим значением должна быть одна из строк "lookup" или "best fit" и которое выбирает один из алгоритмов сопоставления локалей, описанных выше.

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-8', 'Intl')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
Таблица совместимости на этой странице генерируется из структурированных данных. Чтобы внести свои изменения в эти данные, вы можете перейти на страницу https://github.com/mdn/browser-compat-data и отослать нам pull request.
+ +
+

{{Compat("javascript.builtins.Intl")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html new file mode 100644 index 0000000000..cac65c8d03 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html @@ -0,0 +1,104 @@ +--- +title: Intl.ListFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat +tags: + - Experimental + - Internationalization + - Intl + - JavaScript + - ListFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat +--- +

{{JSRef}}

+ +

Объект Intl.ListFormat представляет собой конструктор объектов, включающих языко-зависимое форматирование списков.

+ +
{{EmbedInteractiveExample("pages/js/intl-listformat.html")}}
+ + + +

Синтаксис

+ +
new Intl.ListFormat([locales[, options]])
+
+ +

Параметры

+ +
+
locales
+
+

Необязательный параметр. Строка с языковой меткой BCP 47 или массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на странице {{jsxref("Global_Objects/Intl", "Intl", "#Locale_identification_and_negotiation", 1)}}.

+
+
options
+
Необязательный параметр. Объект с некоторыми или всеми из следующих свойств: +
    +
  • localeMatcher
    + Используемый алгоритм сопоставления локалей. Возможные значения: "lookup" и "best fit"; по умолчанию используется "best fit". Подробнее см. на странице Intl.
  • +
  • type
    + Формат вывода. Возможные значения: "conjunction" для вывода значений через "и" (используется по умолчанию, прим. A, B, и C) или "disjunction" для вывода значений через "или" (прим. A, B, или C). "unit" для вывода значений с единицами измерений (прим. 5 фунтов, 12 унций).
  • +
  • style
    + Стиль форматирования вывода. Возможные значения: "long" (используется по умолчанию, прим. A, B, и C); "short" или "narrow" (прим. A, B, C). При использовании narrow, параметр type может принимать только значение unit.
  • +
+
+
+ +

Описание

+ +

Свойства

+ +
+
{{jsxref("ListFormat.prototype", "Intl.ListFormat.prototype")}}
+
Позволяет добавлять свойства ко всем объектам Intl.ListFormat
+
+ +

Методы

+ +
+
{{jsxref("ListFormat.supportedLocalesOf", "Intl.ListFormat.supportedLocalesOf()")}}
+
Возвращает массив, содержащий те из переданных ему локалей, которые поддерживаются без необходимости использовать локаль по умолчанию.
+
+ +

Примеры

+ +

Использование format

+ +

Пример ниже показывает как создать объект ListFormat с поддержкой форматирования на русском языке и получить отформатированную строку с помощью метода format.

+ +
const list = ['Motorcycle', 'Bus', 'Car'];
+
+ console.log(new Intl.ListFormat('ru-RU', { style: 'long', type: 'conjunction' }).format(list));
+// > Motorcycle, Bus и Car
+
+ console.log(new Intl.ListFormat('ru-RU', { style: 'short', type: 'disjunction' }).format(list));
+// > Motorcycle, Bus или Car
+
+ console.log(new Intl.ListFormat('ru-RU', { style: 'narrow', type: 'unit' }).format(list));
+// > Motorcycle Bus Car
+
+ +

Использование formatToParts

+ +

Пример ниже показывает как получить отформатированные части объекта ListFormat с помощью метода formatToParts.

+ +
const list = ['Motorcycle', 'Bus', 'Car'];
+console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).formatToParts(list));
+
+// > [ { "type": "element", "value": "Motorcycle" }, { "type": "literal", "value": ", " }, { "type": "element", "value": "Bus" }, { "type": "literal", "value": ", and " }, { "type": "element", "value": "Car" } ];
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
Intl.ListFormat proposalStage 3 
diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html new file mode 100644 index 0000000000..1bfd21a87d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html @@ -0,0 +1,120 @@ +--- +title: Intl.NumberFormat.prototype.format +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +tags: + - Internationalization + - JavaScript + - NumberFormat + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Сводка

+

Свойство Intl.NumberFormat.prototype.format возвращает функцию-геттер, форматирующую число согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.

+ +

Синтаксис

+
numberFormat.format(number)
+ +

Параметры

+
+
number
+
Число для форматирования.
+
+ +

Описание

+

Функция, возвращённая геттером format, форматирует число согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.

+ +

Примеры

+ +

Пример: использование функции format

+

Использование функции, возвращённой геттером format, для форматирования одного значения валюты, здесь пример для русского языка:

+
var options = { style: 'currency', currency: 'RUB' };
+var numberFormat = new Intl.NumberFormat('ru-RU', options);
+console.log(numberFormat.format(654321.987));
+// → "654 321,99 руб."
+
+ +

Пример: использование функции format вместе с map

+

Использование функции, возвращённой геттером format, для форматирования всех чисел в массиве. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.map")}} напрямую.

+
var a = [123456.789, 987654.321, 456789.123];
+var numberFormat = new Intl.NumberFormat('es-ES');
+var formatted = a.map(numberFormat.format);
+console.log(formatted.join('; '));
+// → "123.456,789; 987.654,321; 456.789,123"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html new file mode 100644 index 0000000000..e29eb2dd27 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html @@ -0,0 +1,189 @@ +--- +title: Intl.NumberFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +tags: + - Internationalization + - JavaScript + - NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Сводка

+ +

Объект Intl.NumberFormat является конструктором объектов, включающих языко-зависимое форматирование чисел.

+ +

Синтаксис

+ +
new Intl.NumberFormat([locales[, options]])
+Intl.NumberFormat.call(this[, locales[, options]])
+
+ +

Параметры

+ +
+
locales
+
+

Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:

+ +
+
nu
+
Используемая система нумерации. Возможные значения включают в себя: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
+
+
+
options
+
+

Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:

+ +
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
style
+
Используемый стиль форматирования. Возможными значениями являются "decimal" для простого форматирования числа, "currency" для форматирования валюты и "percent" для форматирования процентов; значением по умолчанию является "decimal".
+
currency
+
Валюта, используемая при форматировании валют. Возможными значениями являются коды валют ISO 4217, например, "USD" для доллара США, "EUR" для евро или "CNY" для китайского юаня — смотрите список кодов текущих валют и денежных средств. Свойство не имеет значения по умолчанию; если свойство style равно "currency", свойство currency также должно присутствовать.
+
currencyDisplay
+
Определяет, как отображать валюту при форматировании валют. Возможными значениями являются "symbol" для использования локализованного символа валюты, например € для евро, "code" для использования кода валюты ISO, "name" для использования локализованного названия валюты, например "доллар США" для доллара; значением по умолчанию является "symbol".
+
useGrouping
+
Определяет, использовать ли разделители групп разрядов, например, разделители тысяч или тысяч/лакх/крор. Возможными значениями являются true и false; значением по умолчанию является true.
+
+ +

Следующие свойства разбиваются на две группы: minimumIntegerDigits, minimumFractionDigits и maximumFractionDigits входят в одну группу, а minimumSignificantDigits и maximumSignificantDigits — в другую. Если определено хотя бы одно свойство из второй группы, свойства первой группы будут проигнорированы.

+ +
+
minimumIntegerDigits
+
Минимальное используемое количество цифр целой части числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.
+
minimumFractionDigits
+
Минимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого и процентного форматирования является 0; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в списке кодов валют ISO 4217 (2, если данный список не предоставляет такой информации).
+
maximumFractionDigits
+
Максимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого форматирования является наибольшее значение из minimumFractionDigits и 3; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в списке кодов валют ISO 4217 (2, если данный список не предоставляет такой информации); значением по умолчанию для процентного форматирования является наибольшее значение из minimumFractionDigits и 0.
+
minimumSignificantDigits
+
Минимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.
+
maximumSignificantDigits
+
Максимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является minimumSignificantDigits.
+
+
+
+ +

Описание

+ +

Свойства

+ +
+
{{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}
+
Позволяет добавлять свойства ко всем объектам.
+
+ +

Методы

+ +
+
{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
+
Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.
+
+ +

Экземпляры объекта NumberFormat

+ +

Свойства

+ +

Экземпляры NumberFormat наследуют следующие свойства из своего прототипа:

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Properties')}}
+ +

Методы

+ +

Экземпляры NumberFormat наследуют следующие методы из своего прототипа:

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: базовое использование

+ +

При базовом использовании без определения локали возвращается строка, отформатированная с помощью локали по умолчанию с опциями по умолчанию.

+ +
var number = 3500;
+
+console.log(new Intl.NumberFormat().format(number));
+// → '3,500' в локали US English
+
+ +

Пример: использование аргумента locales

+ +

Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
var number = 123456.789;
+
+// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка
+console.log(new Intl.NumberFormat('de-DE').format(number));
+// → 123.456,789
+
+// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
+console.log(new Intl.NumberFormat('ru-RU').format(number));
+// → 123 456,789
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(new Intl.NumberFormat('ar-EG').format(number));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// В Индии используют разделители для тысяч/лакх/крор
+console.log(new Intl.NumberFormat('en-IN').format(number));
+// → 1,23,456.789
+
+// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную
+console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(number));
+// → 一二三,四五六.七八九
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(new Intl.NumberFormat(['ban', 'id']).format(number));
+// → 123.456,789
+
+ +

Пример: использование аргумента options

+ +

Результат может быть настроен с помощью аргумента options:

+ +
var number = 123456.789;
+
+// Запрашиваем формат валюты
+console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
+// → 123.456,79 €
+
+console.log(new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB' }).format(number));
+// → 123 456,79 руб.
+
+// Японская йена не использует младшие единицы
+console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number))
+// → ¥123,457
+
+// Ограничиваем до трёх значащих цифр
+console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
+// → 1,23,000
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Intl.NumberFormat")}}

+ +
+ +

Смотрите также

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}
diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html new file mode 100644 index 0000000000..6ac4a38c2c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.NumberFormat.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +tags: + - Internationalization + - JavaScript + - NumberFormat + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Сводка

+

Свойство Intl.NumberFormat.prototype представляет объект прототипа конструктора {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Смотрите {{jsxref("NumberFormat")}} для описания экземпляров Intl.NumberFormat.

+

Экземпляры {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}} наследуются от Intl.NumberFormat.prototype. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.

+ +

Свойства

+
+
Intl.NumberFormat.prototype.constructor
+
Ссылка на {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.
+
{{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}
+
Геттер; возвращает функцию, форматирующую число согласно локали и опциям форматирования этого объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.
+
+ +

Методы

+
+
{{jsxref("NumberFormat.resolvedOptions", "Intl.NumberFormat.prototype.resolvedOptions()")}}
+
Возвращает новый объект со свойствами, отражающими локаль и опции сравнения, вычисленные при инициализации объекта.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-11.2.1', 'Intl.NumberFormat.prototype')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html new file mode 100644 index 0000000000..1633c1e703 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.NumberFormat.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions +tags: + - Internationalization + - JavaScript + - Method + - NeedsExample + - NumberFormat + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Сводка

+

Метод Intl.NumberFormat.prototype.resolvedOptions() возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.

+ +

Синтаксис

+
numberFormat.resolvedOptions()
+ +

Описание

+

Возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}. Объект содержит следующие свойства:

+
+
locale
+
Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство locale.
+
numberingSystem
+
Значение, запрошенное ключом расширения Unicode "nu", либо значение по умолчанию.
+
style
+
useGrouping
+
Значения, предоставленные для этих свойств в аргументе options, либо значения по умолчанию.
+
currency
+
currencyDisplay
+
Значения, предоставленные для этих свойств в аргументе options, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если свойство style равно "currency".
+
+

Из следующих двух групп свойств включается только одна:

+
+
minimumIntegerDigits
+
minimumFractionDigits
+
maximumFractionDigits
+
Значения, предоставленные для этих свойств в аргументе options, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если в аргументе options не присутствовало ни свойства minimumSignificantDigits, ни свойства maximumSignificantDigits.
+
minimumSignificantDigits
+
maximumSignificantDigits
+
Значения, предоставленные для этих свойств в аргументе options, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если в аргументе options присутствовало хотя бы одно из них.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html new file mode 100644 index 0000000000..97159a0112 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.NumberFormat.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf +tags: + - Internationalization + - JavaScript + - Method + - NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf +--- +
{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}
+ +

Сводка

+

Метод Intl.NumberFormat.supportedLocalesOf() возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при форматировании чисел без отката к локали по умолчанию среды выполнения.

+ +

Синтаксис

+
Intl.NumberFormat.supportedLocalesOf(locales[, options])
+ +

Параметры

+
+
locales
+
Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.
+
options
+
+

Необязательный параметр. Объект, который может содержать следующее свойство:

+
+
localeMatcher
+
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
+
+
+
+ +

Описание

+

Возвращает массив с подмножеством языковых меток, предоставленных в аргументе locales. Возвращаются те языковые метки, для которых среда выполнения поддерживает форматирование чисел без отката к локали по умолчанию; при поиске используется предоставленный алгоритм сопоставления локалей.

+ +

Примеры

+ +

Пример: использование supportedLocalesOf

+

Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское форматирование чисел, метод supportedLocalesOf вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка pinyin не относится к форматированию чисел, не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма "lookup" — сопоставление "best fit" может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.

+
var locales = ['ban', 'id-u-co-pinyin', 'de-ID'];
+var options = { localeMatcher: 'lookup' };
+console.log(Intl.NumberFormat.supportedLocalesOf(locales, options).join(', '));
+// → "id-u-co-pinyin, de-ID"
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES Int 1.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}}{{Spec2('ES Int 1.0')}}Изначальное определение.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("26")}} + {{CompatNo}}
+ {{bug("864843")}} +
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/isfinite/index.html b/files/ru/web/javascript/reference/global_objects/isfinite/index.html new file mode 100644 index 0000000000..eb1c6ee465 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/isfinite/index.html @@ -0,0 +1,114 @@ +--- +title: isFinite() +slug: Web/JavaScript/Reference/Global_Objects/isFinite +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/isFinite +--- +
+
+
{{jsSidebar("Objects")}}
+ +
 
+
+
+ +

Глобальная isFinite() функция определяет, является ли переданное значение конечным числом. Если необходимо, параметр сначала преобразуется в число.

+ +

 

+ +

 

+ +

{{EmbedInteractiveExample("pages/js/globalprops-isfinite.html")}}

+ + + +

 

+ +

 

+ +

Синтаксис

+ +
isFinite(testValue)
+ +

Параметры

+ +
+
testValue
+
Аргумент для проверки, является ли он конечным числом.
+
+ +

Описание

+ +

isFinite это функция верхнего уровня и она не связана ни с одним объектом.

+ +

Вы можете использовать эту функцию там, где требуется определить, является ли аргумент конечным числом. Функция isFinite исследует число в своем параметре. Если аргумент является NaN, положительной или отрицательной бесконечностью, метод вернет false; иначе возвращается true.

+ +

Примеры

+ +
isFinite(Infinity);  // false
+isFinite(NaN);       // false
+isFinite(-Infinity); // false
+
+isFinite(0);         // true
+isFinite(2e64);      // true
+
+
+isFinite("0");       // true, но было бы false если использовать
+                     // более надежный вариант Number.isFinite("0")
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение.
{{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.isFinite")}}

+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/isnan/index.html b/files/ru/web/javascript/reference/global_objects/isnan/index.html new file mode 100644 index 0000000000..e61bdf3c8c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/isnan/index.html @@ -0,0 +1,133 @@ +--- +title: isNaN +slug: Web/JavaScript/Reference/Global_Objects/isNaN +tags: + - Functions + - JavaScript + - Method + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/isNaN +--- +
{{jsSidebar("Objects")}}
+ +

Аннотация

+ +

Функция isNaN() определяет является ли литерал или переменная нечисловым значением ({{jsxref("Global_Objects/NaN", "NaN")}}) или нет. При работе с функцией необходимо проявлять осторожность так как она имеет свои особенности. В качестве альтернативы можно использовать метод {{jsxref("Number.isNaN()")}} из ECMAScript 6, или дополнительно проверять литерал или переменную на нечисловое значение при помощи typeof.

+ +

Синтаксис

+ +
isNaN(значение)
+ +

Параметры

+ +
+
Значение
+
Литерал или переменная которые будут проверяться на нечисловое значение.
+
+ +

Описание

+ +

Для чего нужна функция isNaN?

+ +

В отличие от других возможных значениях в JavaScript, при работе с значением данного типа невозможно полагаться на == и === для определения, является ли переменная или литерал нечисловым значением ({{jsxref("Global_Objects/NaN", "NaN")}}) или нет, так как проверки NaN == NaN и NaN === NaN в качестве значения вернут false. Следовательно, для проверки нужна функция isNaN.

+ +

Примечание:

+ +

Для альтернативной проверки переменной на NaN без использования функции isNaN() можно воспользоваться конструкцией x !== x

+ +
var x = NaN
+
+x != x // true
+x !== x // true
+
+ +

Генерация значения NaN

+ +

Значение NaN генерируются арифметическими операциями, результатом которых является undefined или unrepresentable. Такие условия не обязательно обозначают переполнение стека. NaN также может являться результатом попытки преобразования числа в строку, или значения, не имеющего эквивалента в простых числовых примитивах.

+ +

Например, деление нуля на нуль возвращает NaNно деление других чисел на 0 не возвращает NaN.

+ +
var x = NaN
+
+x != x // true
+x !== x // true
+
+ +

Особенности поведения

+ +

С самых ранних версий функции isNaN её поведение для не числовых переменных или литералов было довольно-таки запутанным. Когда аргументом функции isNaN является переменная, тип которой не Number, она преобразуется к типу Number. Полученное значение затем проверяется, является ли оно {{jsxref("Global_Objects/NaN", "NaN")}}. Таким образом для не числовых значений, которые можно преобразовать в числовой тип без не-NaN значения (в частности, пустая строка или логические примитивы, которые преобразуются в 0 или 1), возвращаемое значение "false" может быть полной неожиданностью; пустая строка преобразуется в  "not a number." Путаница связана с тем, что "not a number" имеет определённое значение, описанное в стандарте IEEE-794 чисел с плавающей точкой. Функцию стоит воспринимать в качестве ответа на вопрос, "Является ли это значение корректным числом по стандарту IEEE-794?"

+ +

В следующей версии ECMAScript (ES6) функция {{jsxref("Number.isNaN()")}} также присутствует. Number.isNaN(x) будет надёжным методом для проверки, содержит ли x значение NaN или нет. Даже с Number.isNaN, однако, результатом NaN остаётся точное числовое значение, а не просто "not a number".

+ +

Пример

+ +
isNaN(NaN);       // true
+isNaN(undefined); // true
+isNaN({});        // true
+
+isNaN(true);      // false
+isNaN(null);      // false
+isNaN(37);        // false
+
+// strings
+isNaN("37");      // false: "37" преобразуется в число 37 которое не NaN
+isNaN("37.37");   // false: "37.37" преобразуется в число 37.37 которое не NaN
+isNaN("");        // false: пустая строка преобразуется в 0 которое не NaN
+isNaN(" ");       // false: строка с пробелом преобразуется в 0 которое не NaN
+isNaN("37,5");    // true
+
+// Даты
+isNaN(new Date());                // false
+isNaN(new Date().toString());     // true
+
+// Пример почему использование isNaN не всегда уместно
+isNaN("blabla")   // true: "blabla" преобразованно в число.
+                  // При парсинге преобразуется в число при неудаче возвращает NaN
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
ECMAScript 1st Edition.StandardInitial definition.
{{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}{{Spec2('ES6')}} 
+ +

Поддержка браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.isNaN")}}

+ +

 

+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/iterator/index.html b/files/ru/web/javascript/reference/global_objects/iterator/index.html new file mode 100644 index 0000000000..0a55a44af9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/iterator/index.html @@ -0,0 +1,138 @@ +--- +title: Iterator +slug: Web/JavaScript/Reference/Global_Objects/Iterator +tags: + - JavaScript + - Reference +translation_of: Archive/Web/Iterator +--- +
{{jsSidebar("Objects")}}
+ +
 
+ +
+

Non-standard. The Iterator function is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using for..of loops and the iterator protocol.

+
+ +

The Iterator function returns an object which implements legacy iterator protocol and iterates over enumerable properties of an object.

+ +

Syntax

+ +
Iterator(object, [keyOnly])
+ +

Parameters

+ +
+
object
+
Object to iterate over properties.
+
keyOnly
+
If keyOnly is truthy value, Iterator.prototype.next returns property_name only.
+
+ +

Description

+ +

Returns Iterator instance that iterates over objectIterator instance returns [property_name, property_value] array for each iteration if keyOnly is falsy,  otherwise, if keyOnly is truthy, it returns property_name for each iteration.  If object is the Iterator instance or Generator instance, it returns object itself.

+ +

Properties

+ +
+
Iterator.prototype[@@iterator]
+
Returns a function that returns iterator object.
+
+ +

Methods

+ +
+
Iterator.prototype.next
+
Returns next item in the [property_name, property_value] format or property_name only. It throws StopIteration if there are no more items.
+
+ +

Examples

+ +

Iterating over properties of an object

+ +
var a = {
+  x: 10,
+  y: 20,
+};
+var iter = Iterator(a);
+console.log(iter.next()); // ["x", 10]
+console.log(iter.next()); // ["y", 20]
+console.log(iter.next()); // throws StopIteration
+ +

Iterating over properties of an object with legacy destructuring for-in statement

+ +
var a = {
+  x: 10,
+  y: 20,
+};
+
+for (var [name, value] in Iterator(a)) {
+  console.log(name, value);   // x 10
+                              // y 20
+}
+ +

Iterating with for-of

+ +
var a = {
+  x: 10,
+  y: 20,
+};
+
+for (var [name, value] of Iterator(a)) {  // @@iterator is used
+  console.log(name, value);   // x 10
+                              // y 20
+}
+ +

Iterates over property name

+ +
var a = {
+  x: 10,
+  y: 20,
+};
+
+for (var name in Iterator(a, true)) {
+  console.log(name);   // x
+                       // y
+}
+ +

Passing Generator instance

+ +
function* f() {
+  yield 'a';
+  yield 'b';
+}
+var g = f();
+
+console.log(g == Iterator(g)); // true
+
+for (var v in Iterator(g)) {
+  console.log(v);   // a
+                    // b
+}
+ +

Passing Iterator instance

+ +
var a = {
+  x: 10,
+  y: 20,
+};
+
+var i = Iterator(a);
+
+console.log(i == Iterator(i)); // true
+ +

Specifications

+ +

Non-standard. Not part of any current standards document

+ +

Browser compatibility

+ +

Not supported. Used to be in Firefox in versions prior to Firefox 57.

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/json/index.html b/files/ru/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..30cc3735af --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,230 @@ +--- +title: JSON +slug: Web/JavaScript/Reference/Global_Objects/JSON +tags: + - JSON + - JavaScript + - Object + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Сводка

+ +

Объект JSON содержит методы для разбора объектной нотации JavaScript (JavaScript Object Notation — сокращённо {{glossary("JSON")}}) и преобразования значений в JSON. Его нельзя вызвать как функцию или сконструировать как объект, и кроме своих двух методов он не содержит никакой интересной функциональности.

+ +

Описание

+ +

Объектная нотация JavaScript

+ +

JSON является синтаксисом для сериализации объектов, массивов, чисел, строк логических значений и значения {{jsxref("null")}}. Он основывается на синтаксисе JavaScript, однако всё же отличается от него: не каждый код на JavaScript является JSON, и не каждый JSON является кодом на JavaScript. Смотрите также статью JSON: подмножество JavaScript, которым он не является (на английском).

+ + + + + + + + + + + + + + + + + + + + + + + +
Различия между JavaScript и JSON
Тип JavaScriptОтличия от JSON
Объекты и массивыИмена свойств должны быть строками, заключёнными в двойные кавычки; конечные запятые запрещены.
ЧислаВедущие нули запрещены; перед десятичной запятой обязательно должна быть хотя бы одна цифра.
Строки +

Только ограниченный набор символов может быть заэкранирован; некоторые управляющие символы запрещены; разрешены юникодные символы разделительной линии (U+2028) и разделительного параграфа (U+2029); строки должны быть заключены в двойные кавычки. Смотрите следующий пример, в котором метод {{jsxref("JSON.parse()")}} отрабатывает без проблем, а при вычислении кода как JavaScript выбрасывается исключение {{jsxref("SyntaxError")}}:

+ +
+var code = '"\u2028\u2029"';
+JSON.parse(code); // работает
+eval(code); // ошибка
+
+
+ +

Ниже представлен полный синтаскис JSON:

+ +
JSON = null
+    or true or false
+    or JSONNumber
+    or JSONString
+    or JSONObject
+    or JSONArray
+
+JSONNumber = - PositiveNumber
+          or PositiveNumber
+PositiveNumber = DecimalNumber
+              or DecimalNumber . Digits
+              or DecimalNumber . Digits ExponentPart
+              or DecimalNumber ExponentPart
+DecimalNumber = 0
+             or OneToNine Digits
+ExponentPart = e Exponent
+            or E Exponent
+Exponent = Digits
+        or + Digits
+        or - Digits
+Digits = Digit
+      or Digits Digit
+Digit = 0 through 9
+OneToNine = 1 through 9
+
+JSONString = ""
+          or " StringCharacters "
+StringCharacters = StringCharacter
+                or StringCharacters StringCharacter
+StringCharacter = any character
+                  except " or \ or U+0000 through U+001F
+               or EscapeSequence
+EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
+              or \u HexDigit HexDigit HexDigit HexDigit
+HexDigit = 0 through 9
+        or A through F
+        or a through f
+
+JSONObject = { }
+          or { Members }
+Members = JSONString : JSON
+       or Members , JSONString : JSON
+
+JSONArray = [ ]
+         or [ ArrayElements ]
+ArrayElements = JSON
+             or ArrayElements , JSON
+ +

Во всех продукциях могут присутствовать незначащие пробельные символы, за исключением продукций ЧислоJSON (числа не должны содержать пробелов) и СтрокаJSON (где они интерпретируются как часть строки или возбуждают ошибку). Пробельными символами считаются символы табуляции (U+0009), возврата каретки (U+000D), перевода строки (U+000A) и, собственно, пробела (U+0020).

+ +

Методы

+ +
+
{{jsxref("JSON.parse()")}}
+
Разбирает строку JSON, возможно с преобразованием получаемого значения и его свойств и возвращает разобранное значение.
+
{{jsxref("JSON.stringify()")}}
+
Возвращает строку JSON, соответствующую указанному значению, возможно с включением только определённых свойств или с заменой значений свойств определяемым пользователем способом.
+
+ +

Полифилл

+ +

Объект JSON не поддерживается старыми браузерами. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать объект JSON в реализациях, которые его ещё не поддерживают (например, в Internet Explorer 6).

+ +

Следующий алгоритм имитирует работу настоящего объекта JSON:

+ +
if (!window.JSON) {
+  window.JSON = {
+    parse: function(sJSON) { return eval('(' + sJSON + ')'); },
+    stringify: function(vContent) {
+      if (vContent instanceof Object) {
+        var sOutput = '';
+        if (vContent.constructor === Array) {
+          for (var nId = 0; nId < vContent.length; sOutput += this.stringify(vContent[nId]) + ',', nId++);
+          return '[' + sOutput.substr(0, sOutput.length - 1) + ']';
+        }
+        if (vContent.toString !== Object.prototype.toString) {
+          return '"' + vContent.toString().replace(/"/g, '\\$&') + '"';
+        }
+        for (var sProp in vContent) {
+          sOutput += '"' + sProp.replace(/"/g, '\\$&') + '":' + this.stringify(vContent[sProp]) + ',';
+        }
+        return '{' + sOutput.substr(0, sOutput.length - 1) + '}';
+     }
+     return typeof vContent === 'string' ? '"' + vContent.replace(/"/g, '\\$&') + '"' : String(vContent);
+    }
+  };
+}
+
+ +

Более сложными известными полифиллами для объекта JSON являются проекты JSON2 и JSON3.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-json-object', 'JSON')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("8.0")}}{{CompatOpera("10.5")}}{{CompatSafari("4.0")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

На основе таблицы совместимости Kangax.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/json/parse/index.html b/files/ru/web/javascript/reference/global_objects/json/parse/index.html new file mode 100644 index 0000000000..febd8ba943 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/parse/index.html @@ -0,0 +1,150 @@ +--- +title: JSON.parse() +slug: Web/JavaScript/Reference/Global_Objects/JSON/parse +tags: + - ECMAScript5 + - JSON + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Сводка

+

Метод JSON.parse() разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения.

+ +

Синтаксис

+
JSON.parse(text[, reviver])
+ +

Параметры

+
+
text
+
Разбираемая строка JSON. Смотрите документацию по объекту {{jsxref("JSON")}} для описания синтаксиса JSON.
+
reviver {{optional_inline}}
+
Если параметр является функцией, определяет преобразование полученного в процессе разбора значения, прежде, чем оно будет возвращено вызывающей стороне.
+
+ +

Возвращаемое значение

+

Возвращает объект {{jsxref("Object")}}, соответствующий переданной строке JSON text.

+ +

Выбрасываемые исключения

+

Выбрасывает исключение {{jsxref("SyntaxError")}}, если разбираемая строка не является правильным JSON.

+ +

Примеры

+ +

Пример: использование метода JSON.parse()

+
JSON.parse('{}');              // {}
+JSON.parse('true');            // true
+JSON.parse('"foo"');           // "foo"
+JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
+JSON.parse('null');            // null
+
+ +

Пример: использование параметра reviver

+

Если определён параметр reviver, значение, вычисляемое при разборе строки, будет преобразовано перед его возвратом. В частности, вычисленное значение и все его свойства (начиная с самых вложенных свойств и кончая самим значением), каждое проходят через функцию reviver, которая вызывается с контекстом this, содержащим объект в виде обрабатываемого свойства, и с аргументами: именем свойства в виде строки и значением свойства. Если функция reviver вернёт {{jsxref("undefined")}} (либо вообще не вернёт никакого значения, например, если выполнение достигнет конца функции), свойство будет удалено из объекта. В противном случае свойство будет переопределено возвращаемым значением.

+

В конечном итоге, функция reviver вызывается с пустой строкой и самым верхним значением, чтобы обеспечить преобразование самого верхнего значения. Убедитесь, что вы правильно обрабатываете этот случай — обычно для этого нужно просто вернуть само значение — или метод JSON.parse() вернёт {{jsxref("undefined")}}.

+
JSON.parse('{"p": 5}', function(k, v) {
+  if (k === '') { return v; } // самое верхнее значение - возвращаем его
+  return v * 2;               // иначе возвращаем v * 2.
+});                           // { p: 10 }
+
+JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) {
+  console.log(k); // пишем имя текущего свойства, последним именем будет ""
+  return v;       // возвращаем неизменённое значение свойства
+});
+
+// 1
+// 2
+// 4
+// 6
+// 5
+// 3
+// ""
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.7.
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("8.0")}}{{CompatOpera("10.5")}}{{CompatSafari("4.0")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

На основе таблицы совместимости Kangax.

+ +

Примечания по Gecko

+

Начиная с Gecko 29 {{geckoRelease("29")}}, при передаче некорректной строки JSON выдаётся более подробное собщение об ошибке, содержащее номер строки и колонки, в которых была обнаружена ошибка разбора. Это полезно при отладке больших данных JSON.

+
JSON.parse('[1, 2, 3,]');
+// SyntaxError: JSON.parse: unexpected character at
+// line 1 column 10 of the JSON data
+// SyntaxError: JSON.parse: неожиданный символ
+// в строке 1, колонке 10 данных JSON
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/json/stringify/index.html b/files/ru/web/javascript/reference/global_objects/json/stringify/index.html new file mode 100644 index 0000000000..04ccba32a7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/stringify/index.html @@ -0,0 +1,189 @@ +--- +title: JSON.stringify() +slug: Web/JavaScript/Reference/Global_Objects/JSON/stringify +tags: + - JSON + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Сводка

+ +

Метод JSON.stringify() преобразует значение JavaScript в строку JSON, возможно с заменой значений, если указана функция замены, или с включением только определённых свойств, если указан массив замены.

+ +

Синтаксис

+ +
JSON.stringify(value[, replacer[, space]])
+ +

Параметры

+ +
+
value
+
Значение, преобразуемое в строку JSON.
+
replacer {{optional_inline}}
+
Если является функцией, преобразует значения и свойства по ходу их преобразования в строку; если является массивом, определяет набор свойств, включаемых в объект в окончательной строке.
+ Подробное описание функции replacer даётся в статье Использование родного объекта JSON руководства по JavaScript.
+
space {{optional_inline}}
+
Делает результат красиво отформатированным (расставляя пробелы).
+
+ +

Описание

+ +

Метод JSON.stringify() преобразует значение в представляющую его нотацию JSON со следующими оговорками:

+ + + +
JSON.stringify({});                  // '{}'
+JSON.stringify(true);                // 'true'
+JSON.stringify('foo');               // '"foo"'
+JSON.stringify([1, 'false', false]); // '[1,"false",false]'
+JSON.stringify({ x: 5 });            // '{"x":5}'
+
+JSON.stringify({ x: 5, y: 6 });
+// '{"x":5,"y":6}' or '{"y":6,"x":5}'
+JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
+// '[1,"false",false]'
+
+// Символы:
+JSON.stringify({ x: undefined, y: Object, z: Symbol('') });
+// '{}'
+JSON.stringify({ [Symbol('foo')]: 'foo' });
+// '{}'
+JSON.stringify({ [Symbol.for('foo')]: 'foo' }, [Symbol.for('foo')]);
+// '{}'
+JSON.stringify({ [Symbol.for('foo')]: 'foo' }, function(k, v) {
+  if (typeof k === 'symbol') {
+    return 'символ';
+  }
+});
+// '{}'
+
+ +

Параметр space

+ +

Параметр space может использоваться для управления форматированием отступов в конечной строке. Если он числовой, каждый последующий уровень вложенности будет дополнен отступом из пробелов, количество которых соответствует уровню (вплоть до десятого уровня). Если он строковый, каждый последующий уровень вложенности будет предваряться этой строкой (или её первыми десятью символами).

+ +
JSON.stringify({ a: 2 }, null, ' ');
+// '{
+//  "a": 2
+// }'
+
+ +

Использование символа табуляции имитирует стандартное красивое форматирование:

+ +
JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
+// вернёт строку:
+// '{
+// 	"uno": 1,
+// 	"dos": 2
+// }'
+
+ +

Поведение метода toJSON()

+ +

Если преобразуемый в строку объект имеет свойство с именем toJSON и значением свойства, установленным в функцию, то этот метод toJSON() изменит стандартное поведение преобразования в JSON: вместо преобразования объекта будет использоваться значение, возвращаемое методом toJSON(). Например:

+ +
+

Функции не являются допустимыми данными в JSON, так что они не будут работать. Кроме того, некоторые объекты, например, объект {{jsxref("Date")}}, станут строками после применения {{jsxref("JSON.parse()")}}.

+
+ +
var obj = {
+  foo: 'foo',
+  toJSON: function() {
+    return 'bar';
+  }
+};
+JSON.stringify(obj);        // '"bar"'
+JSON.stringify({ x: obj }); // '{"x":"bar"}'
+
+ +

Пример использования метода JSON.stringify() вместе с localStorage

+ +

В случае, если вы хотите сохранить объект таким образом, чтобы его можно было восстановить даже после закрытия браузера, имеет смысл воспользоваться следующим примером, демонстрирующим применение метода JSON.stringify():

+ +
// Создаём некоторый объект
+var session = {
+  'screens': [],
+  'state': true
+};
+session.screens.push({ 'name': 'экранА', 'width': 450, 'height': 250 });
+session.screens.push({ 'name': 'экранБ', 'width': 650, 'height': 350 });
+session.screens.push({ 'name': 'экранВ', 'width': 750, 'height': 120 });
+session.screens.push({ 'name': 'экранГ', 'width': 250, 'height': 60 });
+session.screens.push({ 'name': 'экранД', 'width': 390, 'height': 120 });
+session.screens.push({ 'name': 'экранЕ', 'width': 1240, 'height': 650 });
+
+// Преобразуем его в строку JSON с помощью метода JSON.stringify(),
+// затем сохраняем его в localStorage под именем session
+localStorage.setItem('session', JSON.stringify(session));
+
+// Пример того, как можно преобразовать строку, полученную с помощью метода
+// JSON.stringify() и сохранённую в localStorage обратно в объект
+var restoredSession = JSON.parse(localStorage.getItem('session'));
+
+// Переменная restoredSession содержит объект, который был сохранён
+// в localStorage
+console.log(restoredSession);
+
+ +

Пример использования параметра replacer

+ +
var foo = { foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7 };
+
+JSON.stringify(foo, function(key, value) {
+  if (typeof value === 'string') {
+    return undefined; // удаляем все строковые свойства
+  }
+  return value;
+});  // '{"week":45,"month":7}'
+
+JSON.stringify(foo, ['week', 'month']);
+// '{"week":45,"month":7}', сохранились только свойства week и month
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.7.
{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.JSON.stringify")}}

+
+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/@@species/index.html b/files/ru/web/javascript/reference/global_objects/map/@@species/index.html new file mode 100644 index 0000000000..cd65113453 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/@@species/index.html @@ -0,0 +1,111 @@ +--- +title: 'get Map[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/Map/@@species +translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@species +--- +
{{JSRef}}
+ +

Акцессор свойства Map[@@species] возвращает Map конструктор.

+ +

Синтаксис

+ +
Map[Symbol.species]
+
+ +

Описание

+ +

Акцессор свойства species, возвращает конструктор по умолчанию для Map объектов. Конструкторы подклассов могут переопределить его, чтобы изменить поведение конструктора.

+ +

Примеры

+ +

Свойство species возвращает конструктор по умолчанию, который является конструктором Map для Map объектов:

+ +
Map[Symbol.species]; // функция Map()
+ +

В производном объекте коллекции (например, ваша пользовательская карта MyMap), MyMap species является MyMap конструктором. Однако, вы можете захотеть переопределить это, что бы вернуть родительский Map в методах вашего производного класса:

+ +
class MyMap extends Map {
+  // Перезаписываем MyMap species на родительский Map конструктор
+  static get [Symbol.species]() { return Map; }
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-get-map-@@species', 'get Map [ @@species ]')}}{{Spec2('ES2015')}}Исходное определение.
{{SpecName('ESDraft', '#sec-get-map-@@species', 'get Map [ @@species ]')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ФункцияChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("41")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ФункцияAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("41")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотри так же

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/clear/index.html b/files/ru/web/javascript/reference/global_objects/map/clear/index.html new file mode 100644 index 0000000000..57754a8e55 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/clear/index.html @@ -0,0 +1,119 @@ +--- +title: Map.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/Map/clear +tags: + - ECMAScript6 + - JavaScript + - Map + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear +--- +
{{JSRef}}
+ +

Метод clear() удаляет все элементы из объекта Map.

+ +

Синтаксис

+ +
myMap.clear();
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Примеры

+ +

Использование метода clear

+ +
var myMap = new Map();
+myMap.set('bar', 'baz');
+myMap.set(1, 'foo');
+
+myMap.size;       // 2
+myMap.has('bar'); // true
+
+myMap.clear();
+
+myMap.size;       // 0
+myMap.has('bar')  // false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка38{{CompatGeckoDesktop("19.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}38{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/delete/index.html b/files/ru/web/javascript/reference/global_objects/map/delete/index.html new file mode 100644 index 0000000000..749996f85b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/delete/index.html @@ -0,0 +1,79 @@ +--- +title: Map.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Map/delete +tags: + - ECMAScript 2015 + - JavaScript + - Map + - Ссылка + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete +--- +
{{JSRef}}
+ +

Метод delete() удаляет указанный элемент из объекта {{jsxref("Map")}}.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-delete.html")}}
+ + + +

Синтаксис

+ +
myMap.delete(key);
+ +

Параметры

+ +
+
key
+
Ключ элемента удаляемого из объекта {{jsxref("Map")}}
+
+ +

Возвращаемое значение

+ +

true если элемент существовал в {{jsxref("Map")}} и он был удален или false если элемента с такким ключом не было.

+ +

Примеры

+ +

Использование метода delete

+ +
var myMap = new Map();
+myMap.set('bar', 'foo');
+
+myMap.delete("bar"); // Возвращает true. Успешно удалён.
+myMap.has("bar");    // Возвращает false. Элемента "bar" больше нет.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Map.delete")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/entries/index.html b/files/ru/web/javascript/reference/global_objects/map/entries/index.html new file mode 100644 index 0000000000..fd34bd9a6b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/entries/index.html @@ -0,0 +1,127 @@ +--- +title: Map.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Map/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries +--- +
{{JSRef}}
+ +

Метод entries() возвращает новый Итератор, содержащий пары [key, value] для каждого элемента объекта {{jsxref("Map")}} в том порядке, в котором они были заведены.

+ +

Исходный код всех примеров для  {{jsxref("Map")}} сохранен на GitHub https://github.com/mdn/interactive-examples/tree/master/live-examples/js-examples/map.

+ +

Вы можете внести свой вклад, для этого: 

+ +

1. Клонируйте https://github.com/mdn/interactive-examples

+ +

2. Ознакомьтесь с руководством https://github.com/mdn/interactive-examples/blob/master/CONTRIBUTING.md

+ +

3. Напишите свой пример и отравьте нам запрос на извлечение.

+ +

Синтаксис

+ +
myMap.entries()
+ +

Возвращаемое значение

+ +

Новый итератор объекта {{jsxref("Map")}}.

+ +

Примеры

+ +

Использование entries()

+ +
var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.entries();
+
+console.log(mapIter.next().value); // ["0", "foo"]
+console.log(mapIter.next().value); // [1, "bar"]
+console.log(mapIter.next().value); // [Object, "baz"]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ESDraft')}}
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatVersionUnknown}}{{ CompatGeckoDesktop("20") }}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatVersionUnknown}}{{CompatGeckoMobile("20")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/foreach/index.html b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html new file mode 100644 index 0000000000..20111c1cdc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html @@ -0,0 +1,94 @@ +--- +title: Map.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Map/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach +--- +
{{JSRef}}
+ +

Метод forEach() выполняет переданную функцию единожды для каждой пары ключ/значение объекта Map в порядке их вставки.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}}
+ +

Синтаксис

+ +
myMap.forEach(callback[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция, которая будет выполнена для каждого элемента.
+
thisArg
+
Значение, которое будет использовано в качестве текущего при выполнении callback.
+
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Описание

+ +

Метод forEach выполняет переданный ему callback по разу для каждого фактически существующего ключа в наборе. Callback не вызывается для ключей, которые были удалены. Однако, он выполняется для элементов со значением undefined.

+ +

При вызове callback используются три аргумента:

+ + + +

Если аргумент thisArg указан для forEach, то при вызове callback он будет передан в качестве значения this.  В противном случае для this будет передано undefined. Значение this, в конечном итоге наблюдаемое в функции callback, определяется в соответствии c обычными правилами определения this в функции.

+ +

Каждое значение посещается один раз, за исключением случая, когда оно было удалено и добавлено снова до завершения forEach. callback не вызывается для значений, удаленных до их посещения. Новые значения будут посещены, если они добавлены до завершения forEach.

+ +

forEach исполняет функцию callback один раз для каждого элемента в объекте Map; не возвращает значение.

+ +

Примеры

+ +

Вывод содержимого объекта Map

+ +

Следующий код выводит в консоль строку для каждого элемента в объекте Map:

+ +
function logMapElements(value, key, map) {
+    console.log("m[" + key + "] = " + value);
+}
+new Map([["foo", 3], ["bar", {}], ["baz", undefined]]).forEach(logMapElements);
+// logs:
+// "m[foo] = 3"
+// "m[bar] = [object Object]"
+// "m[baz] = undefined"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Map.forEach")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/get/index.html b/files/ru/web/javascript/reference/global_objects/map/get/index.html new file mode 100644 index 0000000000..ae4ca29646 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/get/index.html @@ -0,0 +1,68 @@ +--- +title: Map.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/Map/get +translation_of: Web/JavaScript/Reference/Global_Objects/Map/get +--- +
{{JSRef}}
+ +

Метод get() возвращает указанный элемент объекта {{jsxref("Map")}}.

+ +

Синтаксис

+ +
myMap.get(key);
+ +

Параметры

+ +
+
key
+
Обязательный. Ключ элемента объекта {{jsxref("Map")}}.
+
+ +

Возвращаемое значение

+ +

Возвращает элемент связанный с указанным ключом или undefined, если ключ не был найден в объекте {{jsxref("Map")}}​​​​.

+ +

Примеры

+ +

Использование метода get()

+ +
var myMap = new Map();
+myMap.set('bar', 'foo');
+
+myMap.get('bar');  // Вернет "foo".
+myMap.get('baz');  // Вернет undefined.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ESDraft')}}
+ +

Поддержка браузерами

+ +

{{Compat("javascript.builtins.Map.get")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/has/index.html b/files/ru/web/javascript/reference/global_objects/map/has/index.html new file mode 100644 index 0000000000..bb2fb71b74 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/has/index.html @@ -0,0 +1,119 @@ +--- +title: Map.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Map/has +translation_of: Web/JavaScript/Reference/Global_Objects/Map/has +--- +
{{JSRef}}
+ +

Метод has() возвращает тип Boolean, указывающий существует ли элемент с указанным ключом или нет.

+ +

Синтаксис

+ +
myMap.has(key);
+ +

Параметры

+ +
+
key
+
Обязательный параметр. Ключ элемента для проверки существования в объекте Map.
+
+ +

Возвращаемое значение

+ +
+
Boolean
+
Возвращает true, если элемент с указанным ключом существует в объекте Map; в противном случае возвращает false.
+
+ +

Примеры

+ +

Использование метода has

+ +
var myMap = new Map();
+myMap.set('bar', "foo");
+
+myMap.has('bar');  // возвращает true
+myMap.has('baz');  // возвращает false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ES2015')}}Первоначальное определение.
{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{ CompatibilityTable }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/index.html b/files/ru/web/javascript/reference/global_objects/map/index.html new file mode 100644 index 0000000000..8e6551addf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/index.html @@ -0,0 +1,288 @@ +--- +title: Map +slug: Web/JavaScript/Reference/Global_Objects/Map +tags: + - ECMAScript 2015 + - JavaScript + - Map +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef}}
+ +

Объект Map содержит пары ключ-значение и сохраняет порядок вставки. Любое значение (как объекты, так и {{Glossary("Primitive", "примитивы")}}) могут быть использованы в качестве ключей.

+ +

Синтаксис

+ +
new Map([iterable])
+ +

Параметры

+ +
+
iterable
+
Массив или любой другой итерируемый объект чьими элементами являются пары ключ-значение (массивы из двух элементов, например [[ 1, 'one' ],[ 2, 'two' ]]). Все пары ключ-значение будут добавлены в новый экземпляр Map; null расценивается как undefined.
+
+ +

Описание

+ +

Объект Map итерируется в порядке вставки его элементов — цикл {{jsxref("Statements/for...of", "for...of")}} будет возвращать массив [key, value] на каждой итерации.

+ +

Key equality

+ +

Сравнение ключей основано на алгоритме "{{Glossary("SameValueZero", "SameValueZero")}}": NaN равно NaN (несмотря на то, что NaN !== NaN), все другие значения рассматриваются равными исходя из семантики оператора строгого равенства ===. В текущей спецификации ECMAScript -0 и +0 принимаются равными, но в ранних версиях обсуждения это было не так (см. "Value equality for -0 and 0" в таблице совместимости с браузерами).

+ +

Сравнение Объектов и Map

+ +

Объекты похожи на Map в том, что оба позволяют устанавливать значения по ключам, получать эти значения, удалять ключи и проверять их наличие. В связи с этим (и потому, что не было встроенных альтернатив), {{jsxref("Object", "Объекты")}} исторически использовались как Map. Однако, у них есть ряд отличий, который дает преимущества Map в ряде случаев:

+ + + +

Свойства

+ +
+
Map.length
+
Значение свойства length всегда равно 0.
+
Чтобы узнать количество элементов в Map - используйте {{jsxref("Map.prototype.size")}}.
+
{{jsxref("Map.@@species", "get Map[@@species]")}}
+
Функция-конструктор которая используется для создания производных объектов.
+
{{jsxref("Map.prototype")}}
+
Представляет прототип конструктора Map. Позволяет добавлять свойства всем объектам типа Map.
+
+ +

Экземпляры Map

+ +

Все экземпляры Map наследуются от {{jsxref("Map.prototype")}}.

+ +

Свойства

+ +
+
Map.prototype.constructor
+
Возвращает функцию, которая создала прототип экземпляра. Это функция Map по умолчанию.
+
Map.prototype.size
+
Возвращает количество пар ключ/значение в объекте Map.
+
+ +

Методы

+ +
+
Map.prototype.clear()
+
Удаляет все пары ключ / значение из объекта Map.
+
Map.prototype.delete(key)
+
Возвращает true, если элемент в объекте Map существовал и был удален, или false, если элемент не существует. Map.prototype.has(key) вернет false позже.
+
Map.prototype.entries()
+
Возвращает новый объект Iterator который содержит массив [key, value] для каждого элемента в объекте Map в порядке вставки.
+
Map.prototype.forEach(callbackFn[, thisArg])
+
Вызывает callbackFn один раз для каждой пары ключ-значение, присутствующей в объекте Map, в порядке вставки. Если для thisArg предоставляется параметр для forEach, он будет использоваться как значение this для каждого обратного вызова.
+
Map.prototype.get(key)
+
Возвращает значение связанное с key, или undefined если его нет.
+
Map.prototype.has(key)
+
Возвращает логическое значение, подтверждающее, было ли значение связано с key в объекте Map или нет.
+
Map.prototype.keys()
+
Возвращает новый объект Iterator содержащий ключи для каждого элемента в объекте Map в порядке вставки.
+
Map.prototype.set(key, value)
+
Устанавливает значение для key в объекте Map. Возвращает объект Map.
+
Map.prototype.values()
+
Возвращает новый объект Iterator который содержит значения для каждого элемента в объекте Map в порядке вставки.
+
Map.prototype[@@iterator]()
+
Возвращает новый объект Iterator который содержит массив [key, value] для каждого элемента в объекте Map в порядке вставки.
+
+ +

Примеры

+ +

Использование объекта Map

+ +
const myMap = new Map();
+
+const keyObj = {},
+    keyFunc = function () {},
+    keyString = 'a string';
+
+// задание значений
+myMap.set(keyString, 'value associated with “a string”');
+myMap.set(keyObj, 'value associated with keyObj');
+myMap.set(keyFunc, 'value associated with keyFunc');
+
+myMap.size; // 3
+
+// получение значений
+myMap.get(keyString);    // value associated with “a string”
+myMap.get(keyObj);       // value associated with keyObj
+myMap.get(keyFunc);      // value associated with keyFunc
+
+myMap.get('a string');   // "value associated with 'a string'"
+                         // потому что keyString === 'a string'
+myMap.get({});           // undefined, потому что keyObj !== {} ({} — это литеральная нотация конструктора класса Object)
+myMap.get(function() {}) // undefined, потому что keyFunc !== function () {}
+
+ +

Использование NaN в качестве ключей Map

+ +

NaN может быть использован в качестве ключа. Несмотря на то, что NaN не равен самому себе (NaN !== NaN вернёт true), следующий пример работает, потому что NaN обрабатывается особым образом:

+ +
const myMap = new Map();
+myMap.set(NaN, 'not a number');
+
+myMap.get(NaN); // not a number
+
+const otherNaN = Number('foo');
+myMap.get(otherNaN); // not a number
+
+ +

Итерация Map при помощи for..of

+ +

Map может быть итерирован с помощью for..of:

+ +
const myMap = new Map();
+myMap.set(0, 'zero');
+myMap.set(1, 'one');
+for (var [key, value] of myMap) {
+  console.log(key + ' = ' + value);
+}
+// 0 = zero
+// 1 = one
+
+for (var key of myMap.keys()) {
+  console.log(key);
+}
+// 0
+// 1
+
+for (var value of myMap.values()) {
+  console.log(value);
+}
+// zero
+// one
+
+for (var [key, value] of myMap.entries()) {
+  console.log(key + ' = ' + value);
+}
+// 0 = zero
+// 1 = one
+
+ +

Итерация Map при помощи forEach()

+ +

Map может быть итерирован с помощью метода forEach():

+ +
myMap.forEach(function(value, key) {
+  console.log(`${key} => ${value}`);
+});
+// 0 => zero
+// 1 => one
+
+ +

Взаимоотношения с объектом Array

+ +
const kvArray = [['key1', 'value1'], ['key2', 'value2']];
+
+// Используйте конструктор Map для преобразования двумерных массивов в Map
+const myMap = new Map(kvArray);
+
+myMap.get('key1'); // вернёт “value1”
+
+// Используйте функцию Array.from для трансформации Map в двумерный key-value массив
+console.log(Array.from(myMap)); // Выведет точно такой же массив как kvArray
+
+// Или используйте итераторы  keys или values чтобы преобразовать ключи или значения в массивы
+console.log(Array.from(myMap.keys())); // Выведет ['key1', 'key2']
+
+ +

Клонирование и сляние Map

+ +

 Равно как и {{jsxref("Array", "Массивы")}}, Map могут быть клонированы:

+ +
const original = new Map([
+  [1, 'one']
+]);
+
+const clone = new Map(original);
+
+console.log(clone.get(1)); // one
+console.log(original === clone); // false.
+ +

Следует помнить, что данные не клонируются.

+ +

Map могут быть слиты, с сохранением уникальности ключей:

+ +
const first = new Map([
+  [1, 'one'],
+  [2, 'two'],
+  [3, 'three'],
+]);
+
+const second = new Map([
+  [1, 'uno'],
+  [2, 'dos']
+]);
+
+// Слияние двух Map. Взят будет последний повторившийся ключ.
+// Оператор Spread по сути преобразует Map в массив
+const merged = new Map([...first, ...second]);
+
+console.log(merged.get(1)); // uno
+console.log(merged.get(2)); // dos
+console.log(merged.get(3)); // three
+ +

Map могут быть слиты и с {{jsxref("Array", "Массивами")}}:

+ +
const first = new Map([
+  [1, 'one'],
+  [2, 'two'],
+  [3, 'three'],
+]);
+
+const second = new Map([
+  [1, 'uno'],
+  [2, 'dos']
+]);
+
+// Слияние Map и массива. Как и при слиянии двух Map - взят будет последний повторившийся ключ.
+const merged = new Map([...first, ...second, [1, 'eins']]);
+
+console.log(merged.get(1)); // eins
+console.log(merged.get(2)); // dos
+console.log(merged.get(3)); // three
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map-objects', 'Map')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Map")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/keys/index.html b/files/ru/web/javascript/reference/global_objects/map/keys/index.html new file mode 100644 index 0000000000..d7221c9a6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/keys/index.html @@ -0,0 +1,117 @@ +--- +title: Map.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Map/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys +--- +
{{JSRef}}
+ +

Метод keys() возвращает новый Итератор, содержащий ключи каждого элемента объекта {{jsxref("Map")}} в том порядке, в котором они были заведены.

+ +

Синтаксис

+ +
myMap.keys()
+ +

Возвращаемое значение

+ +

Новый итератор объекта {{jsxref("Map")}}.

+ +

Примеры

+ +

Использование метода keys()

+ +
var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.keys();
+
+console.log(mapIter.next().value); // "0"
+console.log(mapIter.next().value); // 1
+console.log(mapIter.next().value); // Object
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatVersionUnknown}}{{CompatGeckoDesktop("20")}}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatVersionUnknown}}{{CompatGeckoMobile("20") }}{{CompatNo}}{{CompatNo}}8
+
+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/prototype/index.html b/files/ru/web/javascript/reference/global_objects/map/prototype/index.html new file mode 100644 index 0000000000..a930a48b30 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/prototype/index.html @@ -0,0 +1,125 @@ +--- +title: Map.prototype +slug: Web/JavaScript/Reference/Global_Objects/Map/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef}}
+ +

Свойство Map.prototype представляет собой прототип конструктора {{jsxref("Map")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Экземпляры {{jsxref("Map")}} наследуются от {{jsxref("Map.prototype")}}. Вы можете использовать объект конструктора прототипа для добавления свойств и методов ко всем экземплярам Map.

+ +

Свойства

+ +
+
Map.prototype.constructor
+
Возвращает функцию, создающую экземпляр прототипа. Это функция {{jsxref("Map")}} по умолчанию. 
+
{{jsxref("Map.prototype.size")}}
+
Возвращает количество пар key/value, содержащихся в объекте Map.
+
+ +

Методы

+ +
+
{{jsxref("Map.prototype.clear()")}}
+
Удаляет все пары key/value из объекта Map.
+
{{jsxref("Map.delete", "Map.prototype.delete(key)")}}
+
Возвращает true, если элемент присутствовал в объекте Map и был удалён, или false, если элемент отсутствует. После вызова этого метода Map.prototype.has(key) вернёт false.
+
{{jsxref("Map.prototype.entries()")}}
+
Возвращает новый объект итератора - new Iterator, который содержит массив из [key, value] для каждого элемента в объекте Map в порядке добавления.
+
{{jsxref("Map.forEach", "Map.prototype.forEach(callbackFn[, thisArg])")}}
+
Вызывает callbackFn для каждой пары key/value, находящейся в объекте Map, в порядке добавления. Если указан параметр thisArg, он будет использоваться в качестве значения this при каждом вызове callbackFn. 
+
{{jsxref("Map.get", "Map.prototype.get(key)")}}
+
Возвращает значение по указанному ключу key или undefined, если значение отсутствует. 
+
{{jsxref("Map.has", "Map.prototype.has(key)")}}
+
Возвращает true или false в зависимости от того, было ли значение связано с key в объекте Map или нет.
+
{{jsxref("Map.prototype.keys()")}}
+
Возвращает новый объект итератора - new Iterator, который содержит keys для каждого элемента в объекте Map в порядке добавления.
+
{{jsxref("Map.set", "Map.prototype.set(key, value)")}}
+
Устанавлиевает value для key в объекте Map. Возвращает объект Map.
+
{{jsxref("Map.prototype.values()")}}
+
Возвращает новый объект итератора - new Iterator, который содержит values для каждого элемента в объекте Map в порядке добавления.
+
{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}
+
Возвращает новый объект итератора - new Iterator, который содержит массив из [key, value] для каждого элемента в объекте Map в порядке добавления. 
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-map.prototype', 'Map.prototype')}}{{Spec2('ES6')}}Initial definition.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка38{{ CompatGeckoDesktop("13") }}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}38{{CompatGeckoMobile("13")}}{{CompatNo}}{{CompatNo}} +

8

+
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/set/index.html b/files/ru/web/javascript/reference/global_objects/map/set/index.html new file mode 100644 index 0000000000..b3f13a7fe5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/set/index.html @@ -0,0 +1,140 @@ +--- +title: Map.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/Map/set +translation_of: Web/JavaScript/Reference/Global_Objects/Map/set +--- +
{{JSRef}}
+ +

Метод set() добавляет объекту {{jsxref("Map")}} новый элемент или обновляет существующий с указанными значениями key и value.

+ +

Синтаксис

+ +
myMap.set(key, value);
+ +

Параметры

+ +
+
key
+
Ключ добавляемого элемента.
+
value
+
Значение добавляемого элемента.
+
+ +

Возвращаемое значение

+ +

Объект {{jsxref("Map")}}.

+ +

Примеры

+ +

Использование метода set()

+ +
var myMap = new Map();
+
+// Добавление нового элемента объекту Map
+myMap.set('bar', 'foo');
+myMap.set(1, 'foobar');
+
+// Обновление существующего элемента
+myMap.set('bar', 'baz');
+
+ +

Последовательное использование метода set()

+ +

Так как метод set() возвращает объект Map, Вы можете последовательно применять метод set() как в примере ниже:

+ +
// Последовательно добавляет новые элементы в myMap:
+myMap.set('bar', 'foo')
+     .set(1, 'foobar')
+     .set(2, 'baz');
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ESDraft')}}
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatVersionUnknown}}{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatVersionUnknown}}{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Примечание к поддержке браузерами

+ + + +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/size/index.html b/files/ru/web/javascript/reference/global_objects/map/size/index.html new file mode 100644 index 0000000000..7716b386fd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/size/index.html @@ -0,0 +1,112 @@ +--- +title: Map.prototype.size +slug: Web/JavaScript/Reference/Global_Objects/Map/size +translation_of: Web/JavaScript/Reference/Global_Objects/Map/size +--- +
{{JSRef}}
+ +

Геттер size возвращает количество элементов в объекте {{jsxref("Map")}}.

+ +

{{EmbedInteractiveExample("pages/js/map-prototype-size.html")}}

+ +

Описание

+ +

Значение size - целое число, описывающее, сколько элементов имеет объект Map. У свойства size не определён сеттер: переопределить его нельзя.

+ +

Примеры

+ +

Использование size

+ +
var myMap = new Map();
+myMap.set("a", "альфа");
+myMap.set("b", "бета");
+myMap.set("g", "гамма");
+
+myMap.size // 3
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ES2015')}}Первое определение
{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("19") }}{{ CompatIE("11") }}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("19")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Замечания для Gecko

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/map/values/index.html b/files/ru/web/javascript/reference/global_objects/map/values/index.html new file mode 100644 index 0000000000..6267dab64e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/values/index.html @@ -0,0 +1,116 @@ +--- +title: Map.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Map/values +translation_of: Web/JavaScript/Reference/Global_Objects/Map/values +--- +
{{JSRef}}
+ +

Метод values() возвращает новый Итератор, содержащий значения каждого элемента в объекте {{jsxref("Map")}} в том порядке, в котором они были заведены.

+ +

Синтаксис

+ +
myMap.values()
+ +

Возвращаемое значение

+ +

Новый итератор объекта {{jsxref("Map")}}.

+ +

Примеры

+ +

Использование values()

+ +
var myMap = new Map();
+myMap.set('0', 'foo');
+myMap.set(1, 'bar');
+myMap.set({}, 'baz');
+
+var mapIter = myMap.values();
+
+console.log(mapIter.next().value); // "foo"
+console.log(mapIter.next().value); // "bar"
+console.log(mapIter.next().value); // "baz"
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatVersionUnknown}}{{ CompatGeckoDesktop("20") }}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatVersionUnknown}}{{ CompatGeckoMobile("20") }}{{CompatNo}}{{CompatNo}}8
+
+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/abs/index.html b/files/ru/web/javascript/reference/global_objects/math/abs/index.html new file mode 100644 index 0000000000..2d46eb6650 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/abs/index.html @@ -0,0 +1,100 @@ +--- +title: Math.abs() +slug: Web/JavaScript/Reference/Global_Objects/Math/abs +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.abs() возвращает абсолютное значение числа. то есть

+ +

Math.abs(x)=|x|={xifx0-xifx<0{\mathtt{\operatorname{Math.abs}(x)}} = {|x|} = \begin{cases} x & \text{if} \quad x \geq 0 \\ x & \text{if} \quad x < 0 \end{cases}

+ +

Синтаксис

+ +
Math.abs(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод abs() является статическим методом объекта Math, вы всегда должны использовать его как Math.abs(), а не пытаться вызывать метод на созданном объекте Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: поведение метода Math.abs()

+ +

Метод вернёт {{jsxref("NaN")}}, если в него передать нечисловую строку или значение {{jsxref("undefined")}}/ничего не передавать. Метод вернёт 0, если в него передать значение {{jsxref("null")}}.

+ +
Math.abs('-1');     // 1
+Math.abs(-2);       // 2
+Math.abs(null);     // 0
+Math.abs('');       // 0
+Math.abs([]);       // 0
+Math.abs([2]);      // 2
+Math.abs([1,2]);    // NaN
+Math.abs({});       // NaN
+Math.abs('string'); // NaN
+Math.abs();         // NaN
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.1', 'Math.abs')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.abs', 'Math.abs')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-math.abs', 'Math.abs')}}{{Spec2('ESDraft')}}
+ + + +


+ Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Math.abs")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/acos/index.html b/files/ru/web/javascript/reference/global_objects/math/acos/index.html new file mode 100644 index 0000000000..0506d944ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/acos/index.html @@ -0,0 +1,125 @@ +--- +title: Math.acos() +slug: Web/JavaScript/Reference/Global_Objects/Math/acos +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.acos() возвращает арккосинус числа (в радианах), то есть

+

x[-1;1],Math.acos(x)=arccos(x)= уникальный y[0;π]такой, чтоcos(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ уникальный } \; y \in [0; \pi] \, \text{такой, что} \; \cos(y) = x

+ +

Синтаксис

+
Math.acos(x)
+ +

Параметры

+
+
x
+
Число.
+
+ +

Описание

+

Метод Math.acos() возвращает числовое значение между 0 и π радианами для значения x, лежащего в диапазоне от -1 до 1. Метод вернёт {{jsxref("NaN")}}, если значение x выйдет за этот диапазон.

+

Поскольку метод acos() является статическим методом объекта Math, вы всегда должны использовать его как Math.acos(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.acos()

+
Math.acos(-2);  // NaN
+Math.acos(-1);  // 3.141592653589793
+Math.acos(0);   // 1.5707963267948966
+Math.acos(0.5); // 1.0471975511965979
+Math.acos(1);   // 0
+Math.acos(2);   // NaN
+
+

Для значений, меньших -1 или больших 1, метод Math.acos() возвращает {{jsxref("NaN")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.2', 'Math.acos')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.acos', 'Math.acos')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/acosh/index.html b/files/ru/web/javascript/reference/global_objects/math/acosh/index.html new file mode 100644 index 0000000000..7dc0900c24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/acosh/index.html @@ -0,0 +1,136 @@ +--- +title: Math.acosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/acosh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.acosh() возвращает гиперболический арккосинус числа, то есть

+ +

x1,Math.acosh(x)=arcosh(x)= уникальный y0такой, чтоcosh(y)=x\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ уникальный } \; y \geq 0 \; \text{такой, что} \; \cosh(y) = x

+ +

Синтаксис

+ +
Math.acosh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод acosh() является статическим методом объекта Math, вы всегда должны использовать его как Math.acosh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.acosh()

+ +
Math.acosh(-1); // NaN
+Math.acosh(0);  // NaN
+Math.acosh(0.5) // NaN
+Math.acosh(1);  // 0
+Math.acosh(2);  // 1.3169578969248166
+
+ +

Для значений, меньших 1, метод Math.acosh() возвращает {{jsxref("NaN")}}.

+ +

Полифилл

+ +

Для всех x1x \geq 1, мы имеем arcosh(x)=ln(x+x2-1)\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right), так что этот метод может эмулироваться следующим образом:

+ +
Math.acosh = Math.acosh || function(x) {
+  return Math.log(x + Math.sqrt(x * x - 1));
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/asin/index.html b/files/ru/web/javascript/reference/global_objects/math/asin/index.html new file mode 100644 index 0000000000..beb9fcfe19 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/asin/index.html @@ -0,0 +1,125 @@ +--- +title: Math.asin() +slug: Web/JavaScript/Reference/Global_Objects/Math/asin +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.asin() возвращает арксинус числа (в радианах), то есть

+

x[-1;1],Math.asin(x)=arcsin(x)= уникальный y[-π2;π2]такой, чтоsin(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ уникальный } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{такой, что} \; \sin(y) = x

+ +

Синтаксис

+
Math.asin(x)
+ +

Параметры

+
+
x
+
Число.
+
+ +

Описание

+

Метод Math.asin() возвращает числовое значение между -π2-\frac{\pi}{2} и π2\frac{\pi}{2} радианами для значения x, лежащего в диапазоне от -1 до 1. Метод вернёт {{jsxref("NaN")}}, если значение x выйдет за этот диапазон.

+

Поскольку метод asin() является статическим методом объекта Math, вы всегда должны использовать его как Math.asin(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.asin()

+
Math.asin(-2);  // NaN
+Math.asin(-1);  // -1.5707963267948966 (-pi/2)
+Math.asin(0);   // 0
+Math.asin(0.5); // 0.5235987755982989
+Math.asin(1);   // 1.570796326794897 (pi/2)
+Math.asin(2);   // NaN
+
+

Для значений, меньших -1 или больших 1, метод Math.asin() возвращает {{jsxref("NaN")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.3', 'Math.asin')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.asin', 'Math.asin')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/asinh/index.html b/files/ru/web/javascript/reference/global_objects/math/asinh/index.html new file mode 100644 index 0000000000..f1d1937d36 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/asinh/index.html @@ -0,0 +1,135 @@ +--- +title: Math.asinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/asinh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.asinh() возвращает гиперболический арксинус числа, то есть

+ +

Math.asinh(x)=arsinh(x)= уникальный yтакой, чтоsinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ уникальный } \; y \; \text{такой, что} \; \sinh(y) = x

+ +

Синтаксис

+ +
Math.asinh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод asinh() является статическим методом объекта Math, вы всегда должны использовать его как Math.asinh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.asinh()

+ +
Math.asinh(1);  // 0.881373587019543
+Math.asinh(0);  // 0
+
+ +

Полифилл

+ +

Мы имеем arsinh(x)=ln(x+x2+1)\operatorname {arsinh} (x) = \ln \left(x + \sqrt{x^{2} + 1} \right), так что этот метод может эмулироваться следующим образом:

+ +
Math.asinh = Math.asinh || function(x) {
+  if (x === -Infinity) {
+    return x;
+  } else {
+    return Math.log(x + Math.sqrt(x * x + 1));
+  }
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/atan/index.html b/files/ru/web/javascript/reference/global_objects/math/atan/index.html new file mode 100644 index 0000000000..78ece8df0f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atan/index.html @@ -0,0 +1,120 @@ +--- +title: Math.atan() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.atan() возвращает арктангенс числа (в радианах), то есть

+

Math.atan(x)=arctan(x)= уникальный y[-π2;π2]такой, чтоtan(y)=x\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ уникальный } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{такой, что} \; \tan(y) = x

+ +

Синтаксис

+
Math.atan(x)
+ +

Параметры

+
+
x
+
Число.
+
+ +

Описание

+

Метод Math.atan() возвращает числовое значение между -π2-\frac{\pi}{2} и π2\frac{\pi}{2} радианами.

+

Поскольку метод atan() является статическим методом объекта Math, вы всегда должны использовать его как Math.atan(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.atan()

+
Math.atan(1);  // 0.7853981633974483
+Math.atan(0);  // 0
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.4', 'Math.atan')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.atan', 'Math.atan')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/atan2/index.html b/files/ru/web/javascript/reference/global_objects/math/atan2/index.html new file mode 100644 index 0000000000..08cdb00c7e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atan2/index.html @@ -0,0 +1,134 @@ +--- +title: Math.atan2() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan2 +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.atan2() возвращает арктангенс от частного своих аргументов.

+ +

Синтаксис

+
Math.atan2(y, x)
+ +

Параметры

+
+
y
+
Первое число.
+
x
+
Второе число.
+
+ +

Описание

+

Метод Math.atan2() возвращает числовое значение от -π до π, представляющее угол тета точки (x, y). Это выраженный в радианах угол, отсчитываемый против часовой стрелки от положительного направления оси X до точки (x, y). Обратите внимание, что первым в метод передаётся координата y, а только вторым — координата x.

+

В метод Math.atan2() аргументы x и y передаются по отдельности, в то время, как в метод Math.atan() передаётся отношение этих двух аргументов.

+

Поскольку метод atan2() является статическим методом объекта Math, вы всегда должны использовать его как Math.atan2(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.atan2()

+
Math.atan2(90, 15); // 1.4056476493802699
+Math.atan2(15, 90); // 0.16514867741462683
+
+Math.atan2(±0, -0);               // ±PI.
+Math.atan2(±0, +0);               // ±0.
+Math.atan2(±0, -x);               // ±PI для x > 0.
+Math.atan2(±0, x);                // ±0 дляx > 0.
+Math.atan2(-y, ±0);               // -PI/2 для y > 0.
+Math.atan2(y, ±0);                // PI/2 для y > 0.
+Math.atan2(±y, -Infinity);        // ±PI для конечного y > 0.
+Math.atan2(±y, +Infinity);        // ±0 для конечного y > 0.
+Math.atan2(±Infinity, x);         // ±PI/2 для конечного x.
+Math.atan2(±Infinity, -Infinity); // ±3*PI/4.
+Math.atan2(±Infinity, +Infinity); // ±PI/4.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.5', 'Math.atan2')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.atan2', 'Math.atan2')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/atanh/index.html b/files/ru/web/javascript/reference/global_objects/math/atanh/index.html new file mode 100644 index 0000000000..55aabd470e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atanh/index.html @@ -0,0 +1,137 @@ +--- +title: Math.atanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/atanh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.atanh() возвращает гиперболический арктангенс числа, то есть

+ +

x(-1,1),Math.atanh(x)=arctanh(x)= уникальный yтакой, чтоtanh(y)=x\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ уникальный } \; y \; \text{такой, что} \; \tanh(y) = x

+ +

Синтаксис

+ +
Math.atanh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод atanh() является статическим методом объекта Math, вы всегда должны использовать его как Math.atanh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.atanh()

+ +
Math.atanh(-2);  // NaN
+Math.atanh(-1);  // -Infinity
+Math.atanh(0);   // 0
+Math.atanh(0.5); // 0.5493061443340548
+Math.atanh(1);   // Infinity
+Math.atanh(2);   // NaN
+
+ +

Для значений, меньших -1 или больших 1, метод Math.atanh() возвращает {{jsxref("NaN")}}.

+ +

Полифилл

+ +

Для |x|<1\left|x\right| < 1, мы имеем artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right), так что этот метод может эмулироваться следующим образом:

+ +
Math.atanh = Math.atanh || function(x) {
+  return Math.log((1+x)/(1-x)) / 2;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.atanh', 'Math.atanh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html b/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html new file mode 100644 index 0000000000..6eccb4f7f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html @@ -0,0 +1,134 @@ +--- +title: Math.cbrt() +slug: Web/JavaScript/Reference/Global_Objects/Math/cbrt +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.cbrt() возвращает кубический корень числа, то есть

+Math.cbrt(x)=x3=уникальныйyтакой, чтоy3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{уникальный} \; y \; \text{такой, что} \; y^3 = xСинтаксис + +
Math.cbrt(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод cbrt() является статическим методом объекта Math, вы всегда должны использовать его как Math.cbrt(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.cbrt()

+ +
Math.cbrt(-1); // -1
+Math.cbrt(0);  // 0
+Math.cbrt(1);  // 1
+
+Math.cbrt(2);  // 1.2599210498948734
+
+ +

Полифилл

+ +

Для всех x0x \geq 0, мы имеем x3=x1/3\sqrt[3]{x} = x^{1/3}, так что этот метод может эмулироваться следующим образом:

+ +
Math.cbrt = Math.cbrt || function(x) {
+  if (x === 0 || x === +1 / 0 || x === -1 / 0 || x !== x) {
+    return x;
+  }
+  var a = Math.abs(x);
+  var y = Math.exp(Math.log(a) / 3);
+  // from http://en.wikipedia.org/wiki/Cube_root#Numerical_methods
+  return (x / a) * (y + (a / (y * y) - y) / 3);
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.cbrt', 'Math.cbrt')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/ceil/index.html b/files/ru/web/javascript/reference/global_objects/math/ceil/index.html new file mode 100644 index 0000000000..afda2d9bd8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ceil/index.html @@ -0,0 +1,207 @@ +--- +title: Math.ceil() +slug: Web/JavaScript/Reference/Global_Objects/Math/ceil +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.ceil() - округление вверх. Округляет аргумент до ближайшего большего целого.

+ +

Синтаксис

+ +
Math.ceil(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод ceil() является статическим методом объекта Math, вы всегда должны использовать его как Math.ceil(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.ceil()

+ +

Следующий пример показывает использование метода Math.ceil().

+ +
Math.ceil(.95);    // 1
+Math.ceil(4);      // 4
+Math.ceil(7.004);  // 8
+Math.ceil(-0.95);  // -0
+Math.ceil(-4);     // -4
+Math.ceil(-7.004); // -7
+ +

Decimal adjustment

+ +

Пример: корректировка округления десятичных дробей

+ +
// Замыкание
+(function() {
+  /**
+   * Корректировка округления десятичных дробей.
+   *
+   * @param {String}  type  Тип корректировки.
+   * @param {Number}  value Число.
+   * @param {Integer} exp   Показатель степени (десятичный логарифм основания корректировки).
+   * @returns {Number} Скорректированное значение.
+   */
+  function decimalAdjust(type, value, exp) {
+    // Если степень не определена, либо равна нулю...
+    if (typeof exp === 'undefined' || +exp === 0) {
+      return Math[type](value);
+    }
+    value = +value;
+    exp = +exp;
+    // Если значение не является числом, либо степень не является целым числом...
+    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+      return NaN;
+    }
+    // Сдвиг разрядов
+    value = value.toString().split('e');
+    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+    // Обратный сдвиг
+    value = value.toString().split('e');
+    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+  }
+
+  // Десятичное округление к ближайшему
+  if (!Math.round10) {
+    Math.round10 = function(value, exp) {
+      return decimalAdjust('round', value, exp);
+    };
+  }
+  // Десятичное округление вниз
+  if (!Math.floor10) {
+    Math.floor10 = function(value, exp) {
+      return decimalAdjust('floor', value, exp);
+    };
+  }
+  // Десятичное округление вверх
+  if (!Math.ceil10) {
+    Math.ceil10 = function(value, exp) {
+      return decimalAdjust('ceil', value, exp);
+    };
+  }
+})();
+
+// Округление к ближайшему
+Math.round10(55.55, -1);   // 55.6
+Math.round10(55.549, -1);  // 55.5
+Math.round10(55, 1);       // 60
+Math.round10(54.9, 1);     // 50
+Math.round10(-55.55, -1);  // -55.5
+Math.round10(-55.551, -1); // -55.6
+Math.round10(-55, 1);      // -50
+Math.round10(-55.1, 1);    // -60
+// Округление вниз
+Math.floor10(55.59, -1);   // 55.5
+Math.floor10(59, 1);       // 50
+Math.floor10(-55.51, -1);  // -55.6
+Math.floor10(-51, 1);      // -60
+// Округление вверх
+Math.ceil10(55.51, -1);    // 55.6
+Math.ceil10(51, 1);        // 60
+Math.ceil10(-55.59, -1);   // -55.5
+Math.ceil10(-59, 1);       // -50
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/clz32/index.html b/files/ru/web/javascript/reference/global_objects/math/clz32/index.html new file mode 100644 index 0000000000..127ae43179 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/clz32/index.html @@ -0,0 +1,140 @@ +--- +title: Math.clz32() +slug: Web/JavaScript/Reference/Global_Objects/Math/clz32 +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.clz32() возвращает количество ведущих нулевых битов в 32-битном двоичном представлении числа.

+ +

Синтаксис

+ +
Math.clz32(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Название clz32 является сокращением для более длинного CountLeadingZeroes32 (ПосчтитатьВедущиеНули32).

+ +

Если значение x не является числом, оно будет сначала преобразовано в число, а потом в 32-битное беззнаковое целое число.

+ +

Если преобразованое 32-битное беззнаковое целое число равно 0, метод вернёт 32, поскольку все биты в числе равны 0.

+ +

Этот метод особено полезен для систем, которые компилируются в JS, например, для Emscripten.

+ +

Примеры

+ +

Пример: использование метода Math.clz32()

+ +
Math.clz32(1);                // 31
+Math.clz32(1000);             // 22
+Math.clz32();                 // 32
+
+[NaN, Infinity, -Infinity, 0, -0, null, undefined, 'foo', {}, []].filter(
+function(n) {
+  return Math.clz32(n) !== 32
+});                           // []
+
+Math.clz32(true);             // 31
+Math.clz32(3.5);              // 30
+
+ +

Полифилл

+ +
Math.clz32 = Math.clz32 || function(value) {
+  value = Number(value) >>> 0;
+  return value !== 0 ? 31 - Math.floor(Math.log(value + 0.5) / Math.log(2)) : 32;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.clz32', 'Math.clz32')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("35")}}{{CompatGeckoDesktop("31")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("31")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/cos/index.html b/files/ru/web/javascript/reference/global_objects/math/cos/index.html new file mode 100644 index 0000000000..1e3bf2088c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cos/index.html @@ -0,0 +1,122 @@ +--- +title: Math.cos() +slug: Web/JavaScript/Reference/Global_Objects/Math/cos +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.cos() возвращает косинус числа.

+ +

Синтаксис

+
Math.cos(x)
+ +

Параметры

+
+
x
+
Число радиан.
+
+ +

Описание

+

Метод Math.cos() возвращает числовое значение от -1 до 1, которое представляет косинус угла.

+

Поскольку метод cos() является статическим методом объекта Math, вы всегда должны использовать его как Math.cos(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.cos()

+
Math.cos(0);           // 1
+Math.cos(1);           // 0.5403023058681398
+
+Math.cos(Math.PI);     // -1
+Math.cos(2 * Math.PI); // 1
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.7', 'Math.cos')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.cos', 'Math.cos')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/cosh/index.html b/files/ru/web/javascript/reference/global_objects/math/cosh/index.html new file mode 100644 index 0000000000..548d793b7e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cosh/index.html @@ -0,0 +1,140 @@ +--- +title: Math.cosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/cosh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cosh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.cosh() возвращает гиперболический косинус числа, который может быть выражен через {{jsxref("Math.E", "число e", "", 1)}}:

+ +

Math.cosh(x)=ex+e-x2\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2}

+ +

Синтаксис

+ +
Math.cosh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод cosh() является статическим методом объекта Math, вы всегда должны использовать его как Math.cosh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.cosh()

+ +
Math.cosh(0);  // 1
+Math.cosh(1);  // 1.5430806348152437
+Math.cosh(-1); // 1.5430806348152437
+
+ +

Полифилл

+ +

Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:

+ +
Math.cosh = Math.cosh || function(x) {
+  return (Math.exp(x) + Math.exp(-x)) / 2;
+}
+
+ +

либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:

+ +
Math.cosh = Math.cosh || function(x) {
+  var y = Math.exp(x);
+  return (y + 1 / y) / 2;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.cosh', 'Math.cosh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/e/index.html b/files/ru/web/javascript/reference/global_objects/math/e/index.html new file mode 100644 index 0000000000..bcceeb4bc5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.E +slug: Web/JavaScript/Reference/Global_Objects/Math/E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/E +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.E представляет основание натурального логарифма, e, приблизительно равное 2,718.

+

Math.E=e2,718\mathtt{\mi{Math.E}} = e \approx 2,718

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство E является статическим свойством объекта Math, вы всегда должны использовать его как Math.E, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.E

+

Следующая функция возвращает e:

+
function getNapier() {
+  return Math.E;
+}
+
+getNapier(); // 2.718281828459045
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.1', 'Math.E')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.e', 'Math.E')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/exp/index.html b/files/ru/web/javascript/reference/global_objects/math/exp/index.html new file mode 100644 index 0000000000..1d516d229e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/exp/index.html @@ -0,0 +1,120 @@ +--- +title: Math.exp() +slug: Web/JavaScript/Reference/Global_Objects/Math/exp +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.exp() возвращает значение выражения ex, где x — аргумент метода, а e — {{jsxref("Math.E", "число Эйлера", "", 1)}}, основание натурального логарифма.

+ +

Синтаксис

+
Math.exp(x)
+ +

Параметры

+
+
x
+
Число.
+
+ +

Описание

+

Поскольку метод exp() является статическим методом объекта Math, вы всегда должны использовать его как Math.exp(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.exp()

+
Math.exp(-1); // 0.36787944117144233
+Math.exp(0);  // 1
+Math.exp(1);  // 2.718281828459045
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/expm1/index.html b/files/ru/web/javascript/reference/global_objects/math/expm1/index.html new file mode 100644 index 0000000000..26b21553ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/expm1/index.html @@ -0,0 +1,132 @@ +--- +title: Math.expm1() +slug: Web/JavaScript/Reference/Global_Objects/Math/expm1 +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.expm1() возвращает значение выражения ex - 1, где x — аргумент метода, а {{jsxref("Math.E", "e", "", 1)}} — основание натурального логарифма.

+ +

Синтаксис

+ +
Math.expm1(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод expm1() является статическим методом объекта Math, вы всегда должны использовать его как Math.expm1(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.expm1()

+ +
Math.expm1(-1); // -0.6321205588285577
+Math.expm1(0);  // 0
+Math.expm1(1);  // 1.718281828459045
+
+ +

Полифилл

+ +

Этот метод может эмулироваться при помощи метода {{jsxref("Math.exp()")}}:

+ +
Math.expm1 = Math.expm1 || function(x) {
+  return Math.exp(x) - 1;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.expm1', 'Math.expm1')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/floor/index.html b/files/ru/web/javascript/reference/global_objects/math/floor/index.html new file mode 100644 index 0000000000..c11fe6420e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/floor/index.html @@ -0,0 +1,200 @@ +--- +title: Math.floor() +slug: Web/JavaScript/Reference/Global_Objects/Math/floor +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.floor() - округление вниз. Округляет аргумент до ближайшего меньшего целого.

+ +

Синтаксис

+ +
Math.floor(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод floor() является статическим методом объекта Math, вы всегда должны использовать его как Math.floor(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.floor()

+ +
Math.floor( 45.95); //  45
+Math.floor(-45.95); // -46
+
+ +

Пример: корректировка округления десятичных дробей

+ +
// Замыкание
+(function() {
+  /**
+   * Корректировка округления десятичных дробей.
+   *
+   * @param {String}  type  Тип корректировки.
+   * @param {Number}  value Число.
+   * @param {Integer} exp   Показатель степени (десятичный логарифм основания корректировки).
+   * @returns {Number} Скорректированное значение.
+   */
+  function decimalAdjust(type, value, exp) {
+    // Если степень не определена, либо равна нулю...
+    if (typeof exp === 'undefined' || +exp === 0) {
+      return Math[type](value);
+    }
+    value = +value;
+    exp = +exp;
+    // Если значение не является числом, либо степень не является целым числом...
+    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+      return NaN;
+    }
+    // Сдвиг разрядов
+    value = value.toString().split('e');
+    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+    // Обратный сдвиг
+    value = value.toString().split('e');
+    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+  }
+
+  // Десятичное округление к ближайшему
+  if (!Math.round10) {
+    Math.round10 = function(value, exp) {
+      return decimalAdjust('round', value, exp);
+    };
+  }
+  // Десятичное округление вниз
+  if (!Math.floor10) {
+    Math.floor10 = function(value, exp) {
+      return decimalAdjust('floor', value, exp);
+    };
+  }
+  // Десятичное округление вверх
+  if (!Math.ceil10) {
+    Math.ceil10 = function(value, exp) {
+      return decimalAdjust('ceil', value, exp);
+    };
+  }
+})();
+
+// Округление к ближайшему
+Math.round10(55.55, -1);   // 55.6
+Math.round10(55.549, -1);  // 55.5
+Math.round10(55, 1);       // 60
+Math.round10(54.9, 1);     // 50
+Math.round10(-55.55, -1);  // -55.5
+Math.round10(-55.551, -1); // -55.6
+Math.round10(-55, 1);      // -50
+Math.round10(-55.1, 1);    // -60
+// Округление вниз
+Math.floor10(55.59, -1);   // 55.5
+Math.floor10(59, 1);       // 50
+Math.floor10(-55.51, -1);  // -55.6
+Math.floor10(-51, 1);      // -60
+// Округление вверх
+Math.ceil10(55.51, -1);    // 55.6
+Math.ceil10(51, 1);        // 60
+Math.ceil10(-55.59, -1);   // -55.5
+Math.ceil10(-59, 1);       // -50
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.9', 'Math.floor')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.floor', 'Math.floor')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/fround/index.html b/files/ru/web/javascript/reference/global_objects/math/fround/index.html new file mode 100644 index 0000000000..b6dd9e242d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/fround/index.html @@ -0,0 +1,128 @@ +--- +title: Math.fround() +slug: Web/JavaScript/Reference/Global_Objects/Math/fround +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.fround() возвращает ближайшее число с плавающей запятой одинарной точности, представляющее указанное число.

+ +

Синтаксис

+ +
Math.fround(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод fround() является статическим методом объекта Math, вы всегда должны использовать его как Math.fround(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.fround()

+ +
Math.fround(0);     // 0
+Math.fround(1);     // 1
+Math.fround(1.337); // 1.3370000123977661
+Math.fround(1.5);   // 1.5
+Math.fround(NaN);   // NaN
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим образом, при условии, что среда выполнения поддерживает объект {{jsxref("Float32Array")}}:

+ +
Math.fround = Math.fround || function(x) {
+  return new Float32Array([x])[0];
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.fround', 'Math.fround')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("26")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/hypot/index.html b/files/ru/web/javascript/reference/global_objects/math/hypot/index.html new file mode 100644 index 0000000000..df3271d28c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/hypot/index.html @@ -0,0 +1,149 @@ +--- +title: Math.hypot() +slug: Web/JavaScript/Reference/Global_Objects/Math/hypot +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.hypot() возвращает квадратный корень суммы квадратов своих аргументов, то есть

+ +

Math.hypot(v1,v2,,vn)=i=1nvi2=v12+v22++vn2\mathtt{\operatorname{Math.hypot}(v_1, v_2, \dots, v_n)} = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}

+ +

Синтаксис

+ +
Math.hypot([value1[, value2[, ...]]])
+ +

Параметры

+ +
+
value1, value2, ...
+
Числа.
+
+ +

Описание

+ +

Поскольку метод hypot() является статическим методом объекта Math, вы всегда должны использовать его как Math.hypot(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

При вызове без аргументов результатом вызова будет значение +0.

+ +

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

При вызове с одним аргументом, метод Math.hypot() то же самое значение, что и метод Math.abs().

+ +

Примеры

+ +

Пример: использование метода Math.hypot()

+ +
Math.hypot(3, 4);        // 5
+Math.hypot(3, 4, 5);     // 7.0710678118654755
+Math.hypot();            // 0
+Math.hypot(NaN);         // NaN
+Math.hypot(3, 4, 'foo'); // NaN, +'foo' => NaN
+Math.hypot(3, 4, '5');   // 7.0710678118654755, +'5' => 5
+Math.hypot(-3);          // 3, то же самое, что и Math.abs(-3)
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим образом:

+ +
Math.hypot = Math.hypot || function() {
+  var y = 0;
+  var length = arguments.length;
+
+  for (var i = 0; i < length; i++) {
+    if (arguments[i] === Infinity || arguments[i] === -Infinity) {
+      return Infinity;
+    }
+    y += arguments[i] * arguments[i];
+  }
+  return Math.sqrt(y);
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("27")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("27")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/imul/index.html b/files/ru/web/javascript/reference/global_objects/math/imul/index.html new file mode 100644 index 0000000000..8c1480a99a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/imul/index.html @@ -0,0 +1,130 @@ +--- +title: Math.imul() +slug: Web/JavaScript/Reference/Global_Objects/Math/imul +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.imul() возвращает результат перемножения в стиле C двух 32-битных чисел.

+ +

Синтаксис

+ +
Math.imul(a, b)
+ +

Параметры

+ +
+
a
+
Первое число.
+
b
+
Второе число.
+
+ +

Описание

+ +

Метод Math.imul() позволяет выполнять быстрое перемножение двух 32-битных чисел с семантикой C. Эта возможность полезна для таких проектов, как Emscripten. Поскольку метод imul() является статическим методом объекта Math, вы всегда должны использовать его как Math.imul(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.imul()

+ +
Math.imul(2, 4);          // 8
+Math.imul(-1, 8);         // -8
+Math.imul(-2, -2);        // 4
+Math.imul(0xffffffff, 5); // -5
+Math.imul(0xfffffffe, 5); // -10
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим способом:

+ +
Math.imul = Math.imul || function(a, b) {
+  var ah = (a >>> 16) & 0xffff;
+  var al = a & 0xffff;
+  var bh = (b >>> 16) & 0xffff;
+  var bl = b & 0xffff;
+  // сдвиг на 0 бит закрепляет знак в старшей части числа
+  // окончательный |0 преобразует беззнаковое значение обратно в знаковое значение
+  return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.imul', 'Math.imul')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("28")}}{{CompatGeckoDesktop("20")}}{{CompatUnknown}}{{CompatOpera("16")}}{{CompatSafari("7")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("20")}}{{CompatUnknown}}{{CompatUnknown}}iOS 7
+
diff --git a/files/ru/web/javascript/reference/global_objects/math/index.html b/files/ru/web/javascript/reference/global_objects/math/index.html new file mode 100644 index 0000000000..337e2229b2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/index.html @@ -0,0 +1,198 @@ +--- +title: Math +slug: Web/JavaScript/Reference/Global_Objects/Math +tags: + - JavaScript + - Math + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Объект Math является встроенным объектом, хранящим в своих свойствах и методах различные математические константы и функции. Объект Math не является функциональным объектом.

+ +

Math не работает с числами типа {{jsxref("BigInt")}}.

+ +

Описание

+ +

В отличие от других глобальных объектов, объект Math не является конструктором. Все свойства и методы объекта Math являются статическими. Вы ссылаетесь на константу π через Math.PI и вызываете функцию синуса через Math.sin(x), где x является аргументом метода. Константы в JavaScript определены с полной точностью действительных чисел.

+ +

Свойства

+ +
+
{{jsxref("Math.E")}}
+
Число Эйлера или Непера, основание натуральных логарифмов, приблизительно равное 2,718.
+
{{jsxref("Math.LN2")}}
+
Натуральный логарифм из 2, приблизительно равен 0,693.
+
{{jsxref("Math.LN10")}}
+
Натуральный логарифм из 10, приблизительно равен 2,303.
+
{{jsxref("Math.LOG2E")}}
+
Двоичный логарифм из E, приблизительно равен 1,443.
+
{{jsxref("Math.LOG10E")}}
+
Десятичный логарифм из E, приблизительно равен 0,434.
+
{{jsxref("Math.PI")}}
+
Отношение длины окружности круга к его диаметру, приблизительно равно 3,14159.
+
{{jsxref("Math.SQRT1_2")}}
+
Квадратный корень из 1/2; или, что тоже самое, 1, делённая на квадратный корень из 2, приблизительно равен 0,707.
+
{{jsxref("Math.SQRT2")}}
+
Квадратный корень из 2, приблизительно равен 1,414.
+
+ +

Методы

+ +
+

Обратите внимание, что тригонометрические функции (sin(), cos(), tan(), asin(), acos(), atan() и atan2()) принимают в параметрах или возвращают углы в радианах. Для преобразования радианов в градусы, поделите их на величину (Math.PI / 180); для преобразования в обратном направлении, умножьте градусы на эту же величину.

+
+ +
+

Обратите внимание, что точность большинства математических функций зависит от реализации. Это означает, что различные браузеры могут дать разные результаты, более того, даже один и тот же движок JavaScript на различных операционных системах или архитектурах может выдать разные результаты.

+
+ +
+
{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}
+
Возвращает абсолютное значение числа.
+
{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}
+
Возвращает арккосинус числа.
+
{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический арккосинус числа.
+
{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}
+
Возвращает арксинус числа.
+
{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический арксинус числа.
+
{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}
+
Возвращает арктангенс числа.
+
{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический арктангенс числа.
+
{{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}
+
Возвращает арктангенс от частного своих аргументов.
+
{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}} {{experimental_inline}}
+
Возвращает кубический корень числа.
+
{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}
+
Возвращает значение числа, округлённое к большему целому.
+
{{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}} {{experimental_inline}}
+
Возвращает количество ведущих нулей 32-битного целого числа.
+
{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}
+
Возвращает косинус числа.
+
{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический косинус числа.
+
{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}
+
Возвращает Ex, где x — аргумент, а E — число Эйлера (2,718…), основание натурального логарифма.
+
{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}} {{experimental_inline}}
+
Возвращает exp(x), из которого вычли единицу.
+
{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}
+
Возвращает значение числа, округлённое к меньшему целому.
+
{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}} {{experimental_inline}}
+
Возвращает ближайшее число с плавающей запятой одинарной точности, представляюще это число.
+
{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}} {{experimental_inline}}
+
Возвращает квадратный корень из суммы квадратов своих аргументов.
+
{{jsxref("Global_Objects/Math/imul", "Math.imul(x)")}} {{experimental_inline}}
+
Возвращает результат умножения 32-битных целых чисел.
+
{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}
+
Возвращает натуральный логарифм числа (loge, также известен как ln).
+
{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}} {{experimental_inline}}
+
Возвращает натуральный логарифм числа 1 + x (loge, также известен как ln).
+
{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}} {{experimental_inline}}
+
Возвращает десятичный логарифм числа.
+
{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}} {{experimental_inline}}
+
Возвращает двоичный логарифм числа.
+
{{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}
+
Возвращает наибольшее число из своих аргументов.
+
{{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}
+
Возвращает наименьшее число из своих аргументов.
+
{{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}
+
Возвращает основание в степени экспоненты, то есть, значение выражения основаниеэкспонента.
+
{{jsxref("Global_Objects/Math/random", "Math.random()")}}
+
Возвращает псевдослучайное число в диапазоне от 0 до 1.
+
{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}
+
Возвращает значение числа, округлённое до ближайшего целого.
+
{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}} {{experimental_inline}}
+
Возвращает знак числа, указывающий, является ли число положительным, отрицательным или нулём.
+
{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}
+
Возвращает синус числа.
+
{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический синус числа.
+
{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}
+
Возвращает положительный квадратный корень числа.
+
{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}
+
Возвращает тангенс числа.
+
{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}} {{experimental_inline}}
+
Возвращает гиперболический тангенс числа.
+
Math.toSource() {{non-standard_inline}}
+
Возвращает строку "Math".
+
{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}} {{experimental_inline}}
+
Возвращает целую часть числа, убирая дробные цифры.
+
+ +

Расширение объекта Math

+ +

Как и большинство встроенных объектов в Javascript, объект Math может быть расширен пользовательскими способами и методами. Чтобы расширить объект Math, не используют prototype. Вместо этого, расширяют Math напрямую: 

+ +
Math.propName = propValue;
+Math.methodName = methodRef;
+ +

Например, следующий код добавляет метод к объекту Math для вычисления наибольшего общего делителя списка аргументов.

+ +
/* Вариативная функция -- Возвращает наибольший общий делитель списка аргументов */
+Math.gcd = function() {
+    if (arguments.length == 2) {
+        if (arguments[1] == 0)
+            return arguments[0];
+        else
+            return Math.gcd(arguments[1], arguments[0] % arguments[1]);
+    } else if (arguments.length > 2) {
+        var result = Math.gcd(arguments[0], arguments[1]);
+        for (var i = 2; i < arguments.length; i++)
+            result = Math.gcd(result, arguments[i]);
+        return result;
+    }
+};
+ +

Попробуйте:

+ +
console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.8', 'Math')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math-object', 'Math')}}{{Spec2('ES6')}}Добавлены новые методы: {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} и {{jsxref("Math.clz32()", "clz32()")}}.
{{SpecName('ESDraft', '#sec-math-object', 'Math')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Math")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/ln10/index.html b/files/ru/web/javascript/reference/global_objects/math/ln10/index.html new file mode 100644 index 0000000000..e087dde110 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ln10/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LN10 +slug: Web/JavaScript/Reference/Global_Objects/Math/LN10 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.LN10 представляет натуральный логарифм из 10, приблизительно равный 2,302:

+

Math.LN10=ln(10)2,302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2,302

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство LN10 является статическим свойством объекта Math, вы всегда должны использовать его как Math.LN10, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.LN10

+

Следующая функция возвращает натуральный логарифм из 10:

+
function getNatLog10() {
+  return Math.LN10;
+}
+
+getNatLog10(); // 2.302585092994046
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.2', 'Math.LN10')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.ln10', 'Math.LN10')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/ln2/index.html b/files/ru/web/javascript/reference/global_objects/math/ln2/index.html new file mode 100644 index 0000000000..0c94ff8c5c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ln2/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LN2 +slug: Web/JavaScript/Reference/Global_Objects/Math/LN2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.LN2 представляет натуральный логарифм из 2, приблизительно равный 0,693:

+

Math.LN2=ln(2)0,693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0,693

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство LN2 является статическим свойством объекта Math, вы всегда должны использовать его как Math.LN2, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.LN2

+

Следующая функция возвращает натуральный логарифм из 2:

+
function getNatLog2() {
+  return Math.LN2;
+}
+
+getNatLog2(); // 0.6931471805599453
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.3', 'Math.LN2')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.ln2', 'Math.LN2')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/log/index.html b/files/ru/web/javascript/reference/global_objects/math/log/index.html new file mode 100644 index 0000000000..a106b53028 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log/index.html @@ -0,0 +1,129 @@ +--- +title: Math.log() +slug: Web/JavaScript/Reference/Global_Objects/Math/log +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.log() возвращает натуральный (по основанию {{jsxref("Math.E", "e")}}) логарифм числа, то есть

+

x>0,Math.log(x)=ln(x)=уникальныйyтакой, чтоey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{уникальный} \; y \; \text{такой, что} \; e^y = x

+ +

Синтаксис

+
Math.log(x)
+ +

Параметры

+
+
x
+
Число.
+
+ +

Описание

+

Если значение x меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.

+

Поскольку метод log() является статическим методом объекта Math, вы всегда должны использовать его как Math.log(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.log()

+
Math.log(-1); // NaN, выход за пределы диапазона
+Math.log(0);  // -Infinity
+Math.log(1);  // 0
+Math.log(10); // 2.302585092994046
+
+ +

Пример: использование метода Math.log() с различными основаниями

+

Следующая функция возвращает логарифм из y по основанию x (то есть, logxy\log_x y):

+
function getBaseLog(x, y) {
+  return Math.log(y) / Math.log(x);
+}
+
+

Если вы выполните getBaseLog(10, 1000), функция вернёт 2.9999999999999996 из-за особенностей округления чисел с плавающей запятой, что довольно близко к правильному ответу — 3.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.10', 'Math.log')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.log', 'Math.log')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/log10/index.html b/files/ru/web/javascript/reference/global_objects/math/log10/index.html new file mode 100644 index 0000000000..8ae3c545bf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log10/index.html @@ -0,0 +1,137 @@ +--- +title: Math.log10() +slug: Web/JavaScript/Reference/Global_Objects/Math/log10 +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.log10() возвращает десятичный (по основанию 10) логарифм числа, то есть

+ +

x>0,Math.log10(x)=log10(x)=уникальныйyтакой, что10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{уникальный} \; y \; \text{такой, что} \; 10^y = x

+ +

Синтаксис

+ +
Math.log10(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Если значение x меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Поскольку метод log10() является статическим методом объекта Math, вы всегда должны использовать его как Math.log10(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.log10()

+ +
Math.log10(2);      // 0.3010299956639812
+Math.log10(1);      // 0
+Math.log10(0);      // -Infinity
+Math.log10(-2);     // NaN
+Math.log10(100000); // 5
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим способом:

+ +
Math.log10 = Math.log10 || function(x) {
+  return Math.log(x) / Math.LN10;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.log10', 'Math.log10')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/log10e/index.html b/files/ru/web/javascript/reference/global_objects/math/log10e/index.html new file mode 100644 index 0000000000..9c81d78641 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log10e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LOG10E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.LOG10E представляет десятичный логарифм из e, приблизительно равный 0,434:

+

Math.LOG10E=log10(e)0,434\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0,434

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство LOG10E является статическим свойством объекта Math, вы всегда должны использовать его как Math.LOG10E, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.LOG10E

+

Следующая функция возвращает десятичный логарифм из e:

+
function getLog10e() {
+  return Math.LOG10E;
+}
+
+getLog10e(); // 0.4342944819032518
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.5', 'Math.LOG10E')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.log10e', 'Math.LOG10E')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/log1p/index.html b/files/ru/web/javascript/reference/global_objects/math/log1p/index.html new file mode 100644 index 0000000000..54a33e9e66 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log1p/index.html @@ -0,0 +1,136 @@ +--- +title: Math.log1p() +slug: Web/JavaScript/Reference/Global_Objects/Math/log1p +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.log1p() возвращает натуральный (по основанию {{jsxref("Math.E", "e")}}) логарифм 1 + числа, то есть

+ +

x>-1,Math.log1p(x)=ln(1+x)\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

+ +

Синтаксис

+ +
Math.log1p(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Если значение x меньше -1, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Поскольку метод log1p() является статическим методом объекта Math, вы всегда должны использовать его как Math.log1p(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.log1p()

+ +
Math.log1p(1);  // 0.6931471805599453
+Math.log1p(0);  // 0
+Math.log1p(-1); // -Infinity
+Math.log1p(-2); // NaN
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим способом:

+ +
Math.log1p = Math.log1p || function(x) {
+  return Math.log(1 + x);
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.log1p', 'Math.log1p')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/log2/index.html b/files/ru/web/javascript/reference/global_objects/math/log2/index.html new file mode 100644 index 0000000000..e07c3726c9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log2/index.html @@ -0,0 +1,93 @@ +--- +title: Math.log2() +slug: Web/JavaScript/Reference/Global_Objects/Math/log2 +tags: + - ECMAScript 2015 + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.log2() возвращает двоичный (по основанию 2) логарифм числа, то есть

+ +

x>0,Math.log2(x)=log2(x)=уникальныйyтакой, что2y=x\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{уникальный} \; y \; \text{такой, что} \; 2^y = x

+ +
{{EmbedInteractiveExample("pages/js/math-log2.html")}}
+ + + +

Синтаксис

+ +
Math.log2(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Если значение x меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Поскольку метод log2() является статическим методом объекта Math, вы всегда должны использовать его как Math.log2(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.log2()

+ +
Math.log2(3);    // 1.584962500721156
+Math.log2(2);    // 1
+Math.log2(1);    // 0
+Math.log2(0);    // -Infinity
+Math.log2(-2);   // NaN
+Math.log2(1024); // 10
+
+ +

Полифилл

+ +

Этот метод может эмулироваться следующим способом:

+ +
Math.log2 = Math.log2 || function(x) {
+  return Math.log(x) / Math.LN2;
+};
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.log2', 'Math.log2')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Math.log2")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/log2e/index.html b/files/ru/web/javascript/reference/global_objects/math/log2e/index.html new file mode 100644 index 0000000000..485913672a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log2e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LOG2E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.LOG2E представляет двоичный логарифм из e, приблизительно равный 1,442:

+

Math.LOG2E=log2(e)1,442\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1,442

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство LOG2E является статическим свойством объекта Math, вы всегда должны использовать его как Math.LOG2E, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.LOG2E

+

Следующая функция возвращает двоичный логарифм из e:

+
function getLog2e() {
+  return Math.LOG2E;
+}
+
+getLog2e(); // 1.4426950408889634
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.4', 'Math.LOG2E')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.log2e', 'Math.LOG2E')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/max/index.html b/files/ru/web/javascript/reference/global_objects/math/max/index.html new file mode 100644 index 0000000000..62ec25de32 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/max/index.html @@ -0,0 +1,137 @@ +--- +title: Math.max() +slug: Web/JavaScript/Reference/Global_Objects/Math/max +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/max +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.max() возвращает наибольшее из нуля или более чисел.

+ +

Синтаксис

+ +
Math.max([value1[, value2[, ...]]])
+ +

Параметры

+ +
+
value1, value2, ...
+
Числа.
+
+ +

Описание

+ +

Поскольку метод max() является статическим методом объекта Math, вы всегда должны использовать его как Math.max(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

При вызове без аргументов результатом вызова будет значение -{{jsxref("Global_Objects/Infinity", "Infinity")}}.

+ +

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Примеры

+ +

Пример: использование метода Math.max()

+ +
Math.max(10, 20);   //  20
+Math.max(-10, -20); // -10
+Math.max(-10, 20);  //  20
+
+ +

Нахождение максимального элемента в массиве

+ +

Следующая функция использует метод {{jsxref("Function.prototype.apply()")}} для нахождения максимального элемента в числовом массиве. Вызов getMaxOfArray([1, 2, 3]) эквивалентен вызову Math.max(1, 2, 3), однако вы можете использовать функцию getMaxOfArray() вместе с программно сконструированными массивами любого размера. Рекомендуется использовать только в случае обработки массивов с небольшим количеством элементов.

+ +
function getMaxOfArray(numArray) {
+  return Math.max.apply(null, numArray);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/min/index.html b/files/ru/web/javascript/reference/global_objects/math/min/index.html new file mode 100644 index 0000000000..b365ac5269 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/min/index.html @@ -0,0 +1,147 @@ +--- +title: Math.min() +slug: Web/JavaScript/Reference/Global_Objects/Math/min +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/min +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.min() возвращает наименьшее из нуля или более чисел.

+ +

Синтаксис

+ +
Math.min([value1[, value2[, ...]]])
+ +

Параметры

+ +
+
value1, value2, ...
+
Числа.
+
+ +

Описание

+ +

Поскольку метод min() является статическим методом объекта Math, вы всегда должны использовать его как Math.min(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

При вызове без аргументов результатом вызова будет значение {{jsxref("Global_Objects/Infinity", "Infinity")}}.

+ +

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Примеры

+ +

Пример: использование метода Math.min()

+ +

В этом примере ищется минимум из x и y и присваивается переменной z:

+ +
var x = 10, y = -20;
+var z = Math.min(x, y);
+
+ +

Пример: обрезание значения при помощи метода Math.min()

+ +

Метод Math.min() часто используется для обрезания значения таким образом, чтобы оно всегда не превосходило некоторую границу. Например, такое условие

+ +
var x = f(foo);
+
+if (x > boundary) {
+  x = boundary;
+}
+
+ +

может быть переписано в виде

+ +
var x = Math.min(f(foo), boundary);
+
+ +

Подобным образом может использоваться и метод {{jsxref("Math.max()")}} для обрезания значения по нижней границе.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.12', 'Math.min')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.min', 'Math.min')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/pi/index.html b/files/ru/web/javascript/reference/global_objects/math/pi/index.html new file mode 100644 index 0000000000..ad0f0850c6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/pi/index.html @@ -0,0 +1,111 @@ +--- +title: Math.PI +slug: Web/JavaScript/Reference/Global_Objects/Math/PI +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.PI представляет отношение длины окружности круга к его диаметру, приблизительно равное 3,14159:

+

Math.PI=π3,14159\mathtt{\mi{Math.PI}} = \pi \approx 3,14159

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство PI является статическим свойством объекта Math, вы всегда должны использовать его как Math.PI, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.PI

+

Следующая функция использует значение Math.PI для вычисления длины окружности по известному радиусу круга.

+
function calculateCircumference(radius) {
+  return 2 * Math.PI * radius;
+}
+
+calculateCircumference(1);  // 6.283185307179586
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.6', 'Math.PI')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.pi', 'Math.PI')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/pow/index.html b/files/ru/web/javascript/reference/global_objects/math/pow/index.html new file mode 100644 index 0000000000..190d40b202 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/pow/index.html @@ -0,0 +1,126 @@ +--- +title: Math.pow() +slug: Web/JavaScript/Reference/Global_Objects/Math/pow +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.pow() возвращает основание, возведённое в степень показатель, то есть, значение выражения основаниепоказатель.

+ +

Синтаксис

+ +
Math.pow(base, exponent)
+ +

Параметры

+ +
+
base
+
Основание степени.
+
exponent
+
Показатель степени, в которую возводится основание base.
+
+ +

Описание

+ +

Поскольку метод pow() является статическим методом объекта Math, вы всегда должны использовать его как Math.pow(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.pow()

+ +
Math.pow(7, 2); // 49
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.13', 'Math.pow')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.pow', 'Math.pow')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/random/index.html b/files/ru/web/javascript/reference/global_objects/math/random/index.html new file mode 100644 index 0000000000..7b25fda4d1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/random/index.html @@ -0,0 +1,110 @@ +--- +title: Math.random() +slug: Web/JavaScript/Reference/Global_Objects/Math/random +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/random +--- +
{{JSRef}}
+ +

Метод Math.random() возвращает псевдослучайное число с плавающей запятой из диапазона [0, 1), то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.

+ +

{{EmbedInteractiveExample("pages/js/math-random.html")}}

+ +
+

Примечание: метод Math.random() не предоставляет криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

+
+ +

Синтаксис

+ +
Math.random()
+ +

Возвращаемое значение

+ +

Псевдослучайное число с плавающей запятой от 0 (включительно) до 1 (не считая).

+ +

Примеры

+ +

Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с поведением при округлении к ближайшему чётному, все эти диапазоны (исключая диапазон с простым вызовом Math.random()), не точны. Если заданы очень большие границы (253 или выше), возможен крайне редкий случай вычисления обычно исключённой верхней границы.

+ +

Получение случайного числа от 0 (включительно) до 1 (не включая)

+ +
function getRandom() {
+  return Math.random();
+}
+ +

Получение случайного числа в заданном интервале

+ +

Этот пример возвращает случайное число в заданном интервале. Возвращаемое значение не менее (и может быть равно) min и не более (и не равно) max.

+ +
function getRandomArbitrary(min, max) {
+  return Math.random() * (max - min) + min;
+}
+ +

Получение случайного целого числа в заданном интервале

+ +

Этот пример возвращает случайное целое число в заданном интервале. Возвращаемое значение не менее min (или следующее целое число, которое больше min, если min не целое) и не более (но не равно) max.

+ +
function getRandomInt(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается
+}
+ +
+

Может показаться заманчивым использовать Math.round() для округления, но это может сделать распределение неравномерным, что может оказаться неприемлимым для ваших нужд.

+
+ +

Получение случайного целого числа в заданном интервале, включительно

+ +

Функция getRandomInt() выше включает минимальное значение, но не включает максимальное. Но что если вам нужно, чтобы влючалось и минимальное, и максимальное значение? Функция getRandomIntInclusive() решает этот вопрос.

+ +
function getRandomIntInclusive(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min + 1)) + min; //Максимум и минимум включаются
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. JavaScript 1.0 (только UNIX) / JavaScript 1.1 (все платформы).
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.random', 'Math.random')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Math.random")}}

+ +
+ +
diff --git a/files/ru/web/javascript/reference/global_objects/math/round/index.html b/files/ru/web/javascript/reference/global_objects/math/round/index.html new file mode 100644 index 0000000000..85400653b9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/round/index.html @@ -0,0 +1,214 @@ +--- +title: Math.round() +slug: Web/JavaScript/Reference/Global_Objects/Math/round +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/round +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.round() возвращает число, округлённое к ближайшему целому.

+ +

Синтаксис

+ +
Math.round(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Если дробная часть числа больше, либо равна 0,5, аргумент будет округлён до ближайшего большего целого. Если дробная часть числа меньше 0,5, аргумент будет округлён до ближайшего меньшего целого.

+ +

Поскольку метод round() является статическим методом объекта Math, вы всегда должны использовать его как Math.round(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.round()

+ +
// Вернёт значение 20
+x = Math.round(20.49);
+
+// Вернёт значение 21
+x = Math.round(20.5);
+
+// Вернёт значение -20
+x = Math.round(-20.5);
+
+// Вернёт значение -21
+x = Math.round(-20.51);
+
+// Вернёт значение 1 (!)
+// Обратите внимание на ошибку округления из-за неточности арифметики с плавающей запятой
+// Сравните этот результат с результатом Math.round(1.005, -2) из следующего примера
+x = Math.round(1.005*100)/100;
+
+ +

Пример: корректировка округления десятичных дробей

+ +
// Замыкание
+(function() {
+  /**
+   * Корректировка округления десятичных дробей.
+   *
+   * @param {String}  type  Тип корректировки.
+   * @param {Number}  value Число.
+   * @param {Integer} exp   Показатель степени (десятичный логарифм основания корректировки).
+   * @returns {Number} Скорректированное значение.
+   */
+  function decimalAdjust(type, value, exp) {
+    // Если степень не определена, либо равна нулю...
+    if (typeof exp === 'undefined' || +exp === 0) {
+      return Math[type](value);
+    }
+    value = +value;
+    exp = +exp;
+    // Если значение не является числом, либо степень не является целым числом...
+    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+      return NaN;
+    }
+    // Сдвиг разрядов
+    value = value.toString().split('e');
+    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+    // Обратный сдвиг
+    value = value.toString().split('e');
+    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+  }
+
+  // Десятичное округление к ближайшему
+  if (!Math.round10) {
+    Math.round10 = function(value, exp) {
+      return decimalAdjust('round', value, exp);
+    };
+  }
+  // Десятичное округление вниз
+  if (!Math.floor10) {
+    Math.floor10 = function(value, exp) {
+      return decimalAdjust('floor', value, exp);
+    };
+  }
+  // Десятичное округление вверх
+  if (!Math.ceil10) {
+    Math.ceil10 = function(value, exp) {
+      return decimalAdjust('ceil', value, exp);
+    };
+  }
+})();
+
+// Округление к ближайшему
+Math.round10(55.55, -1);   // 55.6
+Math.round10(55.549, -1);  // 55.5
+Math.round10(55, 1);       // 60
+Math.round10(54.9, 1);     // 50
+Math.round10(-55.55, -1);  // -55.5
+Math.round10(-55.551, -1); // -55.6
+Math.round10(-55, 1);      // -50
+Math.round10(-55.1, 1);    // -60
+Math.round10(1.005, -2);   // 1.01 -- сравните этот результат с результатом Math.round(1.005*100)/100 выше
+// Округление вниз
+Math.floor10(55.59, -1);   // 55.5
+Math.floor10(59, 1);       // 50
+Math.floor10(-55.51, -1);  // -55.6
+Math.floor10(-51, 1);      // -60
+// Округление вверх
+Math.ceil10(55.51, -1);    // 55.6
+Math.ceil10(51, 1);        // 60
+Math.ceil10(-55.59, -1);   // -55.5
+Math.ceil10(-59, 1);       // -50
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.round', 'Math.round')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/sign/index.html b/files/ru/web/javascript/reference/global_objects/math/sign/index.html new file mode 100644 index 0000000000..029bb3af31 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sign/index.html @@ -0,0 +1,141 @@ +--- +title: Math.sign() +slug: Web/JavaScript/Reference/Global_Objects/Math/sign +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.sign() возвращает знак числа, указывающий на то, является ли число отрицательным, положительным или нулём.

+ +

Синтаксис

+ +
Math.sign(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод sign() является статическим методом объекта Math, вы всегда должны использовать его как Math.sign(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Метод может вернуть одно из пяти значений: 1, -1, 0, -0 и NaN, которые представляют, соответственно «положительное число», «отрицательное число», «положительный ноль», «отрицательный ноль» и {{jsxref("NaN")}}.

+ +

Обратите внимание, что аргумент, переданный в этот метод, будет неявно преобразован в число.

+ +

Примеры

+ +

Пример: использование метода Math.sign()

+ +
Math.sign(3);     //  1
+Math.sign(-3);    // -1
+Math.sign('-3');  // -1
+Math.sign(0);     //  0
+Math.sign(-0);    // -0
+Math.sign(NaN);   // NaN
+Math.sign('foo'); // NaN
+Math.sign();      // NaN
+
+ +

Полифилл

+ +
Math.sign = Math.sign || function(x) {
+  x = +x; // преобразуем в число
+  if (x === 0 || isNaN(x)) {
+    return x;
+  }
+  return x > 0 ? 1 : -1;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/sin/index.html b/files/ru/web/javascript/reference/global_objects/math/sin/index.html new file mode 100644 index 0000000000..66516b8afa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sin/index.html @@ -0,0 +1,121 @@ +--- +title: Math.sin() +slug: Web/JavaScript/Reference/Global_Objects/Math/sin +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.sin() возвращает синус числа.

+ +

Синтаксис

+
Math.sin(x)
+ +

Параметры

+
+
x
+
Число радиан.
+
+ +

Описание

+

Метод Math.sin() возвращает числовое значение от -1 до 1, которое представляет синус переданного (в радианах) угла.

+

Поскольку метод sin() является статическим методом объекта Math, вы всегда должны использовать его как Math.sin(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.sin()

+
Math.sin(0);           // 0
+Math.sin(1);           // 0.8414709848078965
+
+Math.sin(Math.PI / 2); // 1
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.16', 'Math.sin')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sin', 'Math.sin')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/sinh/index.html b/files/ru/web/javascript/reference/global_objects/math/sinh/index.html new file mode 100644 index 0000000000..2ea2438584 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sinh/index.html @@ -0,0 +1,140 @@ +--- +title: Math.sinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/sinh +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sinh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.sinh() возвращает гиперболический синус числа, который может быть выражен через {{jsxref("Math.E", "число e", "", 1)}}:

+ +

Math.sinh(x)=ex-e-x2\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2}

+ +

Синтаксис

+ +
Math.sinh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод sinh() является статическим методом объекта Math, вы всегда должны использовать его как Math.sinh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.sinh()

+ +
Math.sinh(0); // 0
+Math.sinh(1); // 1.1752011936438014
+
+ +

Полифилл

+ +

Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:

+ +
Math.sinh = Math.sinh || function(x) {
+  return (Math.exp(x) - Math.exp(-x)) / 2;
+}
+
+ +

либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:

+ +
Math.sinh = Math.sinh || function(x) {
+  var y = Math.exp(x);
+  return (y - 1 / y) / 2;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.sinh', 'Math.sinh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html new file mode 100644 index 0000000000..28d145db02 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html @@ -0,0 +1,143 @@ +--- +title: Math.sqrt() +slug: Web/JavaScript/Reference/Global_Objects/Math/sqrt +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.sqrt() возвращает квадратный корень числа, то есть

+ +

x0,Math.sqrt(x)=x=уникальныйy0такой, чтоy2=x\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{уникальный} \; y \geq 0 \; \text{такой, что} \; y^2 = x

+ +

Синтаксис

+ +
Math.sqrt(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Возвращаемое значение

+ +

Квадратный корень заданного числа. Если число отрицательное, то вернется {{jsxref("NaN")}}.

+ +

Описание

+ +

Если значение x отрицательно, метод Math.sqrt() вернёт {{jsxref("NaN")}}.

+ +

Поскольку метод sqrt() является статическим методом объекта Math, вы всегда должны использовать его как Math.sqrt(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.sqrt()

+ +
Math.sqrt(9); // 3
+Math.sqrt(2); // 1.414213562373095
+
+Math.sqrt(1);  // 1
+Math.sqrt(0);  // 0
+Math.sqrt(-1); // NaN
+Math.sqrt(-0); // -0
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html new file mode 100644 index 0000000000..25cc439d06 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html @@ -0,0 +1,112 @@ +--- +title: Math.SQRT1_2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.SQRT1_2 представляет квадратный корень из 1/2, приблизительно равный 0,707:

+

Math.SQRT1_2=12=120,707\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0,707

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство SQRT1_2 является статическим свойством объекта Math, вы всегда должны использовать его как Math.SQRT1_2, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.SQRT1_2

+

Следующая функция возвращает единицу, делённую на квадратный корень из двух:

+
function getRoot1_2() {
+  return Math.SQRT1_2;
+}
+
+getRoot1_2(); // 0.7071067811865476
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.7', 'Math.SQRT1_2')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html new file mode 100644 index 0000000000..5adb33da4c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html @@ -0,0 +1,112 @@ +--- +title: Math.SQRT2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Свойство Math.SQRT2 представляет квадратный корень из 2, приблизительно равный 1,414:

+

Math.SQRT2=21,414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1,414

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Поскольку свойство SQRT2 является статическим свойством объекта Math, вы всегда должны использовать его как Math.SQRT2, а не пытаться создавать экземпляр объекта Math и получать свойство от него (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование свойства Math.SQRT2

+

Следующая функция возвращает квадратный корень из двух:

+
function getRoot2() {
+  return Math.SQRT2;
+}
+
+getRoot2(); // 1.4142135623730951
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.1.8', 'Math.SQRT2')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.sqrt2', 'Math.SQRT2')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/tan/index.html b/files/ru/web/javascript/reference/global_objects/math/tan/index.html new file mode 100644 index 0000000000..eb596547e8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/tan/index.html @@ -0,0 +1,124 @@ +--- +title: Math.tan() +slug: Web/JavaScript/Reference/Global_Objects/Math/tan +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+

Метод Math.tan() возвращает тангенс числа.

+ +

Синтаксис

+
Math.tan(x)
+ +

Параметры

+
+
x
+
Число, представляющее угол в радианах.
+
+ +

Описание

+

Метод Math.tan() возвращает числовое значение, представляющее тангенс угла.

+

Поскольку метод tan() является статическим методом объекта Math, вы всегда должны использовать его как Math.tan(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.tan()

+
Math.tan(1); // 1.5574077246549023
+
+

Поскольку метод Math.tan() принимает радианы, а чаще проще работать с градусами, следующая функция принимает значение в градусах, преобразует их в радианы и возвращает тангенс.

+
function getTanDeg(deg) {
+  var rad = deg * Math.PI/180;
+  return Math.tan(rad);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.18', 'Math.tan')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.tan', 'Math.tan')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/math/tanh/index.html b/files/ru/web/javascript/reference/global_objects/math/tanh/index.html new file mode 100644 index 0000000000..51a6a05524 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/tanh/index.html @@ -0,0 +1,153 @@ +--- +title: Math.tanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/tanh +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Сводка

+ +

Метод Math.tanh() возвращает гиперболический тангенс числа, то есть

+ +

tanhx=sinhxcoshx=ex-e-xex+e-x=e2x-1e2x+1\tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x}+1}

+ +

Синтаксис

+ +
Math.tanh(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Описание

+ +

Поскольку метод tanh() является статическим методом объекта Math, вы всегда должны использовать его как Math.tanh(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

Примеры

+ +

Пример: использование метода Math.tanh()

+ +
Math.tanh(0);        // 0
+Math.tanh(Infinity); // 1
+Math.tanh(1);        // 0.7615941559557649
+
+ +

Полифилл

+ +

Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:

+ +
Math.tanh = Math.tanh || function(x) {
+  if (x === Infinity) {
+    return 1;
+  } else if (x === -Infinity) {
+    return -1;
+  } else {
+    return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x));
+  }
+}
+
+ +

либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:

+ +
Math.tanh = Math.tanh || function(x) {
+  if (x === Infinity) {
+    return 1;
+  } else if (x === -Infinity) {
+    return -1;
+  } else {
+    var y = Math.exp(2 * x);
+    return (y - 1) / (y + 1);
+  }
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/math/trunc/index.html b/files/ru/web/javascript/reference/global_objects/math/trunc/index.html new file mode 100644 index 0000000000..6e7b44147b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/trunc/index.html @@ -0,0 +1,137 @@ +--- +title: Math.trunc() +slug: Web/JavaScript/Reference/Global_Objects/Math/trunc +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Math + - Method + - Reference + - Функция + - целая часть +translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc +--- +
+
{{JSRef}}
+ +

Функция Math.trunc() возвращает целую часть числа путём удаления всех дробных знаков.

+ +
{{EmbedInteractiveExample("pages/js/math-trunc.html")}}
+ + +
+ +

+

Синтаксис

+

+ +
Math.trunc(x)
+ +

Параметры

+ +
+
x
+
Число.
+
+ +

Возвращаемое значение

+ +
+
x
+
Целая часть данного числа.
+
+ +

Описание

+ +

В отличие от других трёх методов объекта Math — {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} и {{jsxref("Math.round()")}} — метод Math.trunc() работает очень просто. Отбрасывается запятая и все цифры после неё, не обращая внимания на знак аргумента.

+ +

Аргумент, переданный в этот метод, будет неявно преобразован в число.

+ +

Поскольку trunc() является статическим методом объекта Math, вы всегда должны использовать его как Math.trunc(), а не пытаться вызывать метод на созданном экземпляре объекта Math ( Math не является конструктором).

+ +

Примеры

+ +

Использование Math.trunc()

+ +
Math.trunc(13.37);    // 13
+Math.trunc(42.84);    // 42
+Math.trunc(0.123);    //  0
+Math.trunc(-0.123);   // -0
+Math.trunc('-1.123'); // -1
+Math.trunc(NaN);      // NaN
+Math.trunc('foo');    // NaN
+Math.trunc();         // NaN
+
+ +

Полифилл

+ +
if (!Math.trunc) {
+	Math.trunc = function(v) {
+		v = +v;
+		if (!isFinite(v)) return v;
+
+		return (v - v % 1)   ||   (v < 0 ? -0 : v === 0 ? v : 0);
+
+		// returns:
+		//  0        ->  0
+		// -0        -> -0
+		//  0.2      ->  0
+		// -0.2      -> -0
+		//  0.7      ->  0
+		// -0.7      -> -0
+		//  Infinity ->  Infinity
+		// -Infinity -> -Infinity
+		//  NaN      ->  NaN
+		//  null     ->  0
+	};
+}
+
+ +

Либо:

+ +
if (!Math.trunc) {
+	Math.trunc = function(v) {
+		v = +v;
+		return (v - v % 1)   ||   (!isFinite(v) || v === 0 ? v : v < 0 ? -0 : 0);
+	};
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ES2015')}}Первое определение
{{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ + + +

{{Compat("javascript.builtins.Math.trunc")}}

+ +

Смотрите также

+ + diff --git "a/files/ru/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" "b/files/ru/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" new file mode 100644 index 0000000000..ab66d8acb0 --- /dev/null +++ "b/files/ru/web/javascript/reference/global_objects/math/\320\274\320\265\321\202\320\276\320\264_math.max()_/index.html" @@ -0,0 +1,136 @@ +--- +title: Метод Math.max() +slug: Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ +tags: + - JavaScript + - Math + - Method + - Reference +--- +
{{JSRef("Global_Objects", "Math")}}
+ +
 
+ +

Сводка

+ +

Метод Math.max() возвращает наибольшее из нуля или более чисел.

+ +

Синтаксис

+ +
Math.max([value1[, value2[, ...]]])
+ +

Параметры

+ +
+
value1, value2, ...
+
Числа.
+
+ +

Описание

+ +

Поскольку метод max() является статическим методом объекта Math, вы всегда должны использовать его как Math.max(), а не пытаться вызывать метод на созданном экземпляре объекта Math (поскольку объект Math не является конструктором).

+ +

При вызове без аргументов результатом вызова будет значение -{{jsxref("Global_Objects/Infinity", "Infinity")}}.

+ +

Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Примеры

+ +

Пример: использование метода Math.max()

+ +
Math.max(10, 20);   //  20
+Math.max(-10, -20); // -10
+Math.max(-10, 20);  //  20
+
+ +

Следующая функция использует метод {{jsxref("Function.prototype.apply()")}} для нахождения максимального элемента в числовом массиве. Вызов getMaxOfArray([1, 2, 3]) эквивалентен вызову Math.max(1, 2, 3), однако вы можете использовать функцию getMaxOfArray() вместе с программно сконструированными массивами любого размера.

+ +
function getMaxOfArray(numArray) {
+  return Math.max.apply(null, numArray);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/nan/index.html b/files/ru/web/javascript/reference/global_objects/nan/index.html new file mode 100644 index 0000000000..7c91aebb62 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/nan/index.html @@ -0,0 +1,103 @@ +--- +title: NaN +slug: Web/JavaScript/Reference/Global_Objects/NaN +tags: + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/NaN +--- +
{{jsSidebar("Objects")}}
+ +

Сводка

+ +

Глобальное свойство NaN является значением, представляющим не-число (Not-A-Number).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +
+ +

{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}

+ + + +

Описание

+ +

NaN является свойством глобального объекта.

+ +

Начальным значением NaN является Not-A-Number (не-число) — то же самое значение, что и у {{jsxref("Number.NaN")}}. В современных браузерах NaN является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.

+ +

В программах NaN используется довольно редко. Это возвращаемое значение в ситуациях, когда математические ({{jsxref("Math")}}) функции не срабатывают должным образом (например, при вызове Math.sqrt(-1)) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (parseInt('blabla')).

+ +

Проверка на равенство NaN

+ +

NaN является неравным (посредством сравнения через ==!====, and !==) любому другому значению, включая другое значение NaN. Используйте {{jsxref("Number.isNaN()")}} или {{jsxref("Global_Objects/isNaN", "isNaN()")}}, чтобы наиболее понятным образом определить является ли значение значением NaN. Или выполните само-сравнение: NaN, и только NaN, в результате такого сравнения будет неравным самому себе.

+ +
NaN === NaN;        // false
+Number.NaN === NaN; // false
+isNaN(NaN);         // true
+isNaN(Number.NaN);  // true
+
+function valueIsNaN(v) { return v !== v; }
+valueIsNaN(1);          // false
+valueIsNaN(NaN);        // true
+valueIsNaN(Number.NaN); // true
+ +

Тем не менее, обратите внимание на разницу между функцией isNaN() и методом Number.isNaN(): первая вернет true, если значение в настоящий момент является NaN, или если оно станет NaN после того, как преобразуется в число, в то время как последний вернет true, только если текущим значением является NaN:

+ +
isNaN('hello world');        // true
+Number.isNaN('hello world'); // false
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}}{{Spec2('ES5.1')}}
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.3
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.NaN")}}

+ +
+ +
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/null/index.html b/files/ru/web/javascript/reference/global_objects/null/index.html new file mode 100644 index 0000000000..085018dc12 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/null/index.html @@ -0,0 +1,106 @@ +--- +title: 'null' +slug: Web/JavaScript/Reference/Global_Objects/null +tags: + - JavaScript + - Literal + - Primitive +translation_of: Web/JavaScript/Reference/Global_Objects/null +--- +
{{jsSidebar("Objects")}}
+ +
+ +

Значение null представляет отсутствие какого-либо объектного значения. В JavaScript, null является {{Glossary("Primitive", "примитивом")}}, и в контексте логических операций, рассматривается как {{Glossary("Falsy", "ложное (falsy)")}}.

+ +

{{EmbedInteractiveExample("pages/js/globalprops-null.html")}}

+ + + +

Синтаксис

+ +
null
+ +

Описание

+ +

Значение null записывается литералом null. Оно является самостоятельным, а не свойством глобального объекта (как {{jsxref("Global_Objects/undefined", "undefined")}}). В API, null часто присутствует в местах где ожидается объект, но подходящего объекта нет.

+ +
// переменная foo не существует - она не была определена и никогда не инициализировалась:
+> foo
+'ReferenceError: foo is not defined'
+
+// переменная foo существует, но она не имеет ни типа, ни значения:
+> var foo = null; foo
+'null'
+
+ + + +

Отличия между null и undefined

+ +

null является определенным значением отсутствия объекта, тогда как {{jsxref("Global_Objects/undefined", "undefined")}} обозначает неопределенность. Например: 

+ +
var element;
+// значение переменной element до ее инициализации не определенно: undefined
+
+element = document.getElementById('not-exists');
+// здесь при попытке получения несуществующего элемента, метод getElementById возвращает null
+// переменная element теперь инициализирована значением null, ее значение определено
+
+ +

При проверке на null или {{jsxref("Global_Objects/undefined", "undefined")}}, помните о различии между операторами равенства (==) и идентичности (===): с первым, выполняется преобразование типов. 

+ +
typeof null        // object (не "null" из соображений обратной совместимости)
+typeof undefined   // undefined
+null === undefined // false
+null  == undefined // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-4.3.11', 'значение null')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-null-value', 'значение null')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-null-value', 'null value')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +
{{Compat("javascript.builtins.null")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html b/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html new file mode 100644 index 0000000000..0b229290de --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html @@ -0,0 +1,122 @@ +--- +title: Number.EPSILON +slug: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +tags: + - ECMAScript6 + - JavaScript + - Number + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +--- +
{{JSRef}}
+ +

Свойство Number.EPSILON представляет собой разницу между единицей и наименьшим значением, большим единицы, которое может быть представлено типом {{jsxref("Number")}}.

+ +

Вам не нужно создавать объект типа {{jsxref("Number")}} для доступа к этому статическому свойству (используйте Number.EPSILON).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Свойство EPSILON имеет значение, приблизительно равное 2.2204460492503130808472633361816E-16 или 2-52.

+ +

Примеры

+ +

Проверка на равенство

+ +
x = 0.2;
+y = 0.3;
+z = 0.1;
+equal = (Math.abs(x - y + z) < Number.EPSILON);
+ + + +

Полифилл

+ +
if (Number.EPSILON === undefined) {
+    Number.EPSILON = Math.pow(2, -52);
+}
+
+ + + +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-number.epsilon', 'Number.EPSILON')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{ CompatVersionUnknown }}{{CompatGeckoDesktop("25.0")}}{{CompatNo}}{{ CompatVersionUnknown }}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/index.html b/files/ru/web/javascript/reference/global_objects/number/index.html new file mode 100644 index 0000000000..b8ea32f7d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/index.html @@ -0,0 +1,181 @@ +--- +title: Number +slug: Web/JavaScript/Reference/Global_Objects/Number +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Объект Number является объектом-обёрткой, позволяющей вам работать с числовыми значениями. Объект Number создаётся через конструктор Number().

+ +

Синтаксис

+ +
new Number(value);
+var a = new Number('123'); // a === 123 is false
+var b = Number('123'); // b === 123 is true
+a instanceof Number; // is true
+b instanceof Number; // is false
+ +

Параметры

+ +
+
value
+
Числовое значение, которое примет объект после создания.
+
+ +

Описание

+ +

Несколько замечаний относительно использования объекта Number:

+ + + +

Свойства

+ +
+
{{jsxref("Number.EPSILON")}} {{experimental_inline}}
+
Наименьший интервал между двумя представимыми числами.
+
{{jsxref("Number.MAX_SAFE_INTEGER")}} {{experimental_inline}}
+
Максимальное целое число, которое можно безопасно использовать в JavaScript (253 - 1).
+
{{jsxref("Number.MAX_VALUE")}}
+
Наибольшее представимое положительное число.
+
{{jsxref("Number.MIN_SAFE_INTEGER")}} {{experimental_inline}}
+
Минимальное целое число, которое можно безопасно использовать в (-(253 - 1)).
+
{{jsxref("Number.MIN_VALUE")}}
+
Наименьшее представимое положительное число — то есть, самое близкое к нулю положительное число (которое ещё не является нулём).
+
{{jsxref("Number.NaN")}}
+
Специальное значение для представления «не числа».
+
{{jsxref("Number.NEGATIVE_INFINITY")}}
+
Специальное значение для представления отрицательной бесконечности; возвращается при переполнении.
+
{{jsxref("Number.POSITIVE_INFINITY")}}
+
Специальное значение для представления положительной бесконечности; возвращается при переполнении.
+
{{jsxref("Number.prototype")}}
+
Позволяет добавлять свойства к объекту Number.
+
+ +
{{jsOverrides("Function", "properties", "MAX_VALUE", "MIN_VALUE", "NaN", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "protoype")}}
+ +

Методы

+ +
+
{{jsxref("Number.isNaN()")}} {{experimental_inline}}
+
Определяет, является ли переданнное значение значением {{jsxref("Global_Objects/NaN", "NaN")}}.
+
{{jsxref("Number.isFinite()")}} {{experimental_inline}}
+
Определяет, является ли переданное значение конечным числом.
+
{{jsxref("Number.isInteger()")}} {{experimental_inline}}
+
Определяет, является ли тип переданного значения «числом», а само число — целым значением.
+
{{jsxref("Number.isSafeInteger()")}} {{experimental_inline}}
+
Определяет, является ли переданное значение безопасным целым числом (числом в диапазоне от -(253 - 1) до 253 - 1).
+
{{jsxref("Number.toInteger()")}} {{obsolete_inline}}
+
Использовался для вычисления переданного значения и преобразования его в целое число (или бесконечность {{jsxref("Global_Objects/Infinity", "Infinity")}}), но был удалён.
+
{{jsxref("Number.parseFloat()")}} {{experimental_inline}}
+
Представляет собой тот же самый метод, что и метод {{jsxref("Global_Objects/parseFloat", "parseFloat")}} глобального объекта.
+
{{jsxref("Number.parseInt()")}} {{experimental_inline}}
+
Представляет собой тот же самый метод, что и метод {{jsxref("Global_Objects/parseInt", "parseInt")}} глобального объекта.
+
+ +
{{jsOverrides("Function", "methods", "isNaN")}}
+ +

Экземпляры объекта Number

+ +

Все экземпляры объекта Number наследуются от {{jsxref("Number.prototype")}}. Объект прототипа конструктора Number может быть изменён, чтобы затронуть все экземпляры объекта Number.

+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Number/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование объекта Number для присваивания значений числовым переменным

+ +

В следующем примере для присваивания значений числовым переменным используются свойства объекта Number:

+ +
var biggestNum = Number.MAX_VALUE;
+var smallestNum = Number.MIN_VALUE;
+var infiniteNum = Number.POSITIVE_INFINITY;
+var negInfiniteNum = Number.NEGATIVE_INFINITY;
+var notANum = Number.NaN;
+
+ +

Пример: целочисленный диапазон для объекта Number

+ +

Следующий пример показывает, какие минимальное и максимальное целочисленные значения может представить объект Number (за подробностями обращайтесь к стандарту EcmaScript, главе 8.5 Тип Number):

+ +
var biggestInt = 9007199254740992;
+var smallestInt = -9007199254740992;
+
+ +

При разборе данных, сериализованных в JSON, можно ожидать, что целые значения, выпадающие из этого диапазона будут повреждены, когда парсер JSON приведёт их к типу Number. Возможным обходным путём может быть использование объекта {{jsxref("Global_Objects/String", "String")}}.

+ +

Пример: использование Number для преобразования объекта Date

+ +

В следующем примере объект {{jsxref("Global_Objects/Date", "Date")}} преобразуется в числовое значение с использование объекта Number в качестве функции:

+ +
var d = new Date('December 17, 1995 03:24:00');
+console.log(Number(d));
+
+ +

Пример выведет "819199440000".

+ +

Пример: преобразование строк с числами в числа

+ +
Number('123')     // 123
+Number('')        // 0
+Number('0x11')    // 17
+Number('0b11')    // 3
+Number('0o11')    // 9
+Number('foo')     // NaN
+Number('100a')    // NaN
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7', 'Number')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-number-objects', 'Number')}}{{Spec2('ES6')}}Добавлены новые методы и свойства: ({{jsxref("Number.EPSILON", "EPSILON")}}, {{jsxref("Number.isFinite", "isFinite")}}, {{jsxref("Number.isInteger", "isInteger")}}, {{jsxref("Number.isNaN", "isNaN")}}, {{jsxref("Number.parseFloat", "parseFloat")}} и {{jsxref("Number.parseInt", "parseInt")}})
{{SpecName('ESDraft', '#sec-number-objects', 'Number')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Number")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html b/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html new file mode 100644 index 0000000000..26ed94a8c9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html @@ -0,0 +1,130 @@ +--- +title: Number.isFinite() +slug: Web/JavaScript/Reference/Global_Objects/Number/isFinite +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Number + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод Number.isFinite() определяет, является ли переданное значение конечным числом.

+ +

Синтаксис

+ +
Number.isFinite(testValue)
+ +

Параметры

+ +
+
testValue
+
Значение, проверяемое на конечность.
+
+ +

Описание

+ +

В отличии от глобальной функции {{jsxref("Global_Objects/isFinite", "isFinite()")}}, этот метод принудительно не преобразует параметр в число. Это означает, что он возвращает true только для конечных значений числового типа.

+ +

Примеры

+ +
Number.isFinite(Infinity);  // false
+Number.isFinite(NaN);       // false
+Number.isFinite(-Infinity); // false
+
+Number.isFinite(0);         // true
+Number.isFinite(2e64);      // true
+
+Number.isFinite('0');       // false, при использовании глобальной
+                            // функции isFinite('0') было бы true
+
+ +

Полифилл

+ +
Number.isFinite = Number.isFinite || function(value) {
+  return typeof value === 'number' && isFinite(value);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
+

{{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}

+
{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("19")}}{{CompatGeckoDesktop("16")}}{{CompatNo}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("16")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html b/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html new file mode 100644 index 0000000000..433a19f64b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html @@ -0,0 +1,95 @@ +--- +title: Number.isInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isInteger +tags: + - JavaScript + - Method + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Метод Number.isInteger() определяет, является ли переданное значение целым числом.

+ +

{{EmbedInteractiveExample("pages/js/number-isinteger.html")}}

+ + + +

Синтаксис

+ +
Number.isInteger(value)
+ +

Параметры

+ +
+
value
+
Значение, проверяемое на целочисленность.
+
+ +

Возвращаемое значение

+ +

{{jsxref("Boolean")}} сообщающий о том, является ли переданное значение целочисленным числом.

+ +

Описание

+ +

Если целевое значение является целым числом, возвращает true. Если значение {{jsxref("NaN")}} или {{jsxref("Infinity")}}, то возвращает false. Метод также возвращает true, если это вещественное число с точкой, которое может быть представлено в целочисленном виде.

+ +

Примеры

+ +
Number.isInteger(0);         // true
+Number.isInteger(1);         // true
+Number.isInteger(-100000);   // true
+Number.isInteger(99999999999999999999999); // true
+
+Number.isInteger(0.1);       // false
+Number.isInteger(Math.PI);   // false
+
+Number.isInteger(NaN);       // false
+Number.isInteger(Infinity);  // false
+Number.isInteger(-Infinity); // false
+Number.isInteger('10');      // false
+Number.isInteger(true);      // false
+Number.isInteger(false);     // false
+Number.isInteger([1]);       // false
+
+Number.isInteger(5.0);       // true
+Number.isInteger(5.000000000000001); // false
+Number.isInteger(5.0000000000000001); // true
+ +

Полифилл

+ +
Number.isInteger = Number.isInteger || function(value) {
+  return typeof value === 'number' &&
+    isFinite(value) &&
+    Math.floor(value) === value;
+};
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
+

{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}

+
+ +

Совместимость с браузерами

+ + + +
+ +
{{Compat("javascript.builtins.Number.isInteger")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/isnan/index.html b/files/ru/web/javascript/reference/global_objects/number/isnan/index.html new file mode 100644 index 0000000000..173fd76c17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isnan/index.html @@ -0,0 +1,96 @@ +--- +title: Number.isNaN() +slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN +tags: + - ECMAScript6 + - JavaScript + - Method + - Number + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод Number.isNaN() определяет, является ли переданное значение {{jsxref("Global_Objects/NaN", "NaN")}}. Это более надёжная версия оригинальной глобальной функции {{jsxref("Global_Objects/isNaN", "isNaN()")}}.

+ +

Синтаксис

+ +
Number.isNaN(value)
+ +

Параметры

+ +
+
value
+
Значение, проверяемое на {{jsxref("Global_Objects/NaN", "NaN")}}.
+
+ +

Описание

+ +

Поскольку оба оператора проверки на равенство, {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} и {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}, вычисляются в false при проверке, что {{jsxref("Global_Objects/NaN", "NaN")}} и есть {{jsxref("Global_Objects/NaN", "NaN")}}, появляется необходимость в функции Number.isNaN(). Эта ситуация отличается от всех других возможных сравнений в JavaScript.

+ +

В отличие от глобальной функции {{jsxref("Global_Objects/isNaN", "isNaN()")}}, Number.isNaN() не имеет проблемы принудительного преобразования параметра в число. Это значит, что в него безопасно передавать значения, которые обычно превращаются в {{jsxref("Global_Objects/NaN", "NaN")}}, но на самом деле {{jsxref("Global_Objects/NaN", "NaN")}} не являются. Также это значит, что метод возвращает true только для числовых значений, имеющих значение {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Примеры

+ +
Number.isNaN(NaN); // true
+Number.isNaN(Number.NaN); // true
+Number.isNaN(0 / 0) // true
+
+// При использовании глобальной функции isNaN() это всё будет true
+Number.isNaN('NaN');      // false
+Number.isNaN(undefined);  // false
+Number.isNaN({});         // false
+Number.isNaN('blabla');   // false
+
+// А это всё в любом случае будет false
+Number.isNaN(true);
+Number.isNaN(null);
+Number.isNaN(37);
+Number.isNaN('37');
+Number.isNaN('37.37');
+Number.isNaN('');
+Number.isNaN(' ');
+
+ +

Полифилл

+ +
Number.isNaN = Number.isNaN || function(value) {
+  return typeof value === 'number' && isNaN(value);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
+

{{SpecName('ES6', '#sec-number.isnan', 'Number.isnan')}}

+
{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Number.isNaN")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html b/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html new file mode 100644 index 0000000000..9fbc3bb7d9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html @@ -0,0 +1,95 @@ +--- +title: Number.isSafeInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +--- +
{{JSRef}}
+ +

Метод Number.isSafeInteger() определяет, является ли переданное значение безопасным целым числом.

+ +
{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}
+ + + +

Безопасное целое число это такое число, которое:

+ + + +

Например, число 253 - 1 является безопасным целым числом: оно может быть представлено точно и никакое другое целое число не округляется к нему ни в каком режиме округления IEEE-754. В противовес ему, число 253 не является безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число 253 + 1 не может быть напрямую представлено в IEEE-754 и округляется к числу 253 в режимах округления к ближайшему и к нулю. Безопасные целые числа состоят из всех целых чисел в диапазоне от -(253 - 1) до 253 - 1 включительно (± 9007199254740991 или ± 9,007,199,254,740,991).

+ +

Обработка значений, больших или меньших чем ~9 квадриллионов, с высокой точностью требует использования библиотеки, умеющей работать с длиной арифметикой. Ознакомьтесь с Что Каждому Программисту Необходимо Знать об Арифметике с Вещественными числами для получения дополнительной информации о представлении чисел, с плавающей запятой.

+ +

Для больших целочисленных значений, рассмотрите возможность использования типа {{jsxref("BigInt")}}.

+ +

Синтаксис

+ +
Number.isSafeInteger(testValue)
+ +

Параметры

+ +
+
testValue
+
Значение, проверяемое на целочисленную «безопасность».
+
+ +

Возвращаемое значение

+ +

{{jsxref("Boolean")}} значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.

+ +

Примеры

+ +
Number.isSafeInteger(3);                    // true
+Number.isSafeInteger(Math.pow(2, 53));      // false
+Number.isSafeInteger(Math.pow(2, 53) - 1);  // true
+Number.isSafeInteger(NaN);                  // false
+Number.isSafeInteger(Infinity);             // false
+Number.isSafeInteger('3');                  // false
+Number.isSafeInteger(3.1);                  // false
+Number.isSafeInteger(3.0);                  // true
+
+ +

Полифилл

+ +
Number.isSafeInteger = Number.isSafeInteger || function (value) {
+   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
+};
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
+

{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}

+
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Number.isSafeInteger")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html b/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html new file mode 100644 index 0000000000..652a6aa821 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html @@ -0,0 +1,65 @@ +--- +title: Number.MAX_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +tags: + - ECMAScript6 + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Константа Number.MAX_SAFE_INTEGER представляет максимальное безопасное целочисленное значение в JavaScript (253 - 1).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Константа MAX_SAFE_INTEGER имеет значение 9007199254740991. Смысл этого числа в том, что в JavaScript используется формат чисел с плавающей запятой двойной точности, как определено в стандарте IEEE 754, а он может безопасно представлять числа только в диапазоне от -(253 - 1) до 253 - 1.

+ +

Поскольку MAX_SAFE_INTEGER является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как Number.MAX_SAFE_INTEGER, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Примеры

+ +
Number.MAX_SAFE_INTEGER // 9007199254740991
+Math.pow(2, 53) - 1     // 9007199254740991
+
+ +

Полифилл

+ +
if (!Number.MAX_SAFE_INTEGER) {
+    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
+}
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/max_value/index.html b/files/ru/web/javascript/reference/global_objects/number/max_value/index.html new file mode 100644 index 0000000000..7472d91e57 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/max_value/index.html @@ -0,0 +1,110 @@ +--- +title: Number.MAX_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Свойство Number.MAX_VALUE представляет максимальное числовое значение, представимое в JavaScript.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Свойство MAX_VALUE имеет значение, приблизительно равное 1.79E+308. Значения, большие MAX_VALUE представляются как «бесконечность».

+

Поскольку MAX_VALUE является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как Number.MAX_VALUE, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Примеры

+ +

Пример: использование MAX_VALUE

+

В следующем примере кода производится умножение двух значений. Если результат меньше или равен MAX_VALUE, вызывается функция func1; в противном случае вызывается функция func2.

+
if (num1 * num2 <= Number.MAX_VALUE) {
+  func1();
+} else {
+  func2();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html b/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html new file mode 100644 index 0000000000..58a21e845c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html @@ -0,0 +1,105 @@ +--- +title: Number.MIN_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +tags: + - ECMAScript6 + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Константа Number.MIN_SAFE_INTEGER представляет минимальное безопасное целочисленное значение в JavaScript (-(253 - 1)).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Константа MIN_SAFE_INTEGER имеет значение -9007199254740991. Смысл этого числа в том, что в JavaScript используется формат чисел с плавающей запятой двойной точности, как определено в стандарте IEEE 754, а он может безопасно представлять числа только в диапазоне от -(253 - 1) до 253 - 1.

+ +

Поскольку MIN_SAFE_INTEGER является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как Number.MIN_SAFE_INTEGER, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Примеры

+ +
Number.MIN_SAFE_INTEGER // -9007199254740991
+-(Math.pow(2, 53) - 1)  // -9007199254740991
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("34")}}{{CompatGeckoDesktop("31")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("32")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/min_value/index.html b/files/ru/web/javascript/reference/global_objects/number/min_value/index.html new file mode 100644 index 0000000000..0c9c2fded1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/min_value/index.html @@ -0,0 +1,122 @@ +--- +title: Number.MIN_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Свойство Number.MIN_VALUE представляет минимальное положительное числовое значение, представимое в JavaScript.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Свойство MIN_VALUE является положительным ближайшим к нулю числом, которое может быть представлено в JavaScript.

+ +

MIN_VALUE имеет значение, приблизительно равное 5e-324. Значения, меньшие MIN_VALUE, преобразуются в 0 (так называемое «исчезновение порядка» или «антипереполнение»).

+ +

Поскольку MIN_VALUE является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как Number.MIN_VALUE, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Примеры

+ +

Пример: использование MIN_VALUE

+ +

В следующем примере кода производится деление одного значения на другое. Если результат больше или равен MIN_VALUE, вызывается функция func1; в противном случае вызывается функция func2.

+ +
if (num1 / num2 >= Number.MIN_VALUE) {
+  func1();
+} else {
+  func2();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/nan/index.html b/files/ru/web/javascript/reference/global_objects/number/nan/index.html new file mode 100644 index 0000000000..c85c806eb3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/nan/index.html @@ -0,0 +1,97 @@ +--- +title: Number.NaN +slug: Web/JavaScript/Reference/Global_Objects/Number/NaN +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Свойство Number.NaN представляет «не число». Эквивалентно глобальному объекту {{jsxref("Global_Objects/NaN", "NaN")}}.

+

Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте Number.NaN).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.4', 'Number.NaN')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.nan', 'Number.NaN')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html b/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html new file mode 100644 index 0000000000..7f65de76b3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html @@ -0,0 +1,125 @@ +--- +title: Number.NEGATIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Свойство Number.NEGATIVE_INFINITY представляет значение отрицательной бесконечности.

+

Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте Number.NEGATIVE_INFINITY).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Значение Number.NEGATIVE_INFINITY является тем же самым по модулю, только отрицательным значением, что содержит свойство {{jsxref("Global_Objects/Infinity", "Infinity")}} глобального объекта.

+

Это значение ведёт себя несколько иначе, нежели математическая бесконечность:

+ +

Вы можете использовать свойство Number.NEGATIVE_INFINITY для проверки на ошибки и возвращать конечное число в случае успеха. Однако, обратите внимание, что в этом случае более уместным было бы использование функции {{jsxref("Global_Objects/isFinite", "isFinite")}}.

+ +

Примеры

+ +

Пример: использование NEGATIVE_INFINITY

+

В следующем примере переменной smallNumber присваивается значение, меньшее минимального. Когда выполняется инструкция {{jsxref("Statements/if...else", "if")}}, переменная smallNumber имеет значение -Infinity, так что перед продолжением вычислений она устанавливается в более приемлимое значение.

+
var smallNumber = (-Number.MAX_VALUE) * 2;
+
+if (smallNumber == Number.NEGATIVE_INFINITY) {
+  smallNumber = returnFinite();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html b/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html new file mode 100644 index 0000000000..ab4a2e0dc7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html @@ -0,0 +1,108 @@ +--- +title: Number.parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод Number.parseFloat() разбирает строковый аргумент и возвращает число с плавающей запятой. Этот метод ведёт себя идентично глобальной функции {{jsxref("Global_Objects/parseFloat", "parseFloat()")}} и является частью ECMAScript 6 (его целью является модуляризация глобальных сущностей).

+ +

Синтаксис

+ +
Number.parseFloat(string)
+ +

Параметры

+ +
+
string
+
Строка, представляющая значение, которое вы хотите разобрать.
+
+ +

Описание

+ +

Пожалуйста, обратитесь к документации по глобальной функции {{jsxref("Global_Objects/parseFloat", "parseFloat()")}} для просмотра подробного описания и примеров.

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
+

{{SpecName('ES6', '#sec-number.parsefloat', 'Number.parseFloat')}}

+
{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/parseint/index.html b/files/ru/web/javascript/reference/global_objects/number/parseint/index.html new file mode 100644 index 0000000000..66bc26675f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/parseint/index.html @@ -0,0 +1,82 @@ +--- +title: Number.parseInt() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseInt +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод Number.parseInt() разбирает строковый аргумент и возвращает целое число. Этот метод ведёт себя идентично глобальной функции {{jsxref("Global_Objects/parseInt", "parseInt()")}} и является частью ECMAScript 6 (его целью является модуляризация глобальных сущностей).

+ +

Синтаксис

+ +
Number.parseInt(string[, radix])
+ +

Параметры

+ +
+
string
+
Значение для разбора. Если параметр не является строкой, он будет в неё преобразован. Ведущие пробельные символы в строке игнорируются.
+
radix
+
Необязательный параметр. Целое число, представляющее основание системы счисления для числа в указанной выше строке. Для избежания непонятностей при чтении кода и гарантии предсказуемого поведения всегда определяйте этот параметр. Различные реализации дадут разные результаты, если основание системы счисления не будет указано.
+
+ +

Возвращаемое значение

+ +

Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ строки не может быть преобразован в число, то возвращается NaN

+ +

Описание

+ +

Этот метод имеет ту же функциональность, что и глобальная функция {{jsxref("parseInt", "parseInt()")}}:

+ +
Number.parseInt === parseInt; // true
+ +

Пожалуйства, обратитесь к документации по глобальной функции {{jsxref("Global_Objects/parseInt", "parseInt()")}} для просмотра подробного описания и примеров.

+ +

Полифилл

+ +
if (Number.parseInt === undefined) {
+    Number.parseInt = window.parseInt;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
+

{{SpecName('ES6', '#sec-number.parseint', 'Number.parseInt')}}

+
{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Number.parseInt")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html b/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html new file mode 100644 index 0000000000..fd87dde80a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html @@ -0,0 +1,125 @@ +--- +title: Number.POSITIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Свойство Number.POSITIVE_INFINITY представляет значение положительной бесконечности.

+

Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте Number.POSITIVE_INFINITY).

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Значение Number.POSITIVE_INFINITY является тем же самым значением, что содержит свойство {{jsxref("Global_Objects/Infinity", "Infinity")}} глобального объекта.

+

Это значение ведёт себя несколько иначе, нежели математическая бесконечность:

+ +

Вы можете использовать свойство Number.POSITIVE_INFINITY для проверки на ошибки и возвращать конечное число в случае успеха. Однако, обратите внимание, что в этом случае более уместным было бы использование функции {{jsxref("Global_Objects/isFinite", "isFinite")}}.

+ +

Примеры

+ +

Пример: использование POSITIVE_INFINITY

+

В следующем примере переменной bigNumber присваивается значение, большее максимального. Когда выполняется инструкция {{jsxref("Statements/if...else", "if")}}, переменная bigNumber имеет значение Infinity, так что перед продолжением вычислений она устанавливается в более приемлимое значение.

+
var bigNumber = Number.MAX_VALUE * 2;
+
+if (bigNumber == Number.POSITIVE_INFINITY) {
+  bigNumber = returnFinite();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.3.6', 'Number.POSITIVE_INFINITY')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/prototype/index.html b/files/ru/web/javascript/reference/global_objects/number/prototype/index.html new file mode 100644 index 0000000000..640e7ce716 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/prototype/index.html @@ -0,0 +1,123 @@ +--- +title: Number.prototype +slug: Web/JavaScript/Reference/Global_Objects/Number/prototype +tags: + - JavaScript + - Number + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Свойство Number.prototype представляет прототип конструктора {{jsxref("Global_Objects/Number", "Number")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("Global_Objects/Number", "Number")}} наследуются от Number.prototype. Объект прототипа конструктора {{jsxref("Global_Objects/Number", "Number")}} может быть изменён для затрагивания всех экземпляров объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Свойства

+
+
Number.prototype.constructor
+
Возвращает функцию, создавшую этот экземпляр объекта. По умолчанию ей является объект {{jsxref("Global_Objects/Number", "Number")}}.
+
+ +
{{jsOverrides("Object", "properties", "constructor")}}
+ +

Методы

+
+
{{jsxref("Number.prototype.toExponential()")}}
+
Возвращает строку, представляющую число в экспоненциальной записи.
+
{{jsxref("Number.prototype.toFixed()")}}
+
Возвращает строку, представляющую число в записи с фиксированной запятой.
+
{{jsxref("Number.prototype.toLocaleString()")}}
+
Возвращает строку с языко-зависимым представлением числа. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.
+
{{jsxref("Number.prototype.toPrecision()")}}
+
Возвращает строку, представляющую число с указанной точностью в экспоненциальной записи, либо записи с фиксированной запятой.
+
{{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает объектный литерал, представляющий объект {{jsxref("Global_Objects/Number", "Number")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Number.prototype.toString()")}}
+
Возвращает строку, представляющую указанный объект по указанному основанию системы счисления. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Number.prototype.valueOf()")}}
+
Возвращает примитивное значение указанного объекта. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.
+
+ +
{{jsOverrides("Object", "methods", "toExponential", "toFixed", "toLocaleString", "toPrecision", "toSource", "toString", "valueOf")}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.4', 'Number')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-properties-of-the-number-prototype-object', 'Number')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html b/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html new file mode 100644 index 0000000000..0f24f36542 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html @@ -0,0 +1,131 @@ +--- +title: Number.prototype.toExponential() +slug: Web/JavaScript/Reference/Global_Objects/Number/toExponential +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toExponential +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Метод toExponential() возвращает строку, представляющую объект {{jsxref("Global_Objects/Number", "Number")}} в экспоненциальной записи.

+ +

Синтаксис

+
numObj.toExponential([fractionDigits])
+ +

Параметры

+
+
fractionDigits
+
Необязательный параметр. Целое число, определяющее количество цифр после десятичной запятой. По умолчанию используется столько цифр, сколько необходимо для указания числа.
+
+ +

Возвращаемое значение

+

Строка, представляющая объект {{jsxref("Global_Objects/Number", "Number")}} в экспоненциальной записи с одной цифрой перед десятичной запятой, округлённое до fractionDigits цифр после десятичной запятой. Если аргумент fractionDigits опущен, количество цифр после десятичной запятой по умолчанию устанавливается в количество цифр, необходимых для однозначного представления значения.

+

Если вы используете метод toExponential() с числовыми литералами и числовой литерал не имеет экспоненты и десятичной запятой, оставьте пробел перед точкой, предшествующей вызову метода для предотвращения интерпретации этой точки как десятичной запятой.

+

Если число имеет больше цифр, чем запрошено параметром fractionDigits, оно будет округлено к ближайшему числу, представляемому fractionDigits цифрами. Смотрите обсуждение округления в описании метода {{jsxref("Number.prototype.toFixed", "toFixed()")}}, которое так же применяется и к методу toExponential().

+ +

Выбрасываемые исключения

+
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Если параметр fractionDigits слишком маленький или слишком большой. Значения между 0 и 20 включительно не будут порождать исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения.
+
{{jsxref("Global_Objects/TypeError", "TypeError")}}
+
Если этот метод вызывается на объекте, не являющимся объектом {{jsxref("Global_Objects/Number", "Number")}}.
+
+ +

Примеры

+ +

Пример: использование toExponential

+
var numObj = 77.1234;
+
+
+console.log(numObj.toExponential());  // выведет 7.71234e+1
+console.log(numObj.toExponential(4)); // выведет 7.7123e+1
+console.log(numObj.toExponential(2)); // выведет 7.71e+1
+console.log(77.1234.toExponential()); // выведет 7.71234e+1
+console.log(77 .toExponential());     // выведет 7.7e+1
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES5.1', '#sec-15.7.4.6', 'Number.prototype.toExponential')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html b/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html new file mode 100644 index 0000000000..a7beb2afcc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html @@ -0,0 +1,143 @@ +--- +title: Number.prototype.toFixed() +slug: Web/JavaScript/Reference/Global_Objects/Number/toFixed +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод toFixed() форматирует число, используя запись с фиксированной запятой.

+ +

Синтаксис

+ +
numObj.toFixed([digits])
+ +

Параметры

+ +
+
digits
+
Необязательный параметр. Количество цифр после десятичной запятой; может быть значением между 0 и 20 включительно, хотя реализации могут поддерживать и больший диапазон значений. Если аргумент опущен, он считается равным 0.
+
+ +

Возвращаемое значение

+ +

Строка, представляющая numObj, не использующая экспоненциальную запись и содержащая ровно digits цифр после десятичной запятой. Число округляется при необходимости, а дробная часть дополняется нулями таким образом, чтобы иметь указанную длину. Если numObj больше или равно 1e+21, этот метод просто вызывает метод {{jsxref("Number.prototype.toString()")}} и возвращает строку в экспоненциальной записи.

+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Если параметр digits слишком маленький или слишком большой. Значения между 0 и 20 включительно не будут порождать исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения.
+
{{jsxref("Global_Objects/TypeError", "TypeError")}}
+
Если этот метод вызывается на объекте, не являющимся объектом {{jsxref("Global_Objects/Number", "Number")}}.
+
+ +

Примеры

+ +

Пример: использование toFixed

+ +
var numObj = 12345.6789;
+
+numObj.toFixed();       // Вернёт '12346': обратите внимание на округление, дробной части нет
+numObj.toFixed(1);      // Вернёт '12345.7': обратите внимание на округление
+numObj.toFixed(6);      // Вернёт '12345.678900': обратите внимание на дополнение нулями
+(1.23e+20).toFixed(2);  // Вернёт '123000000000000000000.00'
+(1.23e-10).toFixed(2);  // Вернёт '0.00'
+2.34.toFixed(1);        // Вернёт '2.3'
+-2.34.toFixed(1);       // Вернёт -2.3 (в соответствии с приоритетом операций,
+                        // отрицательные числовые литералы не возвращают строку...)
+(-2.34).toFixed(1);     // Вернёт '-2.3' (...до тех пор, пока вы не заключите их в круглые скобки)
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES5.1', '#sec-15.7.4.5', 'Number.prototype.toFixed')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html b/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html new file mode 100644 index 0000000000..14260df0d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html @@ -0,0 +1,94 @@ +--- +title: Number.toInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/toInteger +tags: + - JavaScript + - Method + - Non-standard + - Number + - Obsolete +translation_of: Archive/Web/JavaScript/Number.toInteger +--- +
{{JSRef("Global_Objects", "Number")}} {{obsolete_header("33")}} {{non-standard_header}}
+ +

Сводка

+

Метод Number.toInteger() использовался для вычисления переданного значения и преобразования его в целое число, но его реализация была удалена.

+

Если целевым значением является {{jsxref("Global_Objects/NaN", "NaN")}}, {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, возвращается 0. Если целевым значением является false, возвращается 0, а если true, то 1.

+ +

Синтаксис

+
Number.toInteger(number)
+ +

Параметры

+
+
number
+
Значение, преобразуемое в целое число.
+
+ +

Примеры

+ +

Пример: использование toInteger

+

Вывод на некоторых тестовых значениях:

+
Number.toInteger(0.1);     // 0
+Number.toInteger(1);       // 1
+Number.toInteger(Math.PI); // 3
+Number.toInteger(null);    // 0
+
+ +

Спецификации

+ + +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}Firefox с версии 16 по версию 32{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}Firefox с версии 16 по версию 32{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html new file mode 100644 index 0000000000..1c6048805a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html @@ -0,0 +1,164 @@ +--- +title: Number.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +tags: + - Internationalization + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод toLocaleString() возвращает строку с языко-зависимым представлением числа.

+ +

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

+ +

Синтаксис

+ +
numObj.toLocaleString([locales[, options]])
+ +

Параметры

+ +

Проверьте раздел Совместимость с браузерами, чтобы увидеть, какие браузеры поддерживают аргументы locales и options, и Пример: проверка поддержки аргументов locales и options для определения этой возможности.

+ +
+

Обратите внимание: API интернационализации ECMAScript, реализованное в Firefox 29, добавляет аргумент locales к методу Number.toLocaleString(). Если этот аргумент равен {{jsxref("Global_Objects/undefined", "undefined")}}, этот метод возвращает локализованные цифры на языке, определяемом ОС, в то время, как предыдущие версии Firefox возвращали цифры на английском языке. Это изменение было помечено, как регрессия, затрагивающая обратную совместимость, которая скоро может быть исправлена. ({{bug(999003)}})

+
+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parameters')}}
+ +

Примеры

+ +

Пример: использование toLocaleString

+ +

При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.

+ +
var number = 3500;
+
+console.log(number.toLocaleString()); // Отобразит '3,500' в локали U.S. English
+
+ +

Пример: проверка поддержки аргументов locales и options

+ +

Аргументы locales и options поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+ +
function toLocaleStringSupportsLocales() {
+  var number = 0;
+  try {
+    number.toLocaleString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Пример: использование аргумента locales

+ +

Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
var number = 123456.789;
+
+// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка
+console.log(number.toLocaleString('de-DE'));
+// → 123.456,789
+
+// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
+console.log(number.toLocaleString('ru-RU'));
+// → 123 456,789
+
+// В большинстве арабоговорящих стран используют настоящие арабские цифры
+console.log(number.toLocaleString('ar-EG'));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// В Индии используют разделители для тысяч/лакх/крор
+console.log(number.toLocaleString('en-IN'));
+// → 1,23,456.789
+
+// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную
+console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
+// → 一二三,四五六.七八九
+
+// Если запрашиваемый язык может не поддерживаться, например
+// балийский, откатываемся на запасной язык, в данном случае индонезийский
+console.log(number.toLocaleString(['ban', 'id']));
+// → 123.456,789
+
+ +

Пример: использование аргумента options

+ +

Результат, предоставляемый методом toLocaleString(), может быть настроен с помощью аргумента options:

+ +
var number = 123456.789;
+
+// Запрашиваем формат валюты
+console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
+// → 123.456,79 €
+
+console.log(number.toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' }));
+// → 123 456,79 ₽
+
+// Японская йена не использует младшие единицы
+console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
+// → ¥123,457
+
+// Ограничиваем до трёх значащих цифр
+console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
+// → 1,23,000
+
+ +

Производительность

+ +

При форматировании большого количества чисел лучшим вариантом будет создание объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} и использование функции, предоставляемой его свойством {{jsxref("NumberFormat.format")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES5.1', '#sec-15.7.4.3', 'Number.prototype.toLocaleString')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}{{Spec2('ES6')}}
{{SpecName('ES Int 1.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}{{Spec2('ES Int 1.0')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Number.toLocaleString")}}

+ +

Смотрите также

+ + + +
+
+
diff --git a/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html b/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html new file mode 100644 index 0000000000..83157bf3d2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html @@ -0,0 +1,150 @@ +--- +title: Number.prototype.toPrecision() +slug: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод toPrecision() возвращает строку, представляющую объект {{jsxref("Global_Objects/Number", "Number")}} с указанной точностью.

+ +

Синтаксис

+ +
numObj.toPrecision([precision])
+ +

Параметры

+ +
+
precision
+
Необязательный параметр. Целое число, определяющее количество значащих цифр.
+
+ +

Возвращаемое значение

+ +

Строка, представляющая объект {{jsxref("Global_Objects/Number", "Number")}} в записи с фиксированной запятой или в экспоненциальной записи, округлённое до precision значащих цифр. Смотрите обсуждение округления в описании метода {{jsxref("Number.prototype.toFixed", "toFixed()")}}, которое таким же образом применяется и к методу toPrecision().

+ +

Если аргумент precision опущен, поведение аналогично методу {{jsxref("Number.prototype.toString()")}}. Если он не является целым числом, он будет округлён к ближайшему целому числу.

+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Если параметр precison не находится в диапазоне от 1 до 100 (включительно), будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения. ECMA-262 требует точности только до 21 значащей цифры.
+
+ +

Примеры

+ +

Пример: использование toPrecision

+ +
var numObj = 5.123456;
+
+console.log(numObj.toPrecision());    // выведет '5.123456'
+console.log(numObj.toPrecision(5));   // выведет '5.1235'
+console.log(numObj.toPrecision(2));   // выведет '5.1'
+console.log(numObj.toPrecision(1));   // выведет '5'
+
+numObj = 0.000123;
+
+console.log(numObj.toPrecision());    // выведет '0.000123'
+console.log(numObj.toPrecision(5));   // выведет '0.00012300'
+console.log(numObj.toPrecision(2));   // выведет '0.00012'
+console.log(numObj.toPrecision(1));   // выведет '0.0001' 
+
+// Обратите внимание, что если заданного количества разрядов
+// недостаточно для точного отображения целой части числа,
+// значение может быть возвращено в экспоненциальной записи.
+console.log((1234.5).toPrecision(2)); // выведет '1.2e+3'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES5.1', '#sec-15.7.4.7', 'Number.prototype.toPrecision')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-number.prototype.toprecision', 'Number.prototype.toPrecision')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/tosource/index.html b/files/ru/web/javascript/reference/global_objects/number/tosource/index.html new file mode 100644 index 0000000000..780652ac86 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tosource/index.html @@ -0,0 +1,104 @@ +--- +title: Number.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Number/toSource +tags: + - JavaScript + - Method + - Non-standard + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toSource +--- +
{{JSRef("Global_Objects", "Number")}} {{non-standard_header}}
+ +

Сводка

+ +

Метод toSource() возвращает строку, представляющую исходный код объекта.

+ +

Синтаксис

+ +
numObj.toSource()
+Number.toSource()
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Метод toSource возвращает следующие значения:

+ + + +

Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.

+ +

Спецификации

+ +

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/tostring/index.html b/files/ru/web/javascript/reference/global_objects/number/tostring/index.html new file mode 100644 index 0000000000..e3bfee048a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tostring/index.html @@ -0,0 +1,148 @@ +--- +title: Number.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toString +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+ +

Метод toString() возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Синтаксис

+ +
numObj.toString([radix])
+ +

Параметры

+ +
+
radix
+
Необязательный параметр. Целое число между 2 и 36, определяющее основание системы счисления, используемой для представления числового значения.
+
+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Если в метод toString() передано основание не в диапазоне от 2 до 36, будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.
+
+ +

Описание

+ +

Объект {{jsxref("Global_Objects/Number", "Number")}} переопределяет метод {{jsxref("Object.prototype.toString", "toString")}}, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString")}}. Для объектов {{jsxref("Global_Objects/Number", "Number")}} метод toString() возвращает строку, представляющую объект в определённой системе счисления.

+ +

Метод toString() разбирает свой первый аргумент и пытается вернуть строковое представление в системе счисления с указанным основанием. Для оснований, больших 10, при обозначении цифр, больших 9, используются буквы латинского алфавита. Например, для шестнадцатеричных чисел (основание 16), используются буквы с a по f.

+ +

Если параметр radix не указан, предпочитаемое основание предполагается равным 10.

+ +

Если число numObj отрицательно, его знак сохраняется. Это правило действует даже если основание равно 2; возвращённая строка является двоичным представлением положительного числа numObj, перед которым ставится знак -, а не дополнительным кодом числа numObj.

+ +

Примеры

+ +

Пример: использование toString

+ +
var count = 10;
+
+console.log(count.toString());    // Выведет '10'
+console.log((17).toString());     // Выведет '17'
+
+var x = 6;
+
+console.log(x.toString(2));       // Выведет '110'
+console.log((254).toString(16));  // Выведет 'fe'
+
+console.log((-10).toString(2));   // Выведет '-1010'
+console.log((-0xff).toString(2)); // Выведет '-11111111'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.4.2', 'Number.prototype.tostring')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-number.prototype.tostring', 'Number.prototype.tostring')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/number/valueof/index.html b/files/ru/web/javascript/reference/global_objects/number/valueof/index.html new file mode 100644 index 0000000000..33c284df26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/valueof/index.html @@ -0,0 +1,115 @@ +--- +title: Number.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Number/valueOf +tags: + - JavaScript + - Method + - Number + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Сводка

+

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Синтаксис

+
numObj.valueOf()
+ +

Параметры

+

Нет.

+ +

Описание

+

Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.

+ +

Примеры

+ +

Пример: использование valueOf()

+
var numObj = new Number(10);
+console.log(typeof numObj); // object
+
+var num = numObj.valueOf();
+console.log(num);           // 10
+console.log(typeof num);    // number
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.7.4.4', 'Number.prototype.valueOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number.prototype.valueof', 'Number.prototype.valueOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html new file mode 100644 index 0000000000..ecf5773d2e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html @@ -0,0 +1,119 @@ +--- +title: Object.prototype.__defineGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}
+ +

Сводка

+

Метод __defineGetter__() привязывает свойство объекта к функции, вызываемой каждый раз при поиске этого свойства.

+ +

Синтаксис

+
obj.__defineGetter__(prop, func)
+ +

Параметры

+
+
prop
+
Строка, содержащая имя свойства, привязываемого к заданной функции.
+
func
+
Функция, привязываемая к поиску указанного свойства.
+
+ +

Описание

+

Метод __defineGetter__() позволяет определить {{jsxref("Operators/get", "геттер", "", 1)}} на уже существующем объекте.

+ +

Примеры

+
// Нестандартный и устаревший способ
+
+var o = {};
+o.__defineGetter__('gimmeFive', function() { return 5; });
+console.log(o.gimmeFive); // 5
+
+
+// Способы, совместимые со стандартом
+
+// Использование оператора get
+var o = { get gimmeFive() { return 5; } };
+console.log(o.gimmeFive); // 5
+
+
+// Использование Object.defineProperty()
+var o = {};
+Object.defineProperty(o, 'gimmeFive', {
+  get: function() {
+    return 5;
+  }
+});
+console.log(o.gimmeFive); // 5
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html new file mode 100644 index 0000000000..4d93278a6d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html @@ -0,0 +1,132 @@ +--- +title: Object.prototype.__defineSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}
+ +

Сводка

+

Метод __defineSetter__() привязывает свойство объекта к функции, вызываемой каждый раз при попытке установить значение этого свойства.

+ +

Синтаксис

+
obj.__defineSetter__(prop, fun)
+ +

Параметры

+
+
prop
+
Строка, содержащая имя свойства, привязываемого к заданной функции.
+
fun
+
Функция, вызываемая при попытке установить значение указанному свойству. Эта функция имеет вид:
+
+
function(val) { . . . }
+
+
val
+
Псевдоним переменной, содержащей значение, которое пытаются присвоить свойству prop.
+
+
+
+ +

Описание

+

Метод __defineSetter__() позволяет определять {{jsxref("Operators/set", "сеттер", "", 1)}} на уже существующем объекте.

+ +

Примеры

+
// Нестандартный и устаревший способ
+
+var o = {};
+o.__defineSetter__('value', function(val) { this.anotherValue = val; });
+o.value = 5;
+console.log(o.value);         // undefined
+console.log(o.anotherValue);  // 5
+
+
+// Способ, совместимый со стандартом
+
+// Использование оператора set
+var o = { set value(val) { this.anotherValue = val; } };
+o.value = 5;
+console.log(o.value);         // undefined
+console.log(o.anotherValue);  // 5
+
+// Использование метода Object.defineProperty()
+var o = {};
+Object.defineProperty(o, 'value', {
+  set: function(val) {
+    this.anotherValue = val;
+  }
+});
+o.value = 5;
+console.log(o.value);         // undefined
+console.log(o.anotherValue);  // 5
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html new file mode 100644 index 0000000000..c08c8d1dde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html @@ -0,0 +1,110 @@ +--- +title: Object.prototype.__lookupGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}
+ +

Сводка

+

Метод __lookupGetter__() возвращает функцию, привязанную к геттеру указанного свойства.

+ +

Синтаксис

+
obj.__lookupGetter__(sprop)
+ +

Параметры

+
+
sprop
+
Строка, содержащая имя свойства, чей геттер должен быть возвращён.
+
+ +

Описание

+

Если для свойства объекта был определён геттер, то на него невозможно сослаться через это свойство, поскольку оно ссылается на возвращаемое значение геттера. Метод __lookupGetter__() может использоваться для получения ссылки на геттер.

+

Сегодня это возможно сделать стандартным способом через {{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.getPrototypeOf()")}}.

+ +

Примеры

+
var obj = {
+  get foo() {
+    return Math.random() > 0.5 ? 'foo' : 'bar';
+  }
+};
+
+
+// Нестандартный и устаревший способ
+obj.__lookupGetter__('foo');
+// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; })
+
+
+// Способ, совместимый со стандартом
+Object.getOwnPropertyDescriptor(obj, 'foo').get;
+// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; })
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html new file mode 100644 index 0000000000..1d9f91bf11 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html @@ -0,0 +1,110 @@ +--- +title: Object.prototype.__lookupSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}
+ +

Сводка

+

Метод __lookupSetter__() возвращает функцию, привязанную к сеттеру указанного свойства.

+ +

Синтаксис

+
obj.__lookupSetter__(sprop)
+ +

Параметры

+
+
sprop
+
Строка, содержащая имя свойства, чей сеттер должен быть возвращён.
+
+ +

Описание

+

Если для свойства объекта был определён сеттер, то на него невозможно сослаться через это свойство, поскольку оно ссылается на возвращаемое значение сеттера. Метод __lookupSetter__() может использоваться для получения ссылки на сеттер.

+

Сегодня это возможно сделать стандартным способом через {{jsxref("Object.getOwnPropertyDescriptor()")}}.

+ +

Примеры

+
var obj = {
+  set foo(value) {
+    return this.bar = value;
+  }
+};
+
+
+// Нестандартный и устаревший способ
+obj.__lookupSetter__('foo')
+// (function(value) { this.bar = value; })
+
+
+// Способ, совместимый со стандартом
+Object.getOwnPropertyDescriptor(obj, 'foo').set;
+// (function(value) { this.bar = value; })
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/assign/index.html b/files/ru/web/javascript/reference/global_objects/object/assign/index.html new file mode 100644 index 0000000000..f4c222cc26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/assign/index.html @@ -0,0 +1,216 @@ +--- +title: Object.assign() +slug: Web/JavaScript/Reference/Global_Objects/Object/assign +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign +--- +
{{JSRef}}
+ +

Метод Object.assign() используется для копирования значений всех собственных перечисляемых свойств из одного или более исходных объектов в целевой объект. После копирования он возвращает целевой объект.

+ +

Синтаксис

+ +
Object.assign(target, ...sources)
+ +

Параметры

+ +
+
target
+
Целевой объект.
+
sources
+
Исходные объекты.
+
+ +

Возвращаемое значение

+ +

Возвращается получившийся целевой объект.

+ +

Описание

+ +

Метод Object.assign() копирует из исходных объектов в целевой объект только перечисляемые и собственные свойства. Он использует внутренний метод [[Get]] на исходных объектах и внутренний метод [[Set]] на целевом объекте, так что он также вызывает геттеры и сеттеры. Именно поэтому он присваивает свойства вместо простого копирования или определения новых свойств. Это поведение может сделать метод непригодным для вливания новых свойств в прототип, если вливаемые исходные объекты содержат геттеры. Вместо него для копирования в прототипы определений свойств, включая признак их перечисляемости, следует использовать методы {{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.defineProperty()")}}.

+ +

Копируются свойства типов как {{jsxref("String")}}, так и {{jsxref("Symbol")}}.

+ +

В случае возникновения ошибки, например, когда свойство является незаписываемым, возбуждается исключение {{jsxref("TypeError")}}, а целевой объект target остаётся неизменным.

+ +

Обратите внимание, что метод Object.assign() не выкидывает исключения, если в качестве исходных значений выступают {{jsxref("null")}} или {{jsxref("undefined")}}.

+ +

Примеры

+ +

Пример: клонирование объекта

+ +
var obj = { a: 1 };
+var copy = Object.assign({}, obj);
+console.log(copy); // { a: 1 }
+
+ +

Пример: слияние объектов

+ +
var o1 = { a: 1 };
+var o2 = { b: 2 };
+var o3 = { c: 3 };
+
+var obj = Object.assign(o1, o2, o3);
+console.log(obj); // { a: 1, b: 2, c: 3 }
+console.log(o1);  // { a: 1, b: 2, c: 3 }, изменился и сам целевой объект.
+
+ +

Пример: копирование символьных свойств

+ +
var o1 = { a: 1 };
+var o2 = { [Symbol('foo')]: 2 };
+
+var obj = Object.assign({}, o1, o2);
+console.log(obj); // { a: 1, [Symbol("foo")]: 2 }
+
+ +

Пример: наследуемые и неперечисляемые свойства не копируются

+ +
var obj = Object.create({ foo: 1 }, { // foo является унаследованным свойством.
+  bar: {
+    value: 2  // bar является неперечисляемым свойством.
+  },
+  baz: {
+    value: 3,
+    enumerable: true  // baz является собственным перечисляемым свойством.
+  }
+});
+
+var copy = Object.assign({}, obj);
+console.log(copy); // { baz: 3 }
+
+ +

Пример: примитивы оборачиваются в объекты

+ +
var v1 = '123';
+var v2 = true;
+var v3 = 10;
+var v4 = Symbol('foo')
+
+var obj = Object.assign({}, v1, null, v2, undefined, v3, v4);
+// Примитивы будут обёрнуты, а null и undefined - проигнорированы.
+// Обратите внимание, что собственные перечисляемые свойства имеет только обёртка над строкой.
+console.log(obj); // { "0": "1", "1": "2", "2": "3" }
+
+ +

Пример: исключения прерывают текущую задачу копирования

+ +
var target = Object.defineProperty({}, 'foo', {
+  value: 1,
+  writable: false
+}); // target.foo является свойством только-для-чтения
+
+Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 });
+// TypeError: "foo" is read-only
+// При присваивании свойству target.foo выбрасывается исключение
+
+console.log(target.bar);  // 2, первый исходный объект успешно скопировался.
+console.log(target.foo2); // 3, первое свойство второго исходного объекта успешно скопировалось.
+console.log(target.foo);  // 1, здесь было выброшено исключение.
+console.log(target.foo3); // undefined, метод assign завершился, свойство foo3 не скопировалось.
+console.log(target.baz);  // undefined, третий исходный объект так же не скопировался.
+
+ +

Пример: копирование методов доступа

+ +
var obj = {
+  foo: 1,
+  get bar() {
+    return 2;
+  }
+};
+
+var copy = Object.assign({}, obj);
+console.log(copy);
+// { foo: 1, bar: 2 }, значением свойства copy.bar является значение, возвращаемое геттером obj.bar.
+
+// Такой вариант функции присваивания позволяет копировать методы доступа.
+function myAssign(target, ...sources) {
+  sources.forEach(source => {
+    Object.defineProperties(target, Object.keys(source).reduce((descriptors, key) => {
+      descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
+      return descriptors;
+    }, {}));
+  });
+  return target;
+}
+
+var copy = myAssign({}, obj);
+console.log(copy);
+// { foo:1, get bar() { return 2 } }
+
+ +

Полифилл

+ +

Этот полифилл не поддерживает символьные свойства, поскольку ES5 всё равно не поддерживает символы:

+ +
if (!Object.assign) {
+  Object.defineProperty(Object, 'assign', {
+    enumerable: false,
+    configurable: true,
+    writable: true,
+    value: function(target, firstSource) {
+      'use strict';
+      if (target === undefined || target === null) {
+        throw new TypeError('Cannot convert first argument to object');
+      }
+
+      var to = Object(target);
+      for (var i = 1; i < arguments.length; i++) {
+        var nextSource = arguments[i];
+        if (nextSource === undefined || nextSource === null) {
+          continue;
+        }
+
+        var keysArray = Object.keys(Object(nextSource));
+        for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
+          var nextKey = keysArray[nextIndex];
+          var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+          if (desc !== undefined && desc.enumerable) {
+            to[nextKey] = nextSource[nextKey];
+          }
+        }
+      }
+      return to;
+    }
+  });
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-object.assign', 'Object.assign')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
 
+ +
{{Compat("javascript.builtins.Object.assign")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/constructor/index.html b/files/ru/web/javascript/reference/global_objects/object/constructor/index.html new file mode 100644 index 0000000000..4db5ef3987 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/constructor/index.html @@ -0,0 +1,173 @@ +--- +title: Object.prototype.constructor +slug: Web/JavaScript/Reference/Global_Objects/Object/constructor +tags: + - JavaScript + - Object + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor +--- +
+ {{JSRef("Global_Objects", "Object")}}
+

Сводка

+

Возвращает ссылку на функцию {{jsxref("Global_Objects/Object", "Object")}}, создавшую прототип экземпляра. Обратите внимание, что значение этого свойства является ссылкой на саму функцию, а не строкой, содержащей имя функции. Для примитивных значений, вроде 1true или "test", значение доступно только для чтения.

+

Описание

+

Все объекты наследуют свойство constructor из своего прототипа:

+
var o = {};
+o.constructor === Object; // true
+
+var a = [];
+a.constructor === Array; // true
+
+var n = new Number(3);
+n.constructor === Number; // true
+
+

Примеры

+

Пример: отображение конструктора объекта

+

В следующем примере создаётся прототип Tree и объект этого типа theTree. Затем в примере отображается свойство constructor объекта theTree.

+
function Tree(name) {
+  this.name = name;
+}
+
+var theTree = new Tree("Красное дерево");
+console.log("theTree.constructor равен " + theTree.constructor);
+
+

Вывод примера будет следующим:

+
theTree.constructor равен function Tree(name) {
+  this.name = name;
+}
+
+

Пример: изменение конструктора объекта

+

Следующий пример показывает, как изменить конструктор значений общих объектов. Не затрагиваются только значения true, 1 и "тест", поскольку они имеют родные конструкторы только для чтения. Этот пример показывает, что полагаться на свойство constructor объекта не всегда безопасно.

+
function Type() {}
+
+var types = [
+  new Array(),
+  [],
+  new Boolean(),
+  true,             // останется неизменным
+  new Date(),
+  new Error(),
+  new Function(),
+  function() {},
+  Math,
+  new Number(),
+  1,                // останется неизменным
+  new Object(),
+  {},
+  new RegExp(),
+  /(?:)/,
+  new String(),
+  'тест'            // останется неизменным
+];
+
+for (var i = 0; i < types.length; i++) {
+  types[i].constructor = Type;
+  types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()];
+}
+
+console.log(types.join('\n'));
+
+

Вывод примера будет следующим:

+
function Type() {},false,
+function Type() {},false,
+function Type() {},false,false
+function Boolean() {
+    [native code]
+},false,true
+function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600
+function Type() {},false,Error
+function Type() {},false,function anonymous() {
+
+}
+function Type() {},false,function () {}
+function Type() {},false,[object Math]
+function Type() {},false,0
+function Number() {
+    [native code]
+},false,1
+function Type() {},false,[object Object]
+function Type() {},false,[object Object]
+function Type() {},false,/(?:)/
+function Type() {},false,/(?:)/
+function Type() {},false,
+function String() {
+    [native code]
+},false,тест
+
+

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализовано в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.2.4.1', 'Object.prototype.constructor')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}{{Spec2('ES6')}} 
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

 

diff --git a/files/ru/web/javascript/reference/global_objects/object/count/index.html b/files/ru/web/javascript/reference/global_objects/object/count/index.html new file mode 100644 index 0000000000..7308b40b0f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/count/index.html @@ -0,0 +1,83 @@ +--- +title: Object.prototype.__count__ +slug: Web/JavaScript/Reference/Global_Objects/Object/count +tags: + - JavaScript + - Object + - Obsolete + - Property + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Object.count +--- +
{{JSRef("Global_Objects", "Object")}} {{obsolete_header("2")}}
+ +

Сводка

+

Свойство __count__ использовалось для хранения количества перечисляемых свойств объекта, но было удалено.

+ +

Синтаксис

+
obj.__count__
+ +

Пример

+
{ 1: 1 }.__count__              // 1
+[].__count__                    // 0
+[1].__count__                   // 1
+[1, /* дыра */, 2, 3].__count__ // 3
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/create/index.html b/files/ru/web/javascript/reference/global_objects/object/create/index.html new file mode 100644 index 0000000000..d17862e00d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/create/index.html @@ -0,0 +1,240 @@ +--- +title: Object.create() +slug: Web/JavaScript/Reference/Global_Objects/Object/create +tags: + - ECMAScript5 + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/create +--- +
{{JSRef}}
+ +

Метод Object.create() создаёт новый объект с указанным прототипом и свойствами.

+ +

Синтаксис

+ +
Object.create(proto[, propertiesObject])
+ +

Параметры

+ +
+
proto
+
Объект, который станет прототипом вновь созданного объекта.
+
propertiesObject
+
Необязательный параметр. Если указан и не равен {{jsxref("Global_Objects/undefined", "undefined")}}, должен быть объектом, чьи собственные перечисляемые свойства (то есть такие, которые определены на самом объекте, а не унаследованы по цепочке прототипов) указывают дескрипторы свойств, добавляемых в новый объект. Имена добавляемых свойств совпадают с именами свойств в этом объекте. Эти свойства соответствуют второму аргументу метода {{jsxref("Object.defineProperties()")}}.
+
+ +

Возвращаемые значения

+ +

Новый объект с заданным прототипом и свойствами

+ +

Выбрасываемые исключения

+ +

Выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если параметр proto не является {{jsxref("Global_Objects/null", "null")}} или объектом (исключение составляют объекты-обертки примитивных типов).

+ +

Примеры

+ +

Пример: классическое наследование с Object.create()

+ +

Ниже показан пример использования Object.create() для имитации классического наследования. Это пример одиночного наследования, поскольку только его поддерживает JavaScript.

+ +
// Shape — суперкласс
+function Shape() {
+  this.x = 0;
+  this.y = 0;
+}
+
+// метод суперкласса
+Shape.prototype.move = function(x, y) {
+  this.x += x;
+  this.y += y;
+  console.info('Фигура переместилась.');
+};
+
+// Rectangle — подкласс
+function Rectangle() {
+  Shape.call(this); // вызываем конструктор суперкласса
+}
+
+// подкласс расширяет суперкласс
+Rectangle.prototype = Object.create(Shape.prototype);
+Rectangle.prototype.constructor = Rectangle;
+
+var rect = new Rectangle();
+
+console.log('Является ли rect экземпляром Rectangle? ' + (rect instanceof Rectangle)); // true
+console.log('Является ли rect экземпляром Shape? ' + (rect instanceof Shape)); // true
+rect.move(1, 1); // выведет 'Фигура переместилась.'
+
+ +

Если вы хотите унаследоваться от нескольких объектов, то это возможно сделать при помощи примесей.

+ +
function MyClass() {
+  SuperClass.call(this);
+  OtherSuperClass.call(this);
+}
+
+MyClass.prototype = Object.create(SuperClass.prototype); // наследование
+mixin(MyClass.prototype, OtherSuperClass.prototype); // примешивание
+
+MyClass.prototype.myMethod = function() {
+  // что-то делаем
+};
+
+ +

Функция примешивания должна копировать функции из прототипа суперкласса в прототип подкласса, она должна предоставляться пользователем. Примером примеси может служить функция jQuery.extend().

+ +

Пример: использование аргумента propertiesObject с Object.create()

+ +
var o;
+
+// создаём объект с нулевым прототипом
+o = Object.create(null);
+
+
+o = {};
+// эквивалентно этому:
+o = Object.create(Object.prototype);
+
+
+// В этом примере мы создаём объект с несколькими свойствами.
+// (Обратите внимание, что второй параметр отображает ключи на *дескрипторы свойств*.)
+o = Object.create(Object.prototype, {
+  // foo является рядовым 'свойством-значением'
+  foo: { writable: true, configurable: true, value: 'привет' },
+  // bar является свойством с геттером и сеттером (свойством доступа)
+  bar: {
+    configurable: false,
+    get: function() { return 10; },
+    set: function(value) { console.log('Установка `o.bar` в', value); }
+/* при использовании методов доступа ES5 наш код мог бы выглядеть так:
+    get function() { return 10; },
+    set function(value) { console.log('Установка `o.bar` в', value); } */
+  }
+});
+
+
+function Constructor() {}
+o = new Constructor();
+// эквивалентно этому:
+o = Object.create(Constructor.prototype);
+// Конечно, если бы в функции Constructor был бы реальный код инициализации,
+// метод с Object.create() не был бы эквивалентным
+
+
+// создаём новый объект, чей прототип является новым пустым объектом
+// и добавляем простое свойство 'p' со значением 42
+o = Object.create({}, { p: { value: 42 } });
+
+// по умолчанию свойства НЕ ЯВЛЯЮТСЯ записываемыми, перечисляемыми или настраиваемыми:
+o.p = 24;
+o.p;
+// 42
+
+o.q = 12;
+for (var prop in o) {
+  console.log(prop);
+}
+// 'q'
+
+delete o.p;
+// false
+
+// для определения свойства ES3
+o2 = Object.create({}, {
+  p: {
+    value: 42,
+    writable: true,
+    enumerable: true,
+    configurable: true
+  }
+});
+
+ +

Полифилл

+ +

Для этого полифилла необходима правильно работающая Object.prototype.hasOwnProperty.

+ +
if (typeof Object.create != 'function') {
+  // Этапы производства ECMA-262, издание 5, 15.2.3.5
+  // Ссылка: http://es5.github.io/#x15.2.3.5
+  Object.create = (function() {
+    // Чтобы сэкономить память, используйте общий конструктор
+    function Temp() {}
+
+    // делает безопасную ссылку на Object.prototype.hasOwnProperty
+    var hasOwn = Object.prototype.hasOwnProperty;
+
+    return function (O) {
+      // 1. Если Type(O) не является Object or Null выдается исключениеTypeError.
+      if (typeof O != 'object') {
+        throw TypeError('Object prototype may only be an Object or null');
+      }
+
+      // 2. Пусть obj будет результатом создания нового объекта, как если бы
+      //    выражение new Object(), где Object является стандартным встроенным
+      //    конструктором  с таким именем
+      // 3. Установите для внутреннего свойства [[Prototype]] объекта obj значение O.
+      Temp.prototype = O;
+      var obj = new Temp();
+      Temp.prototype = null; // Давайте не будем держать случайные ссылки на О...
+
+      // 4.  Если аргумент Properties присутствует и не определен, добавляем
+      //    собственные свойства к obj, как будто вызывая стандартную встроенную
+      //    функцию Object.defineProperties с аргументами obj и
+      //    Properties.
+      if (arguments.length > 1) {
+        // Object.defineProperties делает ToObject своим первым аргументом.
+        var Properties = Object(arguments[1]);
+        for (var prop in Properties) {
+          if (hasOwn.call(Properties, prop)) {
+            obj[prop] = Properties[prop];
+          }
+        }
+      }
+
+      // 5. Возращает obj
+      return obj;
+    };
+  })();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.5', 'Object.create')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.create', 'Object.create')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.create")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html b/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html new file mode 100644 index 0000000000..30e95e65a1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html @@ -0,0 +1,236 @@ +--- +title: Object.defineProperties() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.defineProperties() определяет новые или изменяет существующие свойства, непосредственно на объекте, возвращая этот объект.

+ +

Синтаксис

+ +
Object.defineProperties(obj, props)
+ +

Параметры

+ +
+
obj
+
Объект, на котором определяются новые или изменяются существующие свойства.
+
props
+
Объект, чьи собственные перечисляемые свойства представляют собой дескрипторы для создаваемых или изменяемых свойств. Дескрипторы свойств обладают следующими дополнительными ключами: +
+
configurable
+
Равен true только в том случае, если тип этого дескриптора свойства может быть изменён и если свойство может быть удалено из содержащего его объекта.
+ Значение по умолчанию установлено в false.
+
enumerable
+
Равен true только в том случае, если это свойство можно увидеть через перечисление свойств содержащего его объекта.
+ Значение по умолчанию установлено в false.
+
value
+
Значение, ассоциированное со свойством. Может быть любым допустимым значением JavaScript (числом, объектом, функцией и т.д.).
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
writable
+
Равен true только в том случае, если значение, ассоциированное со свойством, может быть изменено с помощью {{jsxref("Operators/Assignment_Operators", "оператора присваивания", "", 1)}}.
+ Значение по умолчанию установлено в false.
+
get
+
Функция, используемая как геттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет геттера. Возвращаемое значение функции будет использоваться как значение свойства.
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
set
+
Функция, используемая как сеттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет сеттера. Функция принимает единственным аргументом новое значение, присваиваемое свойству.
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
+

Возвращаемое значение

+ +

Объект, переданный в функцию.

+
+
+
+
+ +

Описание

+ +

Метод Object.defineProperties(), по сути, определяет все свойства, соответствующие собственным свойствам объекта props, на объекте obj.

+ +

Примеры

+ +
Object.defineProperties(obj, {
+  'property1': {
+    value: true,
+    writable: true
+  },
+  'property2': {
+    value: 'Hello',
+    writable: false
+  }
+  // и т.д.
+});
+
+ +

Полифилл

+ +

Предполагается, что среда выполнения осталась нетронутой, все имена и свойства ссылаются на свои изначальные значения. Оригинальный метод Object.defineProperties почти полностью эквивалентен (смотрите комментарий в функции isCallable) следующей реализации на JavaScript:

+ +
function defineProperties(obj, properties) {
+  function convertToDescriptor(desc) {
+    function hasProperty(obj, prop) {
+      return Object.prototype.hasOwnProperty.call(obj, prop);
+    }
+
+    function isCallable(v) {
+      // NB: изменить при необходимости считать вызываемым что-то ещё, кроме функций.
+      return typeof v === 'function';
+    }
+
+    if (typeof desc !== 'object' || desc === null) {
+      throw new TypeError('bad desc');
+    }
+
+    var d = {};
+
+    if (hasProperty(desc, 'enumerable')) {
+      d.enumerable = !!obj.enumerable;
+    }
+    if (hasProperty(desc, 'configurable')) {
+      d.configurable = !!obj.configurable;
+    }
+    if (hasProperty(desc, 'value')) {
+      d.value = obj.value;
+    }
+    if (hasProperty(desc, 'writable')) {
+      d.writable = !!desc.writable;
+    }
+    if (hasProperty(desc, 'get')) {
+      var g = desc.get;
+
+      if (!isCallable(g) && g !== 'undefined') {
+        throw new TypeError('bad get');
+      }
+      d.get = g;
+    }
+    if (hasProperty(desc, 'set')) {
+      var s = desc.set;
+      if (!isCallable(s) && s !== 'undefined') {
+        throw new TypeError('bad set');
+      }
+      d.set = s;
+    }
+
+    if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) {
+      throw new TypeError('identity-confused descriptor');
+    }
+
+    return d;
+  }
+
+  if (typeof obj !== 'object' || obj === null) {
+    throw new TypeError('bad obj');
+  }
+
+  properties = Object(properties);
+
+  var keys = Object.keys(properties);
+  var descs = [];
+
+  for (var i = 0; i < keys.length; i++) {
+    descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);
+  }
+
+  for (var i = 0; i < descs.length; i++) {
+    Object.defineProperty(obj, descs[i][0], descs[i][1]);
+  }
+
+  return obj;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.7', 'Object.defineProperties')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.defineproperties', 'Object.defineProperties')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Базовая поддержка{{CompatGeckoDesktop("2")}}{{CompatChrome("5")}} (предыдущие версии не проверялись){{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatOperaMobile("11.50")}}{{CompatVersionUnknown}}
+
+ +

На основе таблицы совместимости Kangax.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html b/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html new file mode 100644 index 0000000000..41accdbee2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html @@ -0,0 +1,399 @@ +--- +title: Object.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.defineProperty() определяет новое или изменяет существующее свойство непосредственно на объекте, возвращая этот объект.

+ +

Синтаксис

+ +
Object.defineProperty(obj, prop, descriptor)
+ +

Параметры

+ +
+
obj
+
Объект, на котором определяется свойство.
+
prop
+
Имя определяемого или изменяемого свойства.
+
descriptor
+
Дескриптор определяемого или изменяемого свойства.
+
+ +

Описание

+ +

Этот метод позволяет точно добавлять или изменять свойства объекта. Обычное добавление свойств через присваивание создаёт свойства, которые можно увидеть через перечисление свойств (с помощью цикла {{jsxref("Statements/for...in", "for...in")}} или метода {{jsxref("Object.keys")}}), чьи значения могут быть изменены и которые могут быть {{jsxref("Operators/delete", "удалены", "", 1)}}. Этот же метод позволяет настроить эти дополнительные детали свойства.

+ +

Дескрипторы свойств, присутствующие в объектах, бывают двух основных типов: дескрипторы данных и дескрипторы доступа. Дескриптор данных — это свойство, имеющее значение, которое может быть (а может и не быть) записываемым. Дескриптор доступа — это свойство, описываемое парой функций — геттером и сеттером. Дескриптор может быть только чем-то одним из этих двух типов; он не может быть одновременно обоими.

+ +

И дескриптор данных, и дескриптор доступа являются объектами. Они обладают следующими обязательными ключами:

+ +
+
configurable
+
Равен true только в том случае, если тип этого дескриптора свойства может быть изменён и если свойство может быть удалено из содержащего его объекта.
+ Значение по умолчанию установлено в false.
+
enumerable
+
Равен true только в том случае, если это свойство можно увидеть через перечисление свойств содержащего его объекта.
+ Значение по умолчанию установлено в false.
+
+ +

Дескриптор данных также может содержать следующие дополнительные ключи:

+ +
+
value
+
Значение, ассоциированное со свойством. Может быть любым допустимым значением JavaScript (числом, объектом, функцией и т.д.).
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
writable
+
Равен true только в том случае, если значение, ассоциированное со свойством, может быть изменено с помощью {{jsxref("Operators/Assignment_Operators", "оператора присваивания", "", 1)}}.
+ Значение по умолчанию установлено в false.
+
+ +

Дескриптор доступа также может содержать следующие дополнительные ключи:

+ +
+
get
+
Функция, используемая как геттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет геттера. Возвращаемое значение функции будет использоваться как значение свойства.
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
set
+
Функция, используемая как сеттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет сеттера. Функция принимает единственным аргументом новое значение, присваиваемое свойству.
+ Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.
+
+ +

Имейте в виду, что эти ключи не обязательно должны принадлежать самому дескриптору свойства, если они унаследованы, они так же будут приниматься во внимание. Для сохранения этих ключей по умолчанию неизменными, вы можете заранее заморозить {{jsxref("Object.prototype")}}, явно определив все ключи, либо установить свойство {{jsxref("Object.prototype.__proto__", "__proto__")}} в {{jsxref("Global_Objects/null", "null")}}.

+ +
// Использование __proto__
+Object.defineProperty(obj, 'key', {
+  __proto__: null, // нет унаследованных свойств
+  value: 'static'  // по умолчанию
+                   // не перечисляется,
+                   // не настраивается и
+                   // не перезаписывается
+});
+
+// Явное определение свойства
+Object.defineProperty(obj, 'key', {
+  enumerable: false,
+  configurable: false,
+  writable: false,
+  value: 'static'
+});
+
+// Переиспользование одного и того же объекта
+function withValue(value) {
+  var d = withValue.d || (
+    withValue.d = {
+      enumerable: false,
+      writable: false,
+      configurable: false,
+      value: null
+    }
+  );
+  d.value = value;
+  return d;
+}
+// ... и ...
+Object.defineProperty(obj, 'key', withValue('static'));
+
+// Если доступен метод freeze, предотвращаем добавление свойств
+// value, get, set, enumerable, writable и configurable
+// к прототипу Object
+(Object.freeze || Object)(Object.prototype);
+
+ +

Примеры

+ +

Если вы хотите посмотреть, как использовать метод Object.defineProperty() с синтаксисом похожим-на-бинарные-флаги, смотрите дополнительные примеры.

+ +

Пример: создание свойства

+ +

Если указанное свойство не существует в объекте, метод Object.defineProperty() создаст новое свойство по переданному описанию. Поля в дескрипторе могут быть опущены, в этом случае их значения будут значениями по умолчанию. Все логические поля будут по-умолчанию установлены в false. Поля value, get и set по умолчанию будут установлены в {{jsxref("Global_Objects/undefined", "undefined")}}. Свойство, определённое без атрибутов get/set/value/writable называется «общим», а дескриптор данных — «типовым».

+ +
var o = {}; // Создаём новый объект
+
+// Пример добавления свойства к объекту через defineProperty()
+// с дескриптором данных
+Object.defineProperty(o, 'a', {
+  value: 37,
+  writable: true,
+  enumerable: true,
+  configurable: true
+});
+// Свойство 'a' существует в объекте o и имеет значение, равное 37
+
+// Пример добавления свойства к объекту через defineProperty()
+// с дескриптором доступа
+var bValue = 38;
+Object.defineProperty(o, 'b', {
+  get: function() { return bValue; },
+  set: function(newValue) { bValue = newValue; },
+  enumerable: true,
+  configurable: true
+});
+o.b; // 38
+// Свойство 'b' существует в объекте o и имеет значение, равное 38
+// Значение свойства o.b теперь идентично значению bValue до тех пор,
+// пока свойство o.b не будет переопределено
+
+// Вы не можете смешать два этих подхода:
+Object.defineProperty(o, 'conflict', {
+  value: 0x9f91102,
+  get: function() { return 0xdeadbeef; }
+});
+// Выкинет исключение TypeError: свойство value применимо только в
+// дескрипторах данных, свойство get применимо только в дескрипторах
+// доступа
+
+ +

Пример: изменение свойства

+ +

Если свойство уже существует, метод Object.defineProperty() попытается изменить свойство в соответствии со значениями в дескрипторе и текущим состоянием объекта. Если у старого дескриптора атрибут configurable был установлен в false (говорит, что свойство является «ненастраиваемым»), то никакие атрибуты, кроме атрибута writable, не смогут быть изменены. В этом случае так же невозможно переключаться между типами дескрипторов.

+ +

Если свойство является ненастраиваемым, его атрибут writable может быть изменён только на значение false.

+ +

При попытке изменить ненастраиваемые атрибуты свойства будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} (кроме случая изменения атрибута writable), даже в том случае, если текущее и новое значения идентичны.

+ +

Атрибут writable

+ +

Если атрибут writable свойства установлен в false, свойство становится «незаписываемым». Ему невозможно будет присвоить новое значение.

+ +
var o = {}; // Создаём новый объект
+
+Object.defineProperty(o, 'a', {
+  value : 37,
+  writable : false
+});
+
+console.log(o.a); // Выведет 37
+o.a = 25; // Исключение не будет выброшено (будет выброшено только в
+          // строгом режиме, даже если значение будет тем же самым)
+console.log(o.a); // Выведет 37. Присваивание не сработало.
+
+ +

Как видно в этом примере, попытка записи в незаписываемое свойство его не изменило, но и исключение так же не было выброшено.

+ +

Атрибут enumerable

+ +

Атрибут enumerable свойства определяет, просматривается ли свойство в цикле {{jsxref("Statements/for...in", "for...in")}} и методом {{jsxref("Object.keys()")}} или нет.

+ +
var o = {};
+Object.defineProperty(o, 'a', { value: 1, enumerable: true });
+Object.defineProperty(o, 'b', { value: 2, enumerable: false });
+// Атрибут enumerable по умолчанию установлен в false
+Object.defineProperty(o, 'c', { value: 3 });
+
+o.d = 4; // При создании свойства путём присваивания, атрибут enumerable
+         // по умолчанию установливается в true
+
+for (var i in o) {
+  console.log(i);
+}
+// Выведет 'a' и 'd' (порядок вывода не определён)
+
+Object.keys(o); // ['a', 'd']
+
+o.propertyIsEnumerable('a'); // true
+o.propertyIsEnumerable('b'); // false
+o.propertyIsEnumerable('c'); // false
+
+ +

Атрибут configurable

+ +

Атрибут configurable одновременно контролирует, может ли свойство быть удалено из объекта и могут ли быть изменены его атрибуты (кроме контроля изменения атрибута writable).

+ +
var o = {};
+Object.defineProperty(o, 'a', {
+  get: function() { return 1; },
+  configurable: false
+});
+
+Object.defineProperty(o, 'a', { configurable: true }); // Выкинет TypeError
+Object.defineProperty(o, 'a', { enumerable: true }); // Выкинет TypeError
+Object.defineProperty(o, 'a', { set: function() {} }); // Выкинет TypeError (ранее свойство set дескриптора не было определено)
+Object.defineProperty(o, 'a', { get: function() { return 1; } }); // Выкинет TypeError (даже несмотря на то, что get делает то же, что и раньше)
+Object.defineProperty(o, 'a', { value: 12 }); // Выкинет TypeError
+
+console.log(o.a); // Выведет 1
+delete o.a; // Ничего не произойдёт
+console.log(o.a); // Выведет 1
+
+ +

Если бы атрибут configurable объекта o.a был установлен в true, никакие ошибки не были бы выброшены и в конце свойство было бы удалено.

+ +

Пример: добавление свойств и значений по умолчанию

+ +

Важно понимать, как устанавливаются значения по умолчанию атрибутам свойств. Часто существует разница между простым назначением значения посредством точечной нотации и использованием метода Object.defineProperty(), что и показывает пример ниже.

+ +
var o = {};
+
+o.a = 1;
+// Эквивалентно записи:
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: true,
+  configurable: true,
+  enumerable: true
+});
+
+
+// С другой стороны,
+Object.defineProperty(o, 'a', { value: 1 });
+// эквивалентно записи:
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: false,
+  configurable: false,
+  enumerable: false
+});
+
+ +

Пример: пользовательские сеттеры и геттеры

+ +

Пример ниже показывает, как реализовать самоархивирующийся объект. При установке свойства temperature в массив archive попадает запись журнала.

+ +
function Archiver() {
+  var temperature = null;
+  var archive = [];
+
+  Object.defineProperty(this, 'temperature', {
+    get: function() {
+      console.log('get!');
+      return temperature;
+    },
+    set: function(value) {
+      temperature = value;
+      archive.push({ val: temperature });
+    }
+  });
+
+  this.getArchive = function() { return archive; };
+}
+
+var arc = new Archiver();
+arc.temperature; // 'get!'
+arc.temperature = 11;
+arc.temperature = 13;
+arc.getArchive(); // [{ val: 11 }, { val: 13 }]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.6', 'Object.defineProperty')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.defineproperty', 'Object.defineProperty')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Базовая поддержка{{CompatGeckoDesktop("2")}}{{CompatChrome("5")}} (предыдущие версии не проверялись){{CompatIE("9")}} ({{CompatIE("8")}}, но только на объектах DOM с нестандартным поведением. Подробности смотрите ниже.){{CompatOpera("11.60")}}{{CompatSafari("5.1")}} ({{CompatSafari("5")}}, кроме объектов DOM)
+
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatIE("9")}} и выше{{CompatOperaMobile("11.50")}}{{CompatVersionUnknown}}
+
+ +

На основе таблицы совместимости Kangax.

+ +

Переопределение свойства length на объекте Array

+ +

На массивах возможно переопределить свойство {{jsxref("Array.length", "length")}}, при условии соблюдения обычных ограничений на переопределение. (Изначально свойство {{jsxref("Array.length", "length")}} является ненастраиваемым, неперечисляемым и записываемым. Таким образом, на неизменнённом массиве возможно изменить значение свойства {{jsxref("Array.length", "length")}} либо сделать его незаписываемым. Его перечисляемость или настраиваемость изменить нельзя, так же как и его записываемость, если оно сделано не записываемым.) Однако не все браузеры поддерживают такое переопределение.

+ +

Firefox с версии 4 по версию 22 бросает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} на любую попытку (вне зависимости от того, разрешена ли она или нет) переопределить свойство {{jsxref("Array.length", "length")}} массива.

+ +

Версии Chrome, реализующие метод Object.defineProperty(), в некоторых случаях игнорируют значение length отличное от текущего значения свойства {{jsxref("Array.length", "length")}} массива. В некоторых случаях изменение записываемости свойства просто не работает без каких-либо сообщений об ошибках (и выбрасываемых исключений). Также, в связи с вышесказанным, некоторые методы изменения массива, вроде метода {{jsxref("Array.prototype.push")}}, не обращают внимания на незаписываемое свойство {{jsxref("Array.length", "length")}}.

+ +

Версии Safari, реализующие метод Object.defineProperty(), игнорируют значение length, отличное от текущего значения свойства {{jsxref("Array.length", "length")}} массива, и попытка изменить записываемость свойства выполнится без ошибок, но на самом деле записываемость свойства не изменится.

+ +

Только Internet Explorer 9 и выше, а так же Firefox 23 и выше, по-видимому, полностью и правильно реализуют переопределение свойства {{jsxref("Array.length", "length")}} массивов. В настоящее время не стоит полагаться на работу переопределения свойства {{jsxref("Array.length", "length")}} массива, или что оно работает определённым образом. И даже если вы можете положиться на это, есть действительно веская причина не делать этого.

+ +

Примечания по Internet Explorer 8

+ +

Реализация метода Object.defineProperty() в Internet Explorer 8 предусматривает, что он может быть использован только для объектов DOM. Нужно также отметить несколько моментов:

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/entries/index.html b/files/ru/web/javascript/reference/global_objects/object/entries/index.html new file mode 100644 index 0000000000..505065970b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/entries/index.html @@ -0,0 +1,121 @@ +--- +title: Object.entries() +slug: Web/JavaScript/Reference/Global_Objects/Object/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries +--- +
{{JSRef}}
+ +

Object.entries() метод возвращает массив собственных перечисляемых свойств указанного объекта в формате [key, value], в том же порядке, что и в цикле {{jsxref("Statements/for...in", "for...in")}} (разница в том, что for-in перечисляет свойства из цепочки прототипов). Порядок элементов в массиве который возвращается Object.entries() не зависит от того как объект обьявлен. Если существует необходимость в определенном порядке, то  массив должен быть отсортирован до вызова метода, например Object.entries(obj).sort((a, b) => a[0] - b[0]);.

+ +

{{EmbedInteractiveExample("pages/js/object-entries.html")}}

+ +

Синтаксис

+ +
Object.entries(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чьи перечислимые свойства будут возвращены в виде массива [key, value].
+
+

Возвращаемое значение

+
+
Массив перечислений собственных свойств объекта с парами [key, value].
+
+ +

Описание

+ +

Object.entries() возвращает массив, элементами которого являются массивы, соответсвующие перечисляемому свойству пары [key, value], найденной прямо в object. Порядок свойств тот же, что и при прохождении циклом по свойствам объекта вручную.

+ +

Примеры

+ +
var obj = { foo: "bar", baz: 42 };
+console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
+
+// массив как объект
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
+
+// массив как объект c random сортировкой ключей
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
+
+// getFoo is property which isn't enumerable
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = "bar";
+console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]
+
+// non-object argument will be coerced to an object
+console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
+ +
// returns an empty array for any primitive type, since primitives have no own properties
+console.log(Object.entries(100)); // [ ]
+
+// iterate through key-value gracefully
+const obj = { a: 5, b: 7, c: 9 };
+for (const [key, value] of Object.entries(obj)) {
+  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+}
+
+// Or, using array extras
+Object.entries(obj).forEach(([key, value]) => {
+  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
+});
+ +

Преобразование Object в Map

+ +

Конструктор {{jsxref("Map", "new Map()")}} принимает повторение значений. С Object.entries вы легко можете преобразовать {{jsxref("Object")}} в {{jsxref("Map")}}:

+ +
var obj = { foo: "bar", baz: 42 };
+var map = new Map(Object.entries(obj));
+console.log(map); // Map { foo: "bar", baz: 42 }
+ +

Итерация по Object

+ +

Используя метод Разбора Массивов Вы можете легко итерировать объекты.

+ +
const obj = { foo: 'bar', baz: 42 };
+Object.entries(obj).forEach(([key, value]) => console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"
+ +

Полифил

+ +

Чтобы добавить поддержку Object.entries в более старых окружениях, которые не поддерживают его нативно, вы можете найти полифил в tc39/proposal-object-values-entries или es-shims/Object.entries репозиториях.

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}{{Spec2('ESDraft')}}Пока не включена в официальный проект. Смотрите это  предложение stage3 для проекта текста текущей спецификации
+ +

Совместимость с браузерами

+ +
+
+ + +

{{Compat("javascript.builtins.Object.entries")}}

+
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/eval/index.html b/files/ru/web/javascript/reference/global_objects/object/eval/index.html new file mode 100644 index 0000000000..e6b8e3668f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/eval/index.html @@ -0,0 +1,81 @@ +--- +title: Object.prototype.eval() +slug: Web/JavaScript/Reference/Global_Objects/Object/eval +tags: + - JavaScript + - Method + - Object + - Obsolete + - Prototype +translation_of: Archive/Web/JavaScript/Object.eval +--- +
+ {{JSRef("Global_Objects", "Object")}} {{obsolete_header}}
+

Сводка

+

Метод Object.eval() использовался для вычисления строки JavaScript-кода в контексте объекта, однако, был удалён.

+

Синтаксис

+
obj.eval(string)
+

Параметры

+
+
+ string
+
+ Любая строка, представляющая выражение, инструкцию или последовательность инструкций JavaScript. Выражение может содержать переменые и свойства существующих объектов.
+
+

Описание

+

Метод eval больше не используется как метод объекта. Вместо него используйте глобальную функцию {{jsxref("Global_Objects/eval", "eval()")}}.

+

Спецификации

+

Не является частью какой-либо спецификации.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/freeze/index.html b/files/ru/web/javascript/reference/global_objects/object/freeze/index.html new file mode 100644 index 0000000000..bd987a2915 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/freeze/index.html @@ -0,0 +1,165 @@ +--- +title: Object.freeze() +slug: Web/JavaScript/Reference/Global_Objects/Object/freeze +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Метод Object.freeze() замораживает объект: это значит, что он предотвращает добавление новых свойств к объекту, удаление старых свойств из объекта и изменение существующих свойств или значения их атрибутов перечисляемости, настраиваемости и записываемости. В сущности, объект становится эффективно неизменным. Метод возвращает замороженный объект.

+ +

Синтаксис

+ +
Object.freeze(obj)
+ +

Параметры

+ +
+
obj
+
Объект для заморозки.
+
+ +

Возвращаемое значение

+ +

Замороженный объект

+ +

Описание

+ +

К замороженному объекту нельзя добавить никаких свойств, так же как и удалить свойства из замороженного объекта. Любые попытки сделать это потерпят неудачу, либо молча, либо выбросив исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Functions_and_function_scope/Strict_mode", "строгом режиме", "", 1)}}).

+ +

Значения свойств-данных не могут быть изменены. Свойства-доступы (геттеры и сеттеры) работают как положено (и всё ещё создают иллюзию, что вы изменили значение). Обратите внимание, что значения, являющиеся объектами, всё ещё могут быть изменены, если только они так же не были заморожены.

+ +

Примеры

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Можно добавлять новые свойства, существующие свойства можно изменять или удалять
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+// Оба объекта эквивалентны, а также возвращаемый объект будет заморожен.
+// Необязательно сохранять возвращаемый объект при заморозке оригинала.
+var o = Object.freeze(obj);
+
+o === obj; // true
+Object.isFrozen(obj); // === true;
+
+// Теперь все изменения будут заканчиваться с ошибкой
+obj.foo = 'quux'; // тихо ничего не делает
+obj.quaxxor = 'the friendly duck'; // тихо не добавляет свойство
+
+// ...а в строгом режиме такие попытки вызовут выброс исключения TypeError
+function fail() {
+  'use strict';
+  obj.foo = 'sparky'; // выбросит TypeError
+  delete obj.quaxxor; // выбросит TypeError
+  obj.sparky = 'arf'; // выбросит TypeError
+}
+
+fail();
+
+// Попытки внести изменения через метод Object.defineProperty также выбросят исключение
+Object.defineProperty(obj, 'ohai', { value: 17 }); // выбросит TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // выбросит TypeError
+
+ +

Следующий пример показывает, что значения-объекты в замороженном объекте могут быть изменены (заморозка неглубокая).

+ +
obj = {
+  internal: {}
+};
+
+Object.freeze(obj);
+obj.internal.a = 'значениеA';
+
+obj.internal.a // 'значениеA'
+
+// Чтобы сделать объект obj полностью неизменяемым, замораживаем каждый объект в объекте obj.
+// Для этого воспользуемся этой функцией.
+function deepFreeze(obj) {
+
+  // Получаем имена свойств из объекта obj
+  var propNames = Object.getOwnPropertyNames(obj);
+
+  // Замораживаем свойства для заморозки самого объекта
+  propNames.forEach(function(name) {
+    var prop = obj[name];
+
+    // Заморозка свойства prop, если оно объект
+    if (typeof prop == 'object' && prop !== null)
+      deepFreeze(prop);
+  });
+
+  // Заморозить сам объект obj (ничего не произойдёт, если он уже заморожен)
+  return Object.freeze(obj);
+}
+
+obj2 = {
+  internal: {}
+};
+
+deepFreeze(obj2);
+obj2.internal.a = 'другоеЗначение';
+obj2.internal.a; // undefined
+
+ +

Примечания

+ +

В ES5 если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES2015 такой аргумент будет рассматриваться, как простой замороженный объект и метод его просто вернёт.

+ +
> Object.freeze(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.freeze(1)
+1                             // код ES2015
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.9', 'Object.freeze')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES2015', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ES2015')}}
{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.freeze")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html new file mode 100644 index 0000000000..6935cd3ec6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html @@ -0,0 +1,108 @@ +--- +title: Object.fromEntries() +slug: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +tags: + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +--- +
{{JSRef}}
+ +

Метод Object.fromEntries() преобразует список пар ключ-значение в объект.

+ +
{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}
+ + + +

Синтаксис

+ +
Object.fromEntries(iterable);
+ +

Параметры

+ +
+
iterable
+
Итерируемый объект, такой как {{jsxref("Array")}} или {{jsxref("Map")}} или другие объекты, реализующие iterable протокол.
+
+ +

Возращаемое значение

+ +

Новый объект, свойства которого задаются записями iterable.

+ +

Описание

+ +

Метод Object.fromEntries() принимает список пар ключ-значение и возвращает новый объект, свойства которого задаются этими записями. Ожидается, что аргумент iterable будет объектом, который реализует метод @@iterator, который возращает объект итератора, который создает двуэлементный массивоподобный объект, первый элемент которого является значением, которое будет использоваться в качестве ключа свойства, а второй элемент — значением связанного с этим ключом свойства.

+ +

Object.fromEntries() выполняет процедуру, обратную {{jsxref("Object.entries()")}}.

+ +

Примеры

+ +

Преобразование Map в Object

+ +

С Object.fromEntries вы можете преобразовать {{jsxref("Map")}} в {{jsxref("Object")}}:

+ +
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
+const obj = Object.fromEntries(map);
+console.log(obj); // { foo: "bar", baz: 42 }
+
+ +

Преобразование Array в Object

+ +

С Object.fromEntries вы можете преобразовать {{jsxref("Array")}} в {{jsxref("Object")}}:

+ +
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
+const obj = Object.fromEntries(arr);
+console.log(obj); // { 0: "a", 1: "b", 2: "c" }
+
+ +

Трансформации объектов

+ +

С Object.fromEntries, обратным ему методом {{jsxref("Object.entries()")}} и методами манипулирования массивами вы можете преобразовывать объекты следующим образом:

+ +
const object1 = { a: 1, b: 2, c: 3 };
+
+const object2 = Object.fromEntries(
+  Object.entries(object1)
+  .map(([ key, val ]) => [ key, val * 2 ])
+);
+
+console.log(object2);
+// { a: 2, b: 4, c: 6 }
+ +

Спецификации

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}{{Spec2('ESDraft')}}Изначальное определение в ECMAScript 2019.
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Object.fromEntries")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html b/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html new file mode 100644 index 0000000000..1947d51f73 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html @@ -0,0 +1,47 @@ +--- +title: Object.getNotifier() +slug: Web/JavaScript/Reference/Global_Objects/Object/getNotifier +translation_of: Archive/Web/JavaScript/Object.getNotifier +--- +
{{JSRef}} {{obsolete_header}}
+ +

Метод Object.getNotifer() использовался для создания объекта, который позволяет синтетически инициировать изменение, но не рекомендуется  и удаляется в браузерах.

+ +

Синтаксис

+ +
Object.getNotifier(obj)
+ +

Параметры

+ +
+
obj
+
Объект для извлечения уведомителя.
+
+ +

Возращаемое значение

+ +

Объект увидомителя, связанный с объектом, передаваемым в функцию.

+ +

Описание

+ +

Уведомитель используется для запуска искусственных изменений, которые будут обнаружены Object.observe().

+ +

Спецификации

+ +

Strawman proposal specification.

+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Object.getNotifier")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..94c1bce570 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html @@ -0,0 +1,148 @@ +--- +title: Object.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +tags: + - ECMAScript5 + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+

Метод Object.getOwnPropertyDescriptor() возвращает дескриптор свойства для собственного свойства (то есть такого, которое находится непосредственно в объекте, а не получено через цепочку прототипов) переданного объекта.

+ +

Синтаксис

+
Object.getOwnPropertyDescriptor(obj, prop)
+ +

Параметры

+
+
obj
+
Объект, в котором ищется свойство.
+
prop
+
Имя свойства, чьё описание будет возвращено.
+
+ +

Возвращаемое значение

+

Дескриптор переданного свойства, если оно присутствует в объекте, либо {{jsxref("undefined")}}, если его там нет.

+ +

Описание

+

Этот метод позволяет просмотреть точное описание свойства. Свойство в JavaScript состоит из строкового имени и дескриптора свойства. Подробная информация о типах дескрипторов свойств и их атрибутах может быть найдена в описании метода {{jsxref("Object.defineProperty()")}}.

+

Дескриптор свойства — это запись с некоторыми из следующих атрибутов:

+
+
value
+
Значение, ассоциированное со свойством (только в дескрипторе данных).
+
writable
+
Значение true, если значение, ассоциированное со свойством, может быть изменено, иначе false (только в дескрипторе данных).
+
get
+
Функция, возвращающая значение свойства, либо {{jsxref("undefined")}}, если такая функция отсутствует (только в дескрипторе доступа).
+
set
+
Функция, изменяющая значение свойства, либо {{jsxref("undefined")}}, если такая функция отсутствует (только в дескрипторе доступа).
+
configurable
+
Значение true, если тип дескриптора этого свойства может быть изменён и если свойство может быть удалено из содержащего его объекта, иначе false.
+
enumerable
+
Значение true, если это свойство доступно при перечислении свойств содержащего его объекта, иначе false.
+
+ +

Примеры

+
var o, d;
+
+o = { get foo() { return 17; } };
+d = Object.getOwnPropertyDescriptor(o, 'foo');
+// d равен { configurable: true, enumerable: true, get: /*функция геттера*/, set: undefined }
+
+o = { bar: 42 };
+d = Object.getOwnPropertyDescriptor(o, 'bar');
+// d равен { configurable: true, enumerable: true, value: 42, writable: true }
+
+o = {};
+Object.defineProperty(o, 'baz', { value: 8675309, writable: false, enumerable: false });
+d = Object.getOwnPropertyDescriptor(o, 'baz');
+// d равен { value: 8675309, writable: false, enumerable: false, configurable: false }
+
+ +

Примечания

+

В ES5, если первый аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет сначала приведён к объекту.

+
> Object.getOwnPropertyDescriptor('foo', 0)
+TypeError: "foo" is not an object  // код ES5
+
+> Object.getOwnPropertyDescriptor('foo', 0)
+{ configurable: false, enumerable: true, value: 'f', writable: false }  // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.3', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("5")}}{{CompatGeckoDesktop("2")}}{{CompatIE("8")}}{{CompatOpera("12 alpha")}}{{CompatSafari("5")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

На основе таблицы совместимости Kangax.

+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html new file mode 100644 index 0000000000..3b1c545f1b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html @@ -0,0 +1,115 @@ +--- +title: Object.getOwnPropertyDescriptors() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +--- +
{{JSRef}}
+ +

Метод Object.getOwnPropertyDescriptors() возвращает все собственные дескрипторы свойств данного объекта.

+ +
{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}
+ +

Синтаксис

+ +
Object.getOwnPropertyDescriptors(obj)
+ +

Параметры

+ +
+
obj
+
Объект, для которого нужно получить все собственные дескрипторы свойств.
+
+ +

Возращаемое значение

+ +

Объект, содержащий все собственные дескрипторы свойств объекта. Может быть пустой объект, если нет свойств.

+ +

Описание

+ +

Этот метод позволяет изучить точное описание всех собственных свойств объекта. Свойство в JavaScript состоит из строкового имени или {{jsxref("Symbol")}}  и свойства дескриптора. Дополнительную информацию о типах свойств дескрипторов и их атрибутах можно найти в {{jsxref("Object.defineProperty()")}}.

+ +

Свойство дескриптора это запись с некоторыми из следующих атрибутов:

+ +
+
value
+
Значение, связанное со свойством (только дескрипторы данных).
+
writable
+
true  тогда и только тогда когда значение, связанное со свойством, может быть изменено (только дескрипторы данных).
+
get
+
Функция, которая служит в качестве получателя для свойства, или {{jsxref("undefined")}} если нет получателя (только дескрипторы доступа).
+
set
+
Функция, которая служит установщиком для свойства, или {{jsxref("undefined")}} если установщика нет (только дескрипторы доступа).
+
configurable
+
true тогда и только тогда, когда тип этого свойства дескриптора может быть изменен, и если свойство может быть удалено из соответствующего объекта.
+
enumerable
+
true тогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта. +

 

+
+
+ +

Примеры

+ +

Создание поверхностного клона

+ +

В то время как метод {{jsxref("Object.assign()")}} будет только копировать перечисяемые и собственные свойствва из исходного объекат в целевой объект, вы можете использовать этот метод и {{jsxref("Object.create()")}} для поверхностного копирования между двумя неизвестными объектами:

+ +
Object.create(
+  Object.getPrototypeOf(obj),
+  Object.getOwnPropertyDescriptors(obj)
+);
+
+ +

Создание подкласса

+ +

Типичный способ создания подкласса это определить подкласс, определить свойства этого экземпляра. Это может быть неудобно особенно для получателей и установщиков. Вместо этого, вы можете использовать этот код для установки прототипа:

+ +
function superclass() {}
+superclass.prototype = {
+  // Определите ваши методы и свойства здесь
+};
+function subclass() {}
+subclass.prototype = Object.create(
+  superclass.prototype,
+  {
+    // Определите ваши методы и свойства здесь
+  }
+);
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ESDraft')}}Начальное определение в ECMAScript 2017.
{{SpecName('ES2017', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}{{Spec2('ES2017')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html new file mode 100644 index 0000000000..c280afe9ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html @@ -0,0 +1,161 @@ +--- +title: Object.getOwnPropertyNames() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Метод Object.getOwnPropertyNames() возвращает массив со всеми свойствами (независимо от того, перечисляемые они или нет), найденными непосредственно в переданном объекте.

+ +

{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}

+ +

Синтаксис

+ +
Object.getOwnPropertyNames(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чьи перечисляемые и неперечисляемые собственные свойства будут возвращены.
+
+ +

Возвращаемое значение

+ +

Массив строк, который соответствует свойствам, найденным непосредственно в данном объекте.

+ +

Описание

+ +

Метод Object.getOwnPropertyNames возвращает массив строк, соответствующих перечисляемым и неперечисляемым свойствам, найденным непосредственно в объекте obj. Порядок перечисляемых свойств в массиве соответствует порядку при обходе объекта циклом {{jsxref("Statements/for...in", "for...in")}} (или при возврате методом {{jsxref("Object.keys")}}). Порядок неперечисляемых свойств в массиве, а также их местоположение среди перечисляемых свойств не определены.

+ +

Примеры

+ +

Пример: использование Object.getOwnPropertyNames()

+ +
var arr = ['a', 'b', 'c'];
+console.log(Object.getOwnPropertyNames(arr).sort()); // напечатает '0,1,2,length'
+
+// Массивоподобный объект
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.getOwnPropertyNames(obj).sort()); // напечатает '0,1,2'
+
+// Печать имён и значений свойств с помощью Array.forEach
+Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
+  console.log(val + ' -> ' + obj[val]);
+});
+// напечатает
+// 0 -> a
+// 1 -> b
+// 2 -> c
+
+// Не перечисляемое свойство
+var my_obj = Object.create({}, {
+  getFoo: {
+    value: function() { return this.foo; },
+    enumerable: false
+  }
+});
+my_obj.foo = 1;
+
+console.log(Object.getOwnPropertyNames(my_obj).sort()); // напечатает 'foo,getFoo'
+
+ +

Если вы хотите обработать только перечисляемые свойства, смотрите в сторону метода {{jsxref("Object.keys()")}} или используйте цикл {{jsxref("Statements/for...in", "for...in")}} (хотя стоит отметить, что он пройдётся по перечисляемым свойствам, присутствующим не только непосредственно в самом объекте, но и унаследованным из цепочки прототипов объекта; последние можно отфильтровать с помощью метода {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).

+ +

Элементы в цепочке прототипов не перечисляются:

+ +
function ParentClass() {}
+ParentClass.prototype.inheritedMethod = function() {};
+
+function ChildClass() {
+  this.prop = 5;
+  this.method = function() {};
+}
+ChildClass.prototype = new ParentClass;
+ChildClass.prototype.prototypeMethod = function() {};
+
+alert(
+  Object.getOwnPropertyNames(
+    new ChildClass() // ['prop', 'method']
+  )
+);
+
+ +

Пример: получение только не перечисляемых свойств

+ +

Здесь используется функция {{jsxref("Array.prototype.filter()")}} для удаления перечисляемых ключей (полученных через метод {{jsxref("Object.keys()")}}) из списка всех ключей (полученных через метод Object.getOwnPropertyNames()) и, таким образом, оставляющая только неперечисляемые ключи.

+ +
var target = myObject;
+var enum_and_nonenum = Object.getOwnPropertyNames(target);
+var enum_only = Object.keys(target);
+var nonenum_only = enum_and_nonenum.filter(function(key) {
+  var indexInEnum = enum_only.indexOf(key);
+  if (indexInEnum == -1) {
+    // если ключ не найден в массиве enum_only, значит ключ является не перечисляемым
+    // и нужно вернуть true, чтобы он попал в результирующий массив
+    return true;
+  } else {
+    return false;
+  }
+});
+
+console.log(nonenum_only);
+
+ +

Примечания

+ +

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет приведён к объекту.

+ +
> Object.getOwnPropertyNames('foo')
+TypeError: "foo" is not an object // код ES5
+
+> Object.getOwnPropertyNames('foo')
+['length', '0', '1', '2']         // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}
+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html new file mode 100644 index 0000000000..e86deefc78 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html @@ -0,0 +1,94 @@ +--- +title: Object.getOwnPropertySymbols() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Метод Object.getOwnPropertySymbols() возвращает массив всех символьных свойств, найденных непосредственно на переданном объекте.

+ +

{{EmbedInteractiveExample("pages/js/object-getownpropertysymbols.html")}}

+ + + +

Синтаксис

+ +
Object.getOwnPropertySymbols(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чьи символьные будут возвращены.
+
+ +

Возвращаемое значение

+ +

Массив всех свойств символа, найденных прямо на данном объекте.

+ +

Описание

+ +

Подобно методу {{jsxref("Object.getOwnPropertyNames()")}}, вы можете получить все символьные свойства указанного объекта в качестве массива символов. Обратите внимание, что метод {{jsxref("Object.getOwnPropertyNames()")}} сам не возвращает символьные свойства объекта, он возвращает только строковые свойства.

+ +

Поскольку изначально никакой объект не содержит собственных символьных свойств, метод Object.getOwnPropertySymbols() будет возвращать пустой массив, пока вы не установите символьные свойства на вашем объекте.

+ +

Примеры

+ +
var obj = {};
+var a = Symbol('a');
+var b = Symbol.for('b');
+
+obj[a] = 'localSymbol';
+obj[b] = 'globalSymbol';
+
+var objectSymbols = Object.getOwnPropertySymbols(obj);
+
+console.log(objectSymbols.length); // 2
+console.log(objectSymbols);        // [Symbol(a), Symbol(b)]
+console.log(objectSymbols[0]);     // Symbol(a)
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Object.getOwnPropertySymbols")}}

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html new file mode 100644 index 0000000000..540fddb350 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html @@ -0,0 +1,139 @@ +--- +title: Object.getPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +tags: + - ECMAScript5 + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.getPrototypeOf() возвращает прототип (то есть, внутреннее свойство [[Prototype]]) указанного объекта.

+ +

Синтаксис

+ +
Object.getPrototypeOf(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чей прототип будет возвращён.
+
+ +

Примеры

+ +
var proto = {};
+var obj = Object.create(proto);
+Object.getPrototypeOf(obj) === proto; // true
+
+ +
> Object.getPrototypeOf('foo')
+TypeError: "foo" is not an object  // код ES5
+> Object.getPrototypeOf('foo')
+String.prototype                   // код ES6
+
+ +

Примечания

+ +

В ES5, если параметр obj не является объектом, будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6, параметр будет приведён к объекту {{jsxref("Global_Objects/Object", "Object")}}.

+ +
> Object.getPrototypeOf('foo')
+TypeError: "foo" is not an object  // код ES5
+> Object.getPrototypeOf('foo')
+String.prototype                   // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.2', 'Object.getPrototypeOf')}}{{Spec2('ES5.1')}}Изначальное определение.
{{SpecName('ES6', '#sec-object.getprototypeof', 'Object.getProtoypeOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("5")}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("12.10")}} (может быть и более ранние){{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

На основе таблицы совместимости Kangax.

+ +

Примечания по Opera

+ +

Хотя старые версии Opera и не поддерживают меотод Object.getPrototypeOf(), Opera поддерживает нестандартное свойство {{jsxref("Object.proto", "__proto__")}}, начиная с версии Opera 10.50.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html b/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html new file mode 100644 index 0000000000..c1fa2f6464 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html @@ -0,0 +1,145 @@ +--- +title: Object.prototype.hasOwnProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод hasOwnProperty() возвращает логическое значение, указывающее, содержит ли объект указанное свойство.

+ +

Синтаксис

+ +
obj.hasOwnProperty(prop)
+ +

Параметры

+ +
+
prop
+
Имя проверяемого свойства.
+
+ +

Описание

+ +

Каждый объект, произошедший от {{jsxref("Global_Objects/Object", "Object")}}, наследует метод hasOwnProperty. Этот метод может использоваться для определения того, содержит ли объект указанное свойство в качестве собственного свойства объекта; в отличие от оператора {{jsxref("Operators/in", "in")}}, этот метод не проверяет существование свойств в цепочке прототипов объекта.

+ +

Примеры

+ +

Пример: использование hasOwnProperty для проверки существования свойства

+ +

В следующем примере определяется, содержит ли объект o свойство с именем prop:

+ +
o = new Object();
+o.prop = 'существует';
+
+function changeO() {
+  o.newprop = o.prop;
+  delete o.prop;
+}
+
+o.hasOwnProperty('prop');   // вернёт true
+changeO();
+o.hasOwnProperty('prop');   // вернёт false
+
+ +

Пример: собственные и унаследованные свойства

+ +

Следующий пример показывает разницу между собственными свойствами и свойствами, унаследоваными через цепочку прототипов:

+ +
o = new Object();
+o.prop = 'существует';
+o.hasOwnProperty('prop');             // вернёт true
+o.hasOwnProperty('toString');         // вернёт false
+o.hasOwnProperty('hasOwnProperty');   // вернёт false
+
+ +

Пример: обход свойств объекта

+ +

Следующий пример показывает, как итерироваться по свойствам объекта с пропуском унаследованных свойств. Обратите внимание, что цикл {{jsxref("Statements/for...in", "for...in")}} уже проходит только по перечисляемым элементам, так что не надо на основании отсутствия не перечисляемых свойств, показываемых в цикле, считать, что метод hasOwnProperty сам ограничивает свойства только перечисляемыми элементами (как это делает метод {{jsxref("Object.getOwnPropertyNames()")}}).

+ +
var buz = {
+  fog: 'stack'
+};
+
+for (var name in buz) {
+  if (buz.hasOwnProperty(name)) {
+    alert('это точно туман (' + name + '). Значение: ' + buz[name]);
+  }
+  else {
+    alert(name); // toString или что-то ещё
+  }
+}
+
+ +

Пример: hasOwnProperty как свойство

+ +

JavaScript не защищает имя свойства hasOwnProperty; таким образом, вполне может существовать объект с таким свойством, поэтому для получения правильного результата нужно использовать внешний метод hasOwnProperty:

+ +
var foo = {
+  hasOwnProperty: function() {
+    return false;
+  },
+  bar: 'Тут драконы'
+};
+
+foo.hasOwnProperty('bar'); // всегда возвращает false
+
+// Используем метод hasOwnProperty другого объекта и вызываем его с передачей foo в качестве this
+({}).hasOwnProperty.call(foo, 'bar'); // true
+
+// Также для этих целей можно использовать свойство hasOwnProperty из прототипа Object
+Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
+
+ +

Обратите внимание, что в последнем случае новые объекты не создаются.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3rd Edition.СтандартИзначальное определение. Реализована в JavaScript 1.5.
{{SpecName('ES5.1', '#sec-15.2.4.5', 'Object.prototype.hasOwnProperty')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
+

{{Compat("javascript.builtins.Object.hasOwnProperty")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/index.html b/files/ru/web/javascript/reference/global_objects/object/index.html new file mode 100644 index 0000000000..0286dff0dd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/index.html @@ -0,0 +1,216 @@ +--- +title: Object +slug: Web/JavaScript/Reference/Global_Objects/Object +tags: + - Constructor + - JavaScript + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Конструктор Object создаёт объект-обёртку.

+ +

Синтаксис

+ +
// Инициализатор объекта или литерал
+{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
+
+// Вызов в качестве конструктора
+new Object([value])
+
+ +

Параметры

+ +
+
nameValuePair1, nameValuePair2, ... nameValuePairN
+
Пары из имён (строки) и значений (любые значения), где имя отделяется от значения двоеточием.
+
value
+
Любое значение.
+
+ +

Описание

+ +

Конструктор Object создаёт объект-обёртку для переданного значения. Если значением является {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, создаёт и возвращает пустой объект, в противном случае возвращает объект такого типа, который соответствует переданному значению. Если значение уже является объектом, конструктор вернёт это значение.

+ +

При вызове в не-конструкторном контексте, Object ведёт себя идентично коду new Object().

+ +

Так же смотрите {{jsxref("Operators/Object_initializer", "синтаксис инициализатора объекта / литеральный синтаксис", "", 1)}}.

+ +

Свойства конструктора Object

+ +
+
Object.length
+
Имеет значение 1.
+
{{jsxref("Object.prototype")}}
+
Позволяет добавлять свойства ко всем объектам типа Object.
+
+ +

Методы конструктора Object

+ +
+
{{jsxref("Object.assign()")}}
+
Создаёт новый объект путём копирования значений всех собственных перечислимых свойств из одного или более исходных объектов в целевой объект.
+
{{jsxref("Object.create()")}}
+
Создаёт новый объект с указанными объектом прототипа и свойствами.
+
{{jsxref("Object.defineProperty()")}}
+
Добавляет к объекту именованное свойство, описываемое переданным дескриптором.
+
{{jsxref("Object.defineProperties()")}}
+
Добавляет к объекту именованные свойства, описываемые переданными дескрипторами.
+
{{jsxref("Object.freeze()")}}
+
Замораживает объект: другой код не сможет удалить или изменить никакое свойство.
+
{{jsxref("Object.getOwnPropertyDescriptor()")}}
+
Возвращает дескриптор свойства для именованного свойства объекта.
+
{{jsxref("Object.getOwnPropertyNames()")}}
+
Возвращает массив, содержащий имена всех переданных объекту собственных перечисляемых и неперечисляемых свойств.
+
{{jsxref("Object.getOwnPropertySymbols()")}}
+
Возвращает массив всех символьных свойств, найденных непосредственно в переданом объекте.
+
{{jsxref("Object.getPrototypeOf()")}}
+
Возвращает прототип указанного объекта.
+
{{jsxref("Object.is()")}}
+
Определяет, являются ли два значения различимыми (то есть, одинаковыми)
+
{{jsxref("Object.isExtensible()")}}
+
Определяет, разрешено ли расширение объекта.
+
{{jsxref("Object.isFrozen()")}}
+
Определяет, был ли объект заморожен.
+
{{jsxref("Object.isSealed()")}}
+
Определяет, является ли объект запечатанным (sealed).
+
{{jsxref("Object.keys()")}}
+
Возвращает массив, содержащий имена всех собственных перечислимых свойств переданного объекта.
+
{{jsxref("Object.observe()")}}
+
Асинхронно наблюдает за изменениями в объекте.
+
{{jsxref("Object.preventExtensions()")}}
+
Предотвращает любое расширение объекта.
+
{{jsxref("Object.seal()")}}
+
Предотвращает удаление свойств объекта другим кодом.
+
{{jsxref("Object.setPrototypeOf()")}}
+
Устанавливает прототип (т.е. внутреннее свойство [[Prototype]])
+
+ +

Экземпляры и прототип объекта Object

+ +

Все объекты в JavaScript являются потомками Object; все объекты наследуют методы и свойства из прототипа объекта {{jsxref("Object.prototype")}}, хотя они и могут быть переопределены. Например, прототипы других конструкторов переопределяют свойство constructor и предоставляют свои собственные методы toString(). Изменения в объекте прототипа Object распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование Object с типами undefined и null

+ +

Следующий пример сохраняет пустой объект Object в переменную o:

+ +
var o = new Object();
+
+ +
var o = new Object(undefined);
+
+ +
var o = new Object(null);
+
+ +

Пример: использование Object для создания объектов Boolean

+ +

Следующий пример сохраняет объекты {{jsxref("Global_Objects/Boolean", "Boolean")}} в переменную o:

+ +
// эквивалентно o = new Boolean(true);
+var o = new Object(true);
+
+ +
// эквивалентно o = new Boolean(false);
+var o = new Object(Boolean());
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2', 'Object')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object-objects', 'Object')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/is/index.html b/files/ru/web/javascript/reference/global_objects/object/is/index.html new file mode 100644 index 0000000000..c9f061a3a9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/is/index.html @@ -0,0 +1,122 @@ +--- +title: Object.is() +slug: Web/JavaScript/Reference/Global_Objects/Object/is +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/is +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.is() определяет, являются ли два значения одинаковыми значениями.

+ +

Синтаксис

+ +
var isSame = Object.is(value1, value2);
+ +

Параметры

+ +
+
value1
+
Первое сравниваемое значение.
+
value2
+
Второе сравниваемое значение.
+
+ +

Описание

+ +

Метод Object.is() определяет, являются ли два значения одинаковыми значениями. Два значения являются одинаковыми в следующих случаях:

+ + + +

Поведение этого метода не аналогично оператору {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. Оператор {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} использует приведение типов обоих операндов (если они имеют различный тип) перед проверкой на равенство (в результате получается, что проверка "" == false даёт true), а метод Object.is приведение типов не выполняет.

+ +

Поведение этого метода не аналогично оператору {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. Оператор {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (также как и оператор {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) считает числовые значения -0 и +0 равными, а значение {{jsxref("Number.NaN")}} не равным самому себе.

+ +

Примеры

+ +
Object.is('foo', 'foo');     // true
+Object.is(window, window);   // true
+
+Object.is('foo', 'bar');     // false
+Object.is([], []);           // false
+
+var test = { a: 1 };
+Object.is(test, test);       // true
+
+Object.is(null, null);       // true
+
+// Специальные случаи
+Object.is(0, -0);            // false
+Object.is(-0, -0);           // true
+Object.is(NaN, 0/0);         // true
+
+ +

Полифилл

+ +

Метод Object.is предложен в дополнение к стандарту ECMA-262; поэтому он может быть недоступен в некоторых браузерах. Это можно обойти, вставив приведённый ниже фрагмент кода в начало ваших скриптов. Он позволит вам использовать метод Object.is в случаях, когда он не имеет родной поддержки браузером.

+ +
if (!Object.is) {
+  Object.is = function(x, y) {
+    // SameValue algorithm
+    if (x === y) { // Steps 1-5, 7-10
+      // Steps 6.b-6.e: +0 != -0
+      return x !== 0 || 1 / x === 1 / y;
+    } else {
+      // Step 6.a: NaN == NaN
+      return x !== x && y !== y;
+    }
+  };
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-object.is', 'Object.is')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.is")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html b/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html new file mode 100644 index 0000000000..99b44f9654 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html @@ -0,0 +1,134 @@ +--- +title: Object.isExtensible() +slug: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+

Метод Object.isExtensible() определяет, является ли объект расширяемым (то есть, можно ли к нему добавлять новые свойства).

+ +

Синтаксис

+
Object.isExtensible(obj)
+ +

Параметры

+
+
obj
+
Проверяемый объект.
+
+ +

Описание

+

Объекты являются расширяемыми по умолчанию: к ним можно добавлять новые свойства и (в движках, поддерживающих свойство {{jsxref("Object.proto", "__proto__")}}) их можно изменять. Объект может быть помечен, как не изменяемый с помощью методов {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}} или {{jsxref("Object.freeze()")}}.

+ +

Примеры

+
// Новые объекты являются расширяемыми.
+var empty = {};
+assert(Object.isExtensible(empty) === true);
+
+// ...но это может быть изменено.
+Object.preventExtensions(empty);
+assert(Object.isExtensible(empty) === false);
+
+// Запечатанные объекты по определению не расширяемы.
+var sealed = Object.seal({});
+assert(Object.isExtensible(sealed) === false);
+
+// Замороженные объекты также по определению не расширяемы.
+var frozen = Object.freeze({});
+assert(Object.isExtensible(frozen) === false);
+
+ +

Примечания

+

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой не расширяемый объект и метод просто вернёт false.

+
> Object.isExtensible(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.isExtensible(1)
+false                         // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

На основе таблицы совместимости Kangax.

+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html new file mode 100644 index 0000000000..1970718f05 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html @@ -0,0 +1,142 @@ +--- +title: Object.isFrozen() +slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.isFrozen() определяет, был ли объект заморожен.

+ +

Синтаксис

+ +
Object.isFrozen(obj)
+ +

Параметры

+ +
+
obj
+
Проверяемый объект.
+
+ +

Описание

+ +

Объект является замороженным только в том случае, если он не {{jsxref("Object.isExtensible()", "расширяем", "", 1)}}, все его свойства являются не настраиваемыми и все его свойства данных (то есть такие, которые не являются свойствами доступа с функциями сеттера или геттера) являются не записываемыми.

+ +

Примеры

+ +
// Новый объект является расширяемым, так что он не заморожен.
+assert(Object.isFrozen({}) === false);
+
+// Пустой не расширяемый объект по определению заморожен.
+var vacuouslyFrozen = Object.preventExtensions({});
+assert(Object.isFrozen(vacuouslyFrozen) === true);
+
+// Новый объект с одним свойством является расширяемым, поэтому он не заморожен.
+var oneProp = { p: 42 };
+assert(Object.isFrozen(oneProp) === false);
+
+// Предотвращение расширения объекта всё ещё не делает его замороженным,
+// поскольку свойство всё ещё остаётся настраиваемым (и записываемым).
+Object.preventExtensions(oneProp);
+assert(Object.isFrozen(oneProp) === false);
+
+// ...но при удалении этого свойства объект становится замороженным по определению.
+delete oneProp.p;
+assert(Object.isFrozen(oneProp) === true);
+
+// Не расширяемый объект с не записываемым, но всё ещё настраиваемым свойством, не является замороженным.
+var nonWritable = { e: 'plep' };
+Object.preventExtensions(nonWritable);
+Object.defineProperty(nonWritable, 'e', { writable: false }); // делаем свойство не записываемым
+assert(Object.isFrozen(nonWritable) === false);
+
+// Изменение свойства на не настраиваемое делает объект замороженным.
+Object.defineProperty(nonWritable, 'e', { configurable: false }); // делаем свойство не настраиваемым
+assert(Object.isFrozen(nonWritable) === true);
+
+// Не расширяемый объект с не настраиваемым, но всё ещё записываемым свойством, также не является замороженным.
+var nonConfigurable = { release: 'кракен!' };
+Object.preventExtensions(nonConfigurable);
+Object.defineProperty(nonConfigurable, 'release', { configurable: false });
+assert(Object.isFrozen(nonConfigurable) === false);
+
+// Изменение свойства на не записываемое делает объект замороженным.
+Object.defineProperty(nonConfigurable, 'release', { writable: false });
+assert(Object.isFrozen(nonConfigurable) === true);
+
+// Не расширяемый объект с настраиваемым свойством доступа не является замороженным.
+var accessor = { get food() { return 'ням'; } };
+Object.preventExtensions(accessor);
+assert(Object.isFrozen(accessor) === false);
+
+// ...но сделав это свойство не настраиваемым, объект становится замороженным.
+Object.defineProperty(accessor, 'food', { configurable: false });
+assert(Object.isFrozen(accessor) === true);
+
+// Самым же простым способом заморозить объект можно через вызов на нём метода Object.freeze.
+var frozen = { 1: 81 };
+assert(Object.isFrozen(frozen) === false);
+Object.freeze(frozen);
+assert(Object.isFrozen(frozen) === true);
+
+// По определению, замороженный объект является не расширяемым.
+assert(Object.isExtensible(frozen) === false);
+
+// Также, по определению, замороженный объект является запечатанным.
+assert(Object.isSealed(frozen) === true);
+
+ +

Примечания

+ +

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой замороженный объект и метод просто вернёт true.

+ +
> Object.isFrozen(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.isFrozen(1)
+true                          // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.isFrozen")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html new file mode 100644 index 0000000000..d9ece7c245 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html @@ -0,0 +1,159 @@ +--- +title: Object.prototype.isPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод isPrototypeOf() проверяет, входит ли объект в цепочку прототипов другого объекта.

+ +
+

Обратите внимание: метод isPrototypeOf() отличается от оператора {{jsxref("Operators/instanceof", "instanceof")}}. Выражение "object instanceof AFunction" проверяет, присутствует ли в цепочке прототипов объекта object объект AFunction.prototype, а не сам объект AFunction.

+
+ +

Синтаксис

+ +
prototypeObj.isPrototypeOf(object)
+ +

Параметры

+ +
+
prototypeObj
+
Объект, проверяемый на каждую ссылку в цепочке прототипов аргумента object.
+
object
+
Объект, в чьей цепочке прототипов производится поиск.
+
+ +

Описание

+ +

Метод isPrototypeOf() позволяет вам проверять, существует ли объект в цепочке прототипов другого объекта.

+ +

Например, рассмотрим следующую цепочку прототипов:

+ +
function Fee() {
+  // ...
+}
+
+function Fi() {
+  // ...
+}
+Fi.prototype = new Fee();
+
+function Fo() {
+  // ...
+}
+Fo.prototype = new Fi();
+
+function Fum() {
+  // ...
+}
+Fum.prototype = new Fo();
+
+ +

Если позже вы создадите экземпляр объекта Fum и захотите проверить, что прототип Fi существует в цепочке прототипов Fum, вы можете сделать следующее:

+ +
var fum = new Fum();
+// ...
+
+if (Fi.prototype.isPrototypeOf(fum)) {
+  // здесь безопасно что-то делать
+}
+
+ +

Таким образом, вместе с оператором {{jsxref("Operators/instanceof", "instanceof")}}, это особенно пригождается, если у вас есть код, который может работать только с объектами, имеющими определённую цепочку прототипов, к примеру, чтобы он мог гарантировать, что в объекте присутствуют определённые методы или свойства.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.2.4.5', 'Object.prototype.hasOwnProperty')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/issealed/index.html b/files/ru/web/javascript/reference/global_objects/object/issealed/index.html new file mode 100644 index 0000000000..a0f0ad8c5e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/issealed/index.html @@ -0,0 +1,147 @@ +--- +title: Object.isSealed() +slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed +--- +
+ {{JSRef("Global_Objects", "Object")}}
+

Сводка

+

Метод Object.isSealed() определяет, является ли объект запечатанным.

+

Синтаксис

+
Object.isSealed(obj)
+

Параметры

+
+
+ obj
+
+ Проверяемый объект.
+
+

Описание

+

Возвращает true, если объект является запечатанным, иначе возвращает false. Объект является запечатанным, если он является не {{jsxref("Object.isExtensible", "расширяемым", "", 1)}} и если все его свойства являются не настраиваемыми и, следовательно, не удаляемыми (но не обязательно не записываемыми).

+

Примеры

+
// По умолчанию объекты не запечатаны.
+var empty = {};
+assert(Object.isSealed(empty) === false);
+
+// Если вы сделаете пустой объект не расширяемым, он по определению станет запечатанным.
+Object.preventExtensions(empty);
+assert(Object.isSealed(empty) === true);
+
+// То же самое не верно для не пустого объекта, пока все его свойства не станут не настраиваемыми.
+var hasProp = { fee: 'fie foe fum' };
+Object.preventExtensions(hasProp);
+assert(Object.isSealed(hasProp) === false);
+
+// Но сделав все его свойства не настраиваемыми, объект становится запечатанным.
+Object.defineProperty(hasProp, 'fee', { configurable: false });
+assert(Object.isSealed(hasProp) === true);
+
+// Простейшим способом запечатать объект, конечно, является использование метода Object.seal.
+var sealed = {};
+Object.seal(sealed);
+assert(Object.isSealed(sealed) === true);
+
+// Запечатанный объект по определению является не расширяемым.
+assert(Object.isExtensible(sealed) === false);
+
+// Запечатанный объект может быть замороженным, но это не всегда так.
+assert(Object.isFrozen(sealed) === true); // все свойства также являются не записываемыми
+
+var s2 = Object.seal({ p: 3 });
+assert(Object.isFrozen(s2) === false); // свойство 'p' всё ещё записываемое
+
+var s3 = Object.seal({ get p() { return 0; } });
+assert(Object.isFrozen(s3) === true); // для свойств доступа значение имеет только их настраиваемость
+
+

Примечания

+

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой запечатанный объект и метод просто вернёт true.

+
> Object.isSealed(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.isSealed(1)
+true                          // код ES6
+
+

Спецификации

+ + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ES6')}} 
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+

На основе таблицы совместимости Kangax.

+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/keys/index.html b/files/ru/web/javascript/reference/global_objects/object/keys/index.html new file mode 100644 index 0000000000..d5700bbb4e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/keys/index.html @@ -0,0 +1,153 @@ +--- +title: Object.keys() +slug: Web/JavaScript/Reference/Global_Objects/Object/keys +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.keys() возвращает массив из собственных перечисляемых свойств переданного объекта, в том же порядке, в котором они бы обходились циклом {{jsxref("Statements/for...in", "for...in")}} (разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов).

+ +

Синтаксис

+ +
Object.keys(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чьи собственные перечисляемые свойства будут возвращены.
+
+ +

Описание

+ +

Метод Object.keys возвращает массив строковых элементов, соответствующих именам перечисляемых свойств, найденных непосредственно в самом объекте. Порядок свойств такой же, как и при ручном перечислении свойств в объекте через цикл.

+ +

Примеры

+ +
var arr = ['a', 'b', 'c'];
+console.log(Object.keys(arr)); // консоль: ['0', '1', '2']
+
+// Массивоподобный объект
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.keys(obj)); // консоль: ['0', '1', '2']
+
+// Массивоподобный объект со случайным порядком ключей
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.keys(an_obj)); // консоль: ['2', '7', '100']
+
+// Свойство getFoo является не перечисляемым свойством
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 1;
+
+console.log(Object.keys(my_obj)); // консоль: ['foo']
+
+ +

Если вы хотите увидеть все свойства, а не только перечисляемые, смотрите метод {{jsxref("Object.getOwnPropertyNames()")}}.

+ +

Примечания

+ +

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES2015 такой аргумент будет приведён к объекту.

+ +
> Object.keys('foo')
+TypeError: 'foo' is not an object // код ES5
+
+> Object.keys('foo')
+['0', '1', '2']                   // код ES2015
+
+ +

Полифилл

+ +

Для добавления поддержки совместимого метода Object.keys в старых окружениях, которые его ещё не реализуют, скопируйте следующий кусок кода:

+ +
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
+if (!Object.keys) {
+  Object.keys = (function() {
+    'use strict';
+    var hasOwnProperty = Object.prototype.hasOwnProperty,
+        hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
+        dontEnums = [
+          'toString',
+          'toLocaleString',
+          'valueOf',
+          'hasOwnProperty',
+          'isPrototypeOf',
+          'propertyIsEnumerable',
+          'constructor'
+        ],
+        dontEnumsLength = dontEnums.length;
+
+    return function(obj) {
+      if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
+        throw new TypeError('Object.keys called on non-object');
+      }
+
+      var result = [], prop, i;
+
+      for (prop in obj) {
+        if (hasOwnProperty.call(obj, prop)) {
+          result.push(prop);
+        }
+      }
+
+      if (hasDontEnumBug) {
+        for (i = 0; i < dontEnumsLength; i++) {
+          if (hasOwnProperty.call(obj, dontEnums[i])) {
+            result.push(dontEnums[i]);
+          }
+        }
+      }
+      return result;
+    };
+  }());
+}
+
+ +

Пожалуйста, обратите внимание, что вышеприведённый код в IE7 (и, может быть, в IE8) включает и не перечисляемые ключи, если объект передаётся из другого окна.

+ +

Более простой полифилл может быть найден в статье Javascript - Object.keys Browser Compatibility (англ.).

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES2015', '#sec-object.keys', 'Object.keys')}}{{Spec2('ES2015')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Object.keys")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html b/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html new file mode 100644 index 0000000000..6f0827751f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html @@ -0,0 +1,195 @@ +--- +title: Object.prototype.__noSuchMethod__ +slug: Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod +tags: + - JavaScript + - Non-standard + - Object + - Property + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Object.noSuchMethod +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}}
+ +
Хотя свойство __noSuchMethod__ и нестандартно, спецификация ECMAScript Harmony (ES6) содержит объект {{jsxref("Proxy")}}, с помощью которого вы можете сделать всё тоже самое, что и при использовании этого свойством (и даже больше).
+ +

Сводка

+

Свойство __noSuchMethod__ ссылается на функцию, выполняющуюся каждый раз при вызове на объекте несуществующего метода.

+ +

Синтаксис

+
obj.__noSuchMethod__ = fun
+ +

Параметры

+
+
fun
+
Функция, имеющая вид
+
+
function(id, args) { . . . }
+
+
id
+
Имя вызванного несуществующего метода
+
args
+
Массив аргументов, переданный в метод
+
+
+
+ +

Описание

+

По умолчанию, при попытке вызвать не существующий в объекте метод, будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Это поведение можно обойти, определив функцию __noSuchMethod__ в качестве члена объекта. Функция принимает два аргумента, первый является именем метода, который попытались вызвать, а второй — массивом аргументов, которые были переданы в метод при его вызове. Второй аргумент является настойщим массивом (то есть, он наследуется через цепочку прототипов от {{jsxref("Array.prototype")}}), а не массивоподобным объектом arguments.

+

Если данный метод не может быть вызван, либо по причине того, что он установлен в {{jsxref("Global_Objects/undefined", "undefined")}} по умолчанию, либо удалён, либо вручную установлен в не-функцию, движок JavaScript вернётся к выбрасыванию исключения {{jsxref("Global_Objects/TypeError", "TypeError")}}.

+ +

Примеры

+ +

Пример: простая проверка свойства __noSuchMethod__

+
var o = {
+    __noSuchMethod__: function(id, args) { console.log(id, '(' + args.join(', ') + ')'); }
+};
+
+o.foo(1, 2, 3);
+o.bar(4, 5);
+o.baz();
+
+// Вывод
+// foo (1, 2, 3)
+// bar (4, 5)
+// baz ()
+
+ +

Пример: использование свойства __noSuchMethod__ для симуляции множественного наследования

+

Ниже показан пример кода, реализующего примитивную форму множественного наследования.

+
// Не работает с множественным наследованием объектов в качестве родителей
+function noMethod(name, args) {
+    var parents = this.__parents_;
+
+    // Пройдёмся по всем родителям
+    for (var i = 0; i < parents.length; i++) {
+        // Если нашли функцию в родителе, вызовем её
+        if (typeof parents[i][name] == 'function') {
+            return parents[i][name].apply(this, args);
+        }
+    }
+
+    // Если мы здесь, метод не был найден
+    throw new TypeError;
+}
+
+// Используется для добавления родителя при множественном наследовании
+function addParent(obj, parent) {
+    // Если объект ещё не инициализирован, инициализируем его
+    if (!obj.__parents_) {
+        obj.__parents_ = [];
+        obj.__noSuchMethod__ = noMethod;
+    }
+
+    // Добавляем родителя
+    obj.__parents_.push(parent);
+}
+
+

Ниже показан пример использования этой идеи.

+
// Пример первого базового класса
+
+function NamedThing(name) {
+    this.name = name;
+}
+
+NamedThing.prototype = {
+    getName: function() { return this.name; },
+    setName: function(newName) { this.name = newName; }
+}
+
+// Пример второго базового класса
+
+function AgedThing(age){
+    this.age = age;
+}
+
+AgedThing.prototype = {
+    getAge: function() { return this.age; },
+    setAge: function(age) { this.age = age; }
+}
+
+// Дочерний класс. Наследуется от NamedThing и AgedThing, а также определяет свойство address
+
+function Person(name, age, address) {
+    addParent(this, NamedThing.prototype);
+    NamedThing.call(this, name);
+    addParent(this, AgedThing.prototype);
+    AgedThing.call(this, age);
+    this.address = address;
+}
+
+Person.prototype = {
+    getAddr: function() { return this.address; },
+    setAddr: function(addr) { this.address = addr; }
+}
+
+var bob = new Person('Боб', 25, 'Нью-Йорк');
+
+console.log('getAge лежит ' + (('getAge' in bob) ? 'в' : 'не в') + ' объекте bob');
+console.log('возраст Боба: ' + bob.getAge());
+console.log('getName лежит ' + (('getName' in bob) ? 'в' : 'не в') + ' объекте bob');
+console.log('имя Боба: ' + bob.getName());
+console.log('getAddr лежит ' + (('getAddr' in bob) ? 'в' : 'не в') + ' объекте bob');
+console.log('адрес Боба: ' + bob.getAddr());
+
+

Вывод примера будет следующим:

+
getAge лежит не в объекте bob
+возраст Боба: 25
+getName лежит не в объекте bob
+имя Боба: Боб
+getAddr лежит в объекте bob
+адрес Боба: Нью-Йорк
+
+ +

Спецификации

+

Не является частью какой-либо спецификации.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("1.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("1.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/object/observe/index.html b/files/ru/web/javascript/reference/global_objects/object/observe/index.html new file mode 100644 index 0000000000..25fe9c879b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/observe/index.html @@ -0,0 +1,142 @@ +--- +title: Object.observe() +slug: Web/JavaScript/Reference/Global_Objects/Object/observe +tags: + - ECMAScript7 + - Experimental + - JavaScript + - Method + - Object + - Reference +translation_of: Archive/Web/JavaScript/Object.observe +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод Object.observe() используется для асинхронного обзора изменений в объекте. Он предоставляет поток изменений в порядке их возникновения.

+ +

Синтаксис

+ +
Object.observe(obj, callback)
+ +

Параметры

+ +
+
obj
+
Обозреваемый объект.
+
callback
+
Функция, вызываемая при возникновении изменений в объекте, принимает следующий аргумент: +
+
changes
+
Массив объектов, представляющих одно изменение. Объекты с изменениями содержат следующие свойства: +
    +
  • name: имя изменённого свойства.
  • +
  • object: изменённый объект после изменения.
  • +
  • type: строка, указывающая тип произошедшего изменения. Может принимать одно из значений: "add", "update" или "delete".
  • +
  • oldValue: только для типов "update" и "delete". Значение до изменения.
  • +
+
+
+
+
+ +

Описание

+ +

Функция callback вызывается каждый раз при возникновении изменений в объекте obj с массивом всех изменений в порядке их возникновения.

+ +

Примеры

+ +

Пример: журналирование всех трёх типов изменений

+ +
var obj = {
+  foo: 0,
+  bar: 1
+};
+
+Object.observe(obj, function(changes) {
+  console.log(changes);
+});
+
+obj.baz = 2;
+// [{name: 'baz', object: <obj>, type: 'add'}]
+
+obj.foo = 'hello';
+// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}]
+
+delete obj.baz;
+// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}]
+
+ +

Пример: привязка данных

+ +
// Пользовательская модель
+var user = {
+  id: 0,
+  name: 'Брендан Айк',
+  title: 'М-р.'
+};
+
+// Создаёт приветствие для пользователя
+function updateGreeting() {
+  user.greeting = 'Здравствуйте, ' + user.title + ' ' + user.name + '!';
+}
+updateGreeting();
+
+Object.observe(user, function(changes) {
+  changes.forEach(function(change) {
+    // Любое изменение имени или обращения обновит привествие
+    if (change.name === 'name' || change.name === 'title') {
+      updateGreeting();
+    }
+  });
+});
+
+ +

 

+ +

Custom change type

+ +
// A point on a 2D plane
+var point = {x: 0, y: 0, distance: 0};
+
+function setPosition(pt, x, y) {
+  // Performing a custom change
+  Object.getNotifier(pt).performChange('reposition', function() {
+    var oldDistance = pt.distance;
+    pt.x = x;
+    pt.y = y;
+    pt.distance = Math.sqrt(x * x + y * y);
+    return {oldDistance: oldDistance};
+  });
+}
+
+Object.observe(point, function(changes) {
+  console.log('Distance change: ' + (point.distance - changes[0].oldDistance));
+}, ['reposition']);
+
+setPosition(point, 3, 4);
+// Distance change: 5
+ +

 

+ +

Спецификации

+ +

Черновое предложение к обсуждению для ECMAScript 7.

+ +

Совместимость с браузерами

+ +
 
+ + + +

{{Compat("javascript.builtins.Object.observe")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/parent/index.html b/files/ru/web/javascript/reference/global_objects/object/parent/index.html new file mode 100644 index 0000000000..d9e5c1ddd9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/parent/index.html @@ -0,0 +1,75 @@ +--- +title: Object.prototype.__parent__ +slug: Web/JavaScript/Reference/Global_Objects/Object/parent +tags: + - JavaScript + - Object + - Obsolete + - Property + - Prototype +translation_of: Archive/Web/JavaScript/Object.parent +--- +
+ {{JSRef("Global_Objects", "Object")}} {{obsolete_header("2")}}
+

Сводка

+

Свойство __parent__ использовалось для указания контекста объекта, но было удалено.

+

Синтаксис

+
obj.__parent__
+

Описание

+

Для объектов верхнего уровня, это, например, окно.

+

Спецификации

+

Не является частью какой-либо спецификации.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html b/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html new file mode 100644 index 0000000000..6488f99506 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html @@ -0,0 +1,120 @@ +--- +title: Object.preventExtensions() +slug: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Метод Object.preventExtensions() предотвращает добавление новых свойств к объекту (то есть, предотвращает расширение этого объекта в будущем).

+ +

{{EmbedInteractiveExample("pages/js/object-preventextensions.html")}}

+ +

Синтаксис

+ +
Object.preventExtensions(obj)
+ +

Параметры

+ +
+
obj
+
Объект, который нужно сделать нерасширяемым.
+
+ +

Возвращаемое значение

+ +

Объект, который делается нерасширяемым.

+ +

Описание

+ +

Объект называется расширяемым, если к нему могут быть добавлены новые свойства. Object.preventExtensions() помечает объект как нерасширяемый, так что он никогда не будет иметь других свойств, кроме тех, что были у него на момент пометки его нерасширяемым. Обратите внимание, что, в общем случае, свойства нерасширяемого объекта всё ещё могут быть удалены. Попытка добавить новые свойства к нерасширяемому объекту потерпит неудачу, либо молча, либо с выбрасыванием исключения {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Functions_and_function_scope/Strict_mode", "строгом режиме", "", 1)}}).

+ +

Метод Object.preventExtensions() предотвращает добавление только собственных свойств. Свойства всё ещё могут быть добавлены в прототип объекта. Однако, вызов Object.preventExtensions() на объекте также предотвращает расширение его свойства {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}}.

+ +

Если превратить расширяемый объект в нерасширяемый возможно, в ECMAScript 5 нет никакого способа сделать обратную операцию.

+ +

Примеры

+ +
// Object.preventExtensions возвращает объект, который нужно сделать нерасширяемым.
+var obj = {};
+var obj2 = Object.preventExtensions(obj);
+assert(obj === obj2);
+
+// Объекты по умолчанию являются расширяемыми.
+var empty = {};
+assert(Object.isExtensible(empty) === true);
+
+// ...но это может быть изменено.
+Object.preventExtensions(empty);
+assert(Object.isExtensible(empty) === false);
+
+// Object.defineProperty выбрасывает исключение при добавлении нового свойства в нерасширяемый объект.
+var nonExtensible = { removable: true };
+Object.preventExtensions(nonExtensible);
+Object.defineProperty(nonExtensible, 'new', { value: 8675309 }); // выбросит TypeError
+
+// В строгом режиме, попытки добавить новые свойства к нерасширяемому объекту, будут выбрасывать исключение TypeError.
+function fail() {
+  'use strict';
+  nonExtensible.newProperty = 'ОШИБКА'; // выбросит TypeError
+}
+fail();
+
+// РАСШИРЕНИЕ (работает только в движках, поддерживающих свойство __proto__
+// (которое является устаревшим. Используйте вместо него метод Object.getPrototypeOf)):
+// нерасширяемые объекты неизменны.
+var fixed = Object.preventExtensions({});
+fixed.__proto__ = { oh: 'hai' }; // выбросит TypeError
+
+ +

Примечания

+ +

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться как простой нерасширяемый объект и метод его просто вернёт.

+ +
> Object.preventExtensions(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.preventExtensions(1)
+1                             // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.10', 'Object.preventExtensions')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.preventextensions', 'Object.preventExtensions')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.preventExtensions")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html new file mode 100644 index 0000000000..018edd3ca3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html @@ -0,0 +1,173 @@ +--- +title: Object.prototype.propertyIsEnumerable() +slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+

Метод propertyIsEnumerable() возвращает логическое значение, указывающее, является ли указанное свойство перечисляемым.

+ +

Синтаксис

+
obj.propertyIsEnumerable(prop)
+ +

Параметры

+
+
prop
+
Имя проверяемого свойства.
+
+ +

Описание

+

Каждый объект имеет метод propertyIsEnumerable. Этот метод может определять, является ли указанное свойство в объекте перечисляемым в цикле {{jsxref("Statements/for...in", "for...in")}}, за исключением свойств, унаследованных из цепочки прототипов. Если объект не имеет указанного свойства, метод вернёт false.

+ +

Примеры

+ +

Пример: базовое использование propertyIsEnumerable

+

Следующий пример показывает использование метода propertyIsEnumerable на объектах и массивах:

+
var o = {};
+var a = [];
+o.prop = 'перечисляемое';
+a[0] = 'перечисляемое';
+
+o.propertyIsEnumerable('prop');   // вернёт true
+a.propertyIsEnumerable(0);        // вернёт true
+
+ +

Пример: определённые пользователем и встроенные объекты

+

Следующий пример демонстрирует перечисляемость свойств, определённых пользователем и встроенных свойств:

+
var a = ['перечисляемое'];
+
+a.propertyIsEnumerable(0);          // вернёт true
+a.propertyIsEnumerable('length');   // вернёт false
+
+Math.propertyIsEnumerable('random');   // вернёт false
+this.propertyIsEnumerable('Math');     // вернёт false
+
+ +

Пример: собственные и унаследованные свойства

+
var a = [];
+a.propertyIsEnumerable('constructor');         // вернёт false
+
+function firstConstructor() {
+  this.property = 'не перечисляемое';
+}
+
+firstConstructor.prototype.firstMethod = function() {};
+
+function secondConstructor() {
+  this.method = function method() { return 'перечисляемый'; };
+}
+
+secondConstructor.prototype = new firstConstructor;
+secondConstructor.prototype.constructor = secondConstructor;
+
+var o = new secondConstructor();
+o.arbitraryProperty = 'перечисляемое';
+
+o.propertyIsEnumerable('arbitraryProperty');   // вернёт true
+o.propertyIsEnumerable('method');              // вернёт true
+o.propertyIsEnumerable('property');            // вернёт false
+
+o.property = 'перечисляемое';
+
+o.propertyIsEnumerable('property');            // вернёт true
+
+// Эти вызовы вернут false, поскольку все свойства находятся в прототипе,
+// который метод propertyIsEnumerable не просматривает (даже несмотря на то,
+// что последние два свойства перечисляются через цикл for...in)
+o.propertyIsEnumerable('prototype');   // вернёт false (в JS 1.8.1/FF3.6)
+o.propertyIsEnumerable('constructor'); // вернёт false
+o.propertyIsEnumerable('firstMethod'); // вернёт false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Особый случай с Gecko

+

Начиная с JavaScript 1.8.1 (в Firefox 3.6), метод propertyIsEnumerable('prototype') возвращает false вместо true; это делает результат совместимым с ECMAScript 5.

+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/proto/index.html b/files/ru/web/javascript/reference/global_objects/object/proto/index.html new file mode 100644 index 0000000000..3ee717a370 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/proto/index.html @@ -0,0 +1,151 @@ +--- +title: Object.prototype.__proto__ +slug: Web/JavaScript/Reference/Global_Objects/Object/proto +tags: + - JavaScript + - Object + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto +--- +
{{JSRef("Global_Objects", "Object")}}
+ +
+

Предупреждение: Изменение прототипа [[Prototype]] объекта является, по самой природе оптимизации доступа к свойствам в современных движках JavaScript, очень медленной операцией, это справедливо для любого браузера и движка JavaScript. Изменение прототипов очень тонко и обширно влияет на производительность, причём это влияние не ограничивается просто временем для операции присваивания obj.__proto__ = ..., оно может распространяться на любой код, который имеет доступ к любому объекту, чей прототип [[Prototype]] был изменён. Если вы заботитесь о производительности, вы никогда не должны изменять прототип [[Prototype]] объекта. Вместо этого создайте объект с нужным прототипом [[Prototype]], с помощью метода {{jsxref("Object.create()")}}.

+
+ +
+

Предупреждение: хотя на сегодняшний момент большинство браузеров поддерживают свойство Object.prototype.__proto__, его поведение только недавно было стандартизировано в новой спецификации ECMAScript 6. Если вам требуется поддержка браузеров до этой спецификации, рекомендуется использовать вместо него метод {{jsxref("Object.getPrototypeOf()")}}.

+
+ +

Сводка

+ +

Свойство __proto__ объекта {{jsxref("Object.prototype")}} является свойством доступа (комбинацией геттера и сеттера), которое расширяет внутренний прототип [[Prototype]] объекта (являющийся объектом или {{jsxref("Global_Objects/null", "null")}}), через который осуществлялся доступ.

+ +

Использование свойства __proto__ вызывает споры и многих оно разочаровало. Ранее оно никогда не включалось в спецификацию EcmaScript, но современные браузеры всё равно решили его реализовать. Сегодня свойство __proto__ стандартизировано в спецификации ECMAScript 6 и будет поддерживаться в будущем. Тем не менее, изменение прототипа [[Prototype]] объекта всё ещё остаётся медленной операцией, которую следует избегать, если вы беспокоитесь о производительности.

+ +

Свойство __proto__ также может использоваться при определении литерала объекта, устанавливая прототип [[Prototype]] объекта при его создании. Этот способ может рассматриваться как альтернатива методу {{jsxref("Object.create()")}}. Смотрите также литеральный синтаскис инициализации объекта.

+ +

Синтаксис

+ +
var shape = {}, circle = new Circle();
+
+// Установка прототипа объекта
+shape.__proto__ = circle;
+// Получение прототипа объекта
+console.log(shape.__proto__ === circle); // true
+
+ +

Обратите внимание: название свойства состоит из двух подчёркиваний, следующих за ними пяти символов «proto» и следующих за ними ещё двух подчёркиваний.

+ +

Описание

+ +

Геттер свойства __proto__ расширяет значение внутреннего прототипа [[Prototype]] объекта. Для объектов, созданных с использованием литеральной формы создания объекта, это значение равно {{jsxref("Object.prototype")}}. Для функций это значение равно {{jsxref("Function.prototype")}}. Для объектов, созданных с использованием формы new fun, где fun является одной из встроенных функций-конструкторов, предоставляемых JavaScript ({{jsxref("Global_Objects/Array", "Array")}}, {{jsxref("Global_Objects/Boolean", "Boolean")}}, {{jsxref("Global_Objects/Date", "Date")}}, {{jsxref("Global_Objects/Number", "Number")}}, {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/String", "String")}} и так далее — включая новые конструкторы, добавленные в процессе развития JavaScript), это значение равно fun.prototype. Для объектов, созданных с использованием формы new fun, где fun является функцией, определённой в скрипте, это значение равно значению fun.prototype во время вычисления new fun. Именно поэтому при присваивании fun.prototype нового значения, ранее созданные экземпляры fun продолжат использовать предыдущее значение в качестве своего прототипа [[Prototype]], а последующие вызовы new fun будут использовать вновь присвоенное значение в качестве своего прототипа [[Prototype]].

+ +

Геттер __proto__ позволяет прототипу [[Prototype]] объекта быть изменяемым. Объект должен быть расширяемым в соответствии с {{jsxref("Object.isExtensible()")}}: если это не так, выкидывается исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Предоставляемое значение должно быть объектом или {{jsxref("Global_Objects/null", "null")}}. Предоставление любого другого значения ничего не даст.

+ +

Для понимания того, как прототипы используются для наследования, смотрите статью руководства «Наследование и цепочки прототипов».

+ +

Свойство __proto__ является простым свойством доступа на объекте {{jsxref("Object.prototype")}} — свойством, состоящим из геттера и сеттера. Свойство __proto__ будет найдено, если, в конечном итоге, его поиск пройдёт через {{jsxref("Object.prototype")}}, но при доступе к нему не через {{jsxref("Object.prototype")}}, оно найдено не будет. Если перед просмотром {{jsxref("Object.prototype")}} буден найдено какое-нибудь другое свойство __proto__, оно скроет искомое свойство {{jsxref("Object.prototype")}}.

+ +
var noProto = Object.create(null);
+
+console.log(typeof noProto.__proto__); // undefined
+console.log(Object.getPrototypeOf(noProto)); // null
+
+noProto.__proto__ = 17;
+
+console.log(noProto.__proto__); // 17
+console.log(Object.getPrototypeOf(noProto)); // null
+
+var protoHidden = {};
+Object.defineProperty(protoHidden, '__proto__',
+                      { value: 42, writable: true, configurable: true, enumerable: true });
+
+console.log(protoHidden.__proto__); // 42
+console.log(Object.getPrototypeOf(protoHidden) === Object.prototype); // true
+
+ +

Примеры

+ +

В следующем примере создаётся новый экземпляр Employee, а затем проверяется, что его свойство __proto__ является тем же самым объектом, что и его конструктор prototype.

+ +
// Декларируем функцию, используемую как конструктор
+function Employee() {
+  /* инициализируем экземпляр */
+}
+
+// Создаём новый экземпляр Employee
+var fred = new Employee();
+
+// Проверка на эквивалентность
+fred.__proto__ === Employee.prototype; // true
+
+ +

В этот момент fred унаследован от Employee, однако присваивание другого объекта в fred.__proto__ может изменить это:

+ +
function Cow() {
+  /* инициализируем экземпляр */
+}
+
+// Присваиваем __proto__ новый объект
+fred.__proto__ = Cow.prototype;
+
+ +

Теперь fred наследуется непосредственно от Cow.prototype, а не от Employee.prototype, и теряет свойства, изначально унаследованные от Employee.prototype.

+ +

Однако, это применяется только к {{jsxref("Object.isExtensible()", "расширяемым", "", 1)}} объектам, у нерасширяемых объектов свойство __proto__ не может быть изменено:

+ +
var obj = {};
+Object.preventExtensions(obj);
+
+obj.__proto__ = {}; // выкинет TypeError
+
+ +

Обратите внимание, что свойство __proto__ может быть переопределено даже у объекта Object.prototype, если новая цепочка заканчивается {{jsxref("Global_Objects/null", "null")}}:

+ +
var b = {};
+
+Object.prototype.__proto__ =
+  Object.create(null, // [[Prototype]]
+                { hi: { value: function() { alert('hi'); } } });
+
+b.hi();
+
+ +

Если свойство __proto__ объекта {{jsxref("Object.prototype")}} не установлено в {{jsxref("Global_Objects/null", "null")}}, или в другой объект, чья цепочка прототипов, в конечном итоге, явно не заканчивается значением {{jsxref("Global_Objects/null", "null")}}, будет выкинуто исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} «циклическое значение __proto__», поскольку цепочка должна заканчиваться {{jsxref("Global_Objects/null", "null")}} (как это и происходит на {{jsxref("Object.prototype")}} при нормальных обстоятельствах).

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}{{Spec2('ES6')}}Включён в (нормативное) приложение для дополнительных возможностей ECMAScript для веб-браузеров (обратите внимание, что спецификация закрепляет то, что уже реализовано).
+ +

Совместимость с браузерами

+ +
+

Примечание: спецификация ES6 требует поддержку свойства __proto__ только в браузерах и не требует его поддержку в других окружениях (хотя оно и рекомендуется в качестве обязательного). Если ваш код должен работать в не-браузерных окружениях, вместо свойства рекомендуется использовать методы {{jsxref("Object.getPrototypeOf()")}} и {{jsxref("Object.setPrototypeOf()")}}.

+
+ +
{{Compat("javascript.builtins.Object.proto")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/prototype/index.html b/files/ru/web/javascript/reference/global_objects/object/prototype/index.html new file mode 100644 index 0000000000..2a93da56b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/prototype/index.html @@ -0,0 +1,204 @@ +--- +title: Object.prototype +slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +tags: + - JavaScript + - Object + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Свойство Object.prototype представляет объект прототипа {{jsxref("Global_Objects/Object", "Object")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Все объекты в JavaScript являются потомками {{jsxref("Global_Objects/Object", "Object")}}; все объекты наследуют методы и свойства из прототипа объекта Object.prototype, хотя они и могут быть переопределены (за исключением объекта Object с прототипом null, то есть, созданным вызовом Object.create(null)). Например, прототипы других конструкторов переопределяют свойство constructor и предоставляют свои собственные методы {{jsxref("Object.prototype.toString()", "toString()")}}. Изменения в объекте прототипа {{jsxref("Global_Objects/Object", "Object")}} распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.

+ +

Свойства

+ +
+
{{jsxref("Object.prototype.constructor")}}
+
Определяет функцию, создающую прототип объекта.
+
{{jsxref("Object.proto", "Object.prototype.__proto__")}} {{non-standard_inline}}
+
Указывает на объект, который использовался в качестве прототипа при инстанцировании объекта.
+
{{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} {{non-standard_inline}}
+
Позволяет определить функцию, выполняющуюся при вызове в качестве метода неопределённого члена объекта.
+
{{jsxref("Object.count", "Object.prototype.__count__")}} {{obsolete_inline}}
+
Использовалось для возврата количества перечисляемых свойств, определённых напрямую на пользовательском объекте, но было удалено.
+
{{jsxref("Object.parent", "Object.prototype.__parent__")}} {{obsolete_inline}}
+
Использовалось для указания контекста объекта, но было удалено.
+
+ +

Методы

+ +
+
{{jsxref("Object.defineGetter", "Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Ассоциирует функцию со свойством, которое, при доступе к нему, выполняет эту функцию и возвращает её возвращаемое значение.
+
{{jsxref("Object.defineSetter", "Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Ассоциирует функцию со свойством, которое, при его установке, выполняет эту функцию, изменяющую свойство.
+
{{jsxref("Object.lookupGetter", "Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineGetter", "__defineGetter__")}}.
+
{{jsxref("Object.lookupSetter", "Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineSetter", "__defineSetter__")}}.
+
{{jsxref("Object.prototype.hasOwnProperty()")}}
+
Возвращает логическое значение, указывающее, содержит ли указанное свойство непосредственно объект, или он унаследовал его по цепочке прототипов.
+
{{jsxref("Object.prototype.isPrototypeOf()")}}
+
Возвращает логическое значение, указывающее, состоит ли указанный объект в цепочке прототипов объекта, на котором был вызван данный метод.
+
{{jsxref("Object.prototype.propertyIsEnumerable()")}}
+
Возвращает логическое значение, указывающее, установлен ли внутренний атрибут ECMAScript DontEnum.
+
{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает строку, содержащую исходный код объекта в литеральной форме, представляющего объект, на котором был вызван данный метод; вы можете использовать это значение для создания нового объекта.
+
{{jsxref("Object.prototype.toLocaleString()")}}
+
Вызывает {{jsxref("Object.toString", "toString()")}}.
+
{{jsxref("Object.prototype.toString()")}}
+
Возвращает строковое представление объекта.
+
{{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}
+
Удаляет точку наблюдения (watchpoint) со свойства объекта.
+
{{jsxref("Object.prototype.valueOf()")}}
+
Возвращает значение примитива указанного объекта.
+
{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}
+
Добавляет точку наблюдения (watchpoint) к свойству объекта.
+
{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}
+
Использовался для вычисления строки с JavaScript-кодом в контексте указанного объекта, но был удалён.
+
+ +

Примеры

+ +

Поскольку Javascript, строго говоря, не имеет объекты подклассов, прототип является полезным обходным путём создания объекта «базового класса» из определённых функций, которые выступают в роли объектов. Например:

+ +
var Person = function(name) {
+    this.name = name;
+    this.canTalk = true;
+    this.greet = function() {
+        if (this.canTalk) {
+            console.log('Привет, я ' + this.name);
+        }
+    };
+};
+
+var Employee = function(name, title) {
+    this.name = name;
+    this.title = title;
+    this.greet = function() {
+        if (this.canTalk) {
+            console.log('Привет, я ' + this.name + ', ' + this.title);
+        }
+    };
+};
+Employee.prototype = new Person();
+
+var Customer = function(name) {
+    this.name = name;
+};
+Customer.prototype = new Person();
+
+var Mime = function(name) {
+    this.name = name;
+    this.canTalk = false;
+};
+Mime.prototype = new Person();
+
+var bob = new Employee('Боб', 'Строитель');
+var joe = new Customer('Джо');
+var rg = new Employee('Ред Грин', 'Разнорабочий');
+var mike = new Customer('Майк');
+var mime = new Mime('Мим');
+bob.greet();
+joe.greet();
+rg.greet();
+mike.greet();
+mime.greet();
+
+ +

Вывод будет следующим:

+ +
Привет, я Боб, Строитель
+Привет, я Джо
+Привет, я Ред Грин, Разнорабочий
+Привет, я Майк
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/object/seal/index.html b/files/ru/web/javascript/reference/global_objects/object/seal/index.html new file mode 100644 index 0000000000..6514429ca6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/seal/index.html @@ -0,0 +1,119 @@ +--- +title: Object.seal() +slug: Web/JavaScript/Reference/Global_Objects/Object/seal +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Метод Object.seal() запечатывает объект, предотвращая добавление новых свойств к объекту и делая все существующие свойства не настраиваемыми. Значения представленных свойств всё ещё могут изменяться, поскольку они остаются записываемыми.

+ +

Синтаксис

+ +
Object.seal(obj)
+ +

Параметры

+ +
+
obj
+
Запечатываемый объект.
+
+ +

Описание

+ +

По умолчанию, объекты являются {{jsxref("Object.isExtensible()", "расширяемыми", "", 1)}} (к ним могут добавляться новые свойства). Запечатывание объекта предотвращает добавление к нему новых свойств и делает все существующие свойства не настраиваемыми. Оно делает все свойства объекта фиксированными и неизменными. Пометка всех свойств объекта как не настраиваемых также предотвращает их преобразование из свойств данных в свойства доступа и наоборот, но не предотвращает изменение значения свойств данных. Попытки удаления или добавления свойств к запечатанному объекту, либо преобразования свойств данных в свойства доступа и наоборот, будут терпеть неудачу, либо молча, либо с выбрасыванием исключения {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Strict_mode", "строгом режиме", "", 1)}}).

+ +

Цепочка прототипов не затрагивается. Однако, свойство {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} также запечатыватся.

+ +

Примеры

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Новые свойства могу быть добавлены, существующие свойства могут быть изменены или удалены.
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+var o = Object.seal(obj);
+
+assert(o === obj);
+assert(Object.isSealed(obj) === true);
+
+// Изменение значений свойств на запечатанном объекте всё ещё работает.
+obj.foo = 'quux';
+
+// Но вы не можете преобразовать свойства данных в свойства доступа и наоборот.
+Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // выбросит TypeError
+
+// Теперь любые изменения, кроме изменения значений свойств, не будут работать.
+obj.quaxxor = 'дружелюбная утка'; // молча не добавит свойство
+delete obj.foo; // молча не удалит свойство
+
+// ...а в строгом режиме такие попытки будут выбрасывать исключения TypeError.
+function fail() {
+  'use strict';
+  delete obj.foo; // выбросит TypeError
+  obj.sparky = 'arf'; // выбросит TypeError
+}
+fail();
+
+// Попытка добавить что-то через Object.defineProperty также выбросит исключение.
+Object.defineProperty(obj, 'ohai', { value: 17 }); // выбросит TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // изменяем значение существующего свойства
+
+ +

Примечания

+ +

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой запечатанный объект и метод его просто вернёт.

+ +
> Object.seal(1)
+TypeError: 1 is not an object // код ES5
+
+> Object.seal(1)
+1                             // код ES6
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.seal")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html new file mode 100644 index 0000000000..2baf613db5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html @@ -0,0 +1,256 @@ +--- +title: Object.setPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +
+

Предупреждение: Изменение прототипа [[Prototype]] объекта является, по самой природе оптимизации доступа к свойствам в современных движках JavaScript, очень медленной операцией, это справедливо для любого браузера и движка JavaScript. Изменение прототипов очень тонко и обширно влияет на производительность, причём это влияние не ограничивается просто временем, проведённым внутри метода Object.setPrototypeOf(), оно может распространяться на любой код, который имеет доступ к любому объекту, чей прототип [[Prototype]] был изменён. Если вы заботитесь о производительности, вы никогда не должны изменять прототип [[Prototype]] объекта. Вместо этого создайте объект с нужным прототипом [[Prototype]], с помощью метода {{jsxref("Object.create()")}}.

+
+ +

Сводка

+ +

Метод Object.setPrototypeOf() устанавливает прототип (то есть, внутреннее свойство [[Prototype]]) указанного объекта в другой объект или {{jsxref("null")}}.

+ +

Синтаксис

+ +
Object.setPrototypeOf(obj, prototype);
+ +

Параметры

+ +
+
obj
+
Объект, которому устанавливается прототип.
+
prototype
+
Новый прототип объекта (объект или {{jsxref("null")}}).
+
+ +

Описание

+ +

Выкидывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если объект, чей прототип [[Prototype]] является не расширяемым, согласно методу {{jsxref("Object.isExtensible()")}}. Не делает ничего, если параметр prototype не является объектом или значением {{jsxref("null")}} (то есть, является числом, строкой, логическим значением или {{jsxref("undefined")}}). В противном случае метод устанавливает прототип [[Prototype]] объекта obj в новое значение.

+ +

Примеры

+ +
var dict = Object.setPrototypeOf({}, null);
+
+ +

Полифилл

+ +

Используя старое свойство {{jsxref("Object.proto", "Object.prototype.__proto__")}}, мы можем легко определить Object.setPrototypeOf(), если он ещё не доступен:

+ +
if (!Object.setPrototypeOf) {
+     Object.prototype.setPrototypeOf = function(obj, proto) {
+         if(obj.__proto__) {
+             obj.__proto__ = proto;
+             return obj;
+         } else {
+             // Если нужно будет определить прототип у Object.create(null) объекта
+             var Fn = function() {
+                 for (var key in obj) { //Если в объект уже были определены некоторые свойства
+                     Object.defineProperty(this, key, {
+                         value: obj[key],
+                     });
+                 }
+             };
+             Fn.prototype = proto;
+             return new Fn();
+         }
+     }
+}
+ +

Добавление цепочки прототипов

+ +

Сочетание метода Object.getPrototypeOf() и свойства {{jsxref("Object.proto", "Object.prototype.__proto__")}} позволяет добавить целую цепочку прототипов к новому прототипу объекта:

+ +
/**
+*** Object.appendChain(@object, @prototype)
+*
+* Присоединяет первый неродной прототип цепочки к новому прототипу.
+* Возвращает @object (если он был примитивным значением, оно будет преобразовано в объект).
+*
+*** Object.appendChain(@object [, "@arg_name_1", "@arg_name_2", "@arg_name_3", "..."], "@function_body")
+*** Object.appendChain(@object [, "@arg_name_1, @arg_name_2, @arg_name_3, ..."], "@function_body")
+*
+* Присоединяет первый не родной прототип цепочки к родному объекту Function.prototype, затем присоединяет
+* new Function(["@arg"(s)], "@function_body") к этой цепочке.
+* Возвращает функцию.
+*
+**/
+
+Object.appendChain = function(oChain, oProto) {
+  if (arguments.length < 2) {
+    throw new TypeError('Object.appendChain - Not enough arguments');
+  }
+  if (typeof oProto === 'number' || typeof oProto === 'boolean') {
+    throw new TypeError('second argument to Object.appendChain must be an object or a string');
+  }
+
+  var oNewProto = oProto,
+      oReturn = o2nd = oLast = oChain instanceof this ? oChain : new oChain.constructor(oChain);
+
+  for (var o1st = this.getPrototypeOf(o2nd);
+    o1st !== Object.prototype && o1st !== Function.prototype;
+    o1st = this.getPrototypeOf(o2nd)
+  ) {
+    o2nd = o1st;
+  }
+
+  if (oProto.constructor === String) {
+    oNewProto = Function.prototype;
+    oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1));
+    this.setPrototypeOf(oReturn, oLast);
+  }
+
+  this.setPrototypeOf(o2nd, oNewProto);
+  return oReturn;
+}
+
+ +

Использование

+ +

Первый пример: присоединение цепочки к прототипу

+ +
function Mammal() {
+  this.isMammal = 'да';
+}
+
+function MammalSpecies(sMammalSpecies) {
+  this.species = sMammalSpecies;
+}
+
+MammalSpecies.prototype = new Mammal();
+MammalSpecies.prototype.constructor = MammalSpecies;
+
+var oCat = new MammalSpecies('Felis');
+
+alert(oCat.isMammal); // 'да'
+
+function Animal() {
+  this.breathing = 'да';
+}
+
+Object.appendChain(oCat, new Animal());
+
+alert(oCat.breathing); // 'да'
+
+ +

Второй пример: преобразование примитивного значения в экземпляр его конструктора и присоединение его цепочки к прототипу

+ +
function Symbol() {
+  this.isSymbol = 'да';
+}
+
+var nPrime = 17;
+
+alert(typeof nPrime); // 'number'
+
+var oPrime = Object.appendChain(nPrime, new Symbol());
+
+alert(oPrime); // '17'
+alert(oPrime.isSymbol); // 'да'
+alert(typeof oPrime); // 'object'
+
+ +

Третий пример: присоединение цепочки к объекту Function.prototype и новой функции к этой цепочке

+ +
function Person(sName) {
+  this.identity = sName;
+}
+
+var george = Object.appendChain(new Person('Георг'),
+                                'alert("Привет, парни!!");');
+
+alert(george.identity); // 'Георг'
+george(); // 'Привет, парни!!'
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("34")}}
+ Смотрите Замечание 2675
{{CompatGeckoDesktop("31")}}
+ Смотрите {{bug("885788")}}
{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("31")}}
+ Смотрите {{bug("885788")}}
{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html new file mode 100644 index 0000000000..d420368420 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html @@ -0,0 +1,103 @@ +--- +title: Object.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +--- +
+ {{JSRef("Global_Objects", "Object")}}
+

Сводка

+

Метод toLocaleString() возвращает строку, представляющую объект. Этот метод предназначен для переопределения унаследованными объектами в целях поддержки зависимости от локали.

+

Синтаксис

+
obj.toLocaleString();
+

Описание

+

Метод toLocaleString объекта {{jsxref("Global_Objects/Object", "Object")}} возвращает результат вызова метода {{jsxref("Object.toString", "toString()")}}.

+

Эта функция обеспечивает объектам обобщённый метод toLocaleString, хотя и не все объекты могут её использовать. Смотрите ниже список таких объектов.

+

Объекты, переопределяющие toLocaleString

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.2.4.3', 'Object.prototype.toLocaleString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}{{Spec2('ES6')}} 
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/tosource/index.html b/files/ru/web/javascript/reference/global_objects/object/tosource/index.html new file mode 100644 index 0000000000..bf59aac80a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tosource/index.html @@ -0,0 +1,138 @@ +--- +title: Object.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Object/toSource +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}}
+ +

Метод toSource() возвращает строку, представляющую исходный код объекта.

+ +

Синтаксис

+ +
Object.toSource();
+obj.toSource();
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Метод toSource() возвращает следующие значения:

+ + + +

Вы можете вызывать метод toSource() во время отладки для просмотра содержимого объекта.

+ +

Переопределение метода toSource()

+ +

Вы можете безопасно переопределять метод toSource() для объектов. Например:

+ +
function Person(name) {
+  this.name = name;
+}
+
+Person.prototype.toSource = function Person_toSource() {
+  return 'new Person(' + uneval(this.name) + ')';
+};
+
+console.log(new Person('Joe').toSource()); // ---> new Person("Joe")
+
+ +

Встроенные методы toSource()

+ +

Каждый тип ядра JavaScript имеет свой собственный метод toSource(). Вот эти объекты:

+ + + +

Ограничение на циклические объекты

+ +

В том случае, если объекты содержат ссылки на самих себя, например циклический связанный список или дерево, которое можно обходить в обоих направлениях, метод toSource() не создаёт такие ссылки, начиная с Firefox 24. Например:

+ +
var obj1 = {};
+var obj2 = { a: obj1 };
+obj1.b = obj2;
+
+console.log('Циклическая ссылка: ' + (obj1.b.a == obj1));
+
+var objSource = obj1.toSource(); // вернёт "({b:{a:{}}})"
+
+obj1 = eval(objSource);
+
+console.log('Циклическая ссылка: ' + (obj1.b.a == obj1));
+
+ +

Если же вам позарез нужно использовать метод toSource() для циклической структуры, объект должен предоставить переопределённый метод toSource(), либо с помощью ссылки на конструктор, либо предоставив анонимную функцию.

+ +

Примеры

+ +

Пример: использование метода toSource()

+ +

Следующий код определяет тип объекта Dog и создаёт объект theDog типа Dog:

+ +
function Dog(name, breed, color, sex) {
+  this.name = name;
+  this.breed = breed;
+  this.color = color;
+  this.sex = sex;
+}
+
+theDog = new Dog('Болтушка', 'лабрадор', 'шоколадный', 'девочка');
+
+ +

Вызов метода toSource() на объекте theDog отобразит исходный код JavaScript, который определяет объект:

+ +
theDog.toSource();
+// вернёт ({name:"Болтушка", breed:"лабрадор", color:"шоколадный", sex:"девочка"})
+
+ +

Спецификации

+ +

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Object.toSource")}}

+ +

 

+ +
 
+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/tostring/index.html b/files/ru/web/javascript/reference/global_objects/object/tostring/index.html new file mode 100644 index 0000000000..e9a1b0b116 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tostring/index.html @@ -0,0 +1,139 @@ +--- +title: Object.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toString +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString +--- +
{{JSRef}}
+ +

Метод toString() возвращает строку, представляющую объект.

+ +

{{EmbedInteractiveExample("pages/js/object-prototype-tostring.html")}}

+ +

Синтаксис

+ +
obj.toString()
+ +

Возвращаемое значение

+ +

Строка, представляющая объект.

+ +

Описание

+ +

Каждый объект имеет метод toString(), автоматически вызывающийся, когда объект должен быть представлен в виде текстового значения или когда объект участвует в выражении, где ожидается строка. По умолчанию, метод toString() наследуется каждым объектом, произошедшим от объекта {{jsxref("Global_Objects/Object", "Object")}}. Если этот метод не переопределён в пользовательском объекте, toString() возвращает строку вида "[object тип]", где тип — это тип объекта. Это иллюстрирует следующий код:

+ +
var o = new Object();
+o.toString();           // вернёт [object Object]
+
+ +
+

Примечание: начиная с JavaScript 1.8.5, метод toString(), вызванный на {{jsxref("Global_Objects/null", "null")}}, возвращает строку [object Null], а вызванный для {{jsxref("Global_Objects/undefined", "undefined")}}, возвращает строку [object Undefined], как определено в 5-м издании ECMAScript и последующих исправлениях. Смотрите пример {{anch("Using_toString_to_detect_object_type", "использование метода toString() для определения типа объекта")}}.

+
+ +

Примеры

+ +

Пример: переопределение метода toString по умолчанию

+ +

Вы можете создать функцию, которая будет вызываться вместо метода toString() по умолчанию. Метод toString() не принимает аргументов и должен возвращать строку. Создаваемый вами метод toString() может возвращать любую строку, какую вы захотите, но он будет наиболее полезным, если будет возвращать информацию об объекте.

+ +

Следующий код определяет объект Dog и создаёт theDog, объект типа Dog:

+ +
function Dog(name, breed, color, sex) {
+  this.name = name;
+  this.breed = breed;
+  this.color = color;
+  this.sex = sex;
+}
+
+theDog = new Dog('Болтушка', 'лабрадор', 'шоколадный', 'девочка');
+
+ +

Если вы вызовете метод toString() на этом пользовательском объекте, он вернёт значение по умолчанию, унаследованное от {{jsxref("Global_Objects/Object", "Object")}}:

+ +
theDog.toString(); // вернёт [object Object]
+
+ +

Следующий код создаёт и присваивает метод dogToString(), переопределяющий метод toString() по умолчанию. Эта функция генерирует строку, содержащую кличку, породу, цвет и пол объекта, в форме "свойство = значение;".

+ +
Dog.prototype.toString = function dogToString() {
+  var ret = 'Собачка ' + this.name + ' - ' + this.sex + ', ' + this.color + ' ' + this.breed;
+  return ret;
+}
+
+ +

или

+ +
Dog.prototype.toString = function dogToString() {
+  return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
+}
+ +

После объявления этого метода, при любом использовании переменной theDog в строковом контексте, JavaScript будет автоматически вызывать функцию dogToString(), возвращающую следующую строку:

+ +
Собачка Болтушка - девочка, шоколадный лабрадор
+
+ +

Пример: использование метода toString для определения типа объекта

+ +

Метод toString() можно использовать с любым объектом для получения его класса. Для использования метода Object.prototype.toString() с любым объектом, вам необходимо вызвать на нём функции {{jsxref("Function.prototype.call()")}} или {{jsxref("Function.prototype.apply()")}}, передав объект, который вы хотите исследовать, первым параметром thisArg.

+ +
var toString = Object.prototype.toString;
+
+toString.call(new Date);    // [object Date]
+toString.call(new String);  // [object String]
+toString.call(Math);        // [object Math]
+
+// Начиная с JavaScript 1.8.5
+toString.call(undefined);   // [object Undefined]
+toString.call(null);        // [object Null]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ESDraft', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-15.2.4.2', 'Object.prototype.toString')}}{{Spec2('ES5.1')}}Вызов метода на {{jsxref("Global_Objects/null", "null")}} вернёт [object Null], а на {{jsxref("Global_Objects/undefined", "undefined")}} — [object Undefined]
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение. Реализована в JavaScript 1.0.
+ +

Совместимость с браузерами

+ +
+ +
{{Compat("javascript.builtins.Object.toString")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html b/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html new file mode 100644 index 0000000000..bf3ef676f3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html @@ -0,0 +1,97 @@ +--- +title: Object.unobserve() +slug: Web/JavaScript/Reference/Global_Objects/Object/unobserve +translation_of: Archive/Web/JavaScript/Object.unobserve +--- +
{{JSRef}} {{obsolete_header}}
+ +

Метод Object.unobserve() удаляет наблюдатель, который был добавлен с помощью {{jsxref("Object.observe()")}}. Вы можете использовать {{jsxref("Proxy")}} вместо данного метода.

+ +

Синтаксис

+ +
Object.unobserve(obj, callback)
+ +

Параметры

+ +
+
obj
+
Объект, за которым необходимо прекратить наблюдение.
+
callback
+
Ссылка на наблюдатель, который нужно остановить на obj.
+
+ +

Возаращаемое значение

+ +

Указанный объект.

+ +

Описание

+ +

Object.unobserve() вызывается после {{jsxref("Object.observe()")}}, чтобы удалить наблюдатель на объекте.

+ +

В callback нужно передавать ссылку на функцию, которая не является анонимной. Если вызвать Object.unobserve() с анонмной функцией в callback, то ни один наблюдатель не будет удалён.

+ +

Примеры

+ +

Удаление наблюдателя с объекта

+ +
var obj = {
+  foo: 0,
+  bar: 1
+};
+
+var observer = function(changes) {
+  console.log(changes);
+}
+
+Object.observe(obj, observer);
+​
+obj.newProperty = 2;
+// [{name: 'newProperty', object: <obj>, type: 'add'}]
+
+Object.unobserve(obj, observer);
+
+obj.foo = 1;
+// callback не был вызван
+ +

Вызов с анонимной функцией

+ +
var person = {
+  name: 'Ahmed',
+  age: 25
+};
+
+Object.observe(person, function(changes) {
+  console.log(changes);
+});
+
+person.age = 40;
+// [{name: 'age', object: <obj>, oldValue: 25, type: 'update'}]
+
+Object.unobserve(person, function(changes) {
+  console.log(changes);
+});
+
+person.age = 63;
+// [{name: 'age', object: <obj>, oldValue: 40, type: 'update'}]
+// callback был вызван
+
+ +

Спецификации

+ +

Strawman proposal specification.

+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Object.unobserve")}}

+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html b/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html new file mode 100644 index 0000000000..e862406f3d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html @@ -0,0 +1,93 @@ +--- +title: Object.prototype.unwatch() +slug: Web/JavaScript/Reference/Global_Objects/Object/unwatch +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Archive/Web/JavaScript/Object.unwatch +--- +
+ {{JSRef("Global_Objects", "Object")}}
+
+

Предупреждение: обычно, при возможности, вам следует избегать использования unwatch() и {{jsxref("Object.prototype.watch", "watch()")}}. Эти два метода реализованы только в Gecko, и они, в основном, предназначены только для отладочных целей. Кроме того, использование точек наблюдения серьёзно бъёт по производительности, что особенно заметно при использовании их на глобальных объектах, например window. Обычно вместо них вы можете использовать сеттеры и геттеры или прокси. Для более подробной информации смотрите раздел {{anch("Browser_compatibility", "Совместимость с браузерами")}}.

+
+

Сводка

+

Метод unwatch() удаляет точку наблюдения, установленную методом {{jsxref("Object.prototype.watch", "watch()")}}.

+

Синтаксис

+
obj.unwatch(prop)
+

Параметры

+
+
+ prop
+
+ Имя свойства объекта, чьи изменения вы хотите прекратить отслеживать.
+
+

Описание

+

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

+

По умолчанию, этот метод наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}.

+
+

Примечание: причина, по которой метод unwatch() принимает единственным параметром только имя свойства prop в том, что для метода {{jsxref("Object.watch", "watch()")}} разрешён только один обработчик.

+
+

Примеры

+

Смотрите метод {{jsxref("Object.watch", "watch()")}}.

+

Спецификации

+

Не является частью какой-либо спецификации. Реализована в JavaScript 1.2.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+

Примечание: вызов unwatch() на объекте {{domxref("Document")}}, начиная с Firefox 23, выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} ({{bug(903332)}}). Эта регрессия была поправлена в Firefox 27.

+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/object/valueof/index.html b/files/ru/web/javascript/reference/global_objects/object/valueof/index.html new file mode 100644 index 0000000000..bd1f5b1994 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/valueof/index.html @@ -0,0 +1,141 @@ +--- +title: Object.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+ +

Метод valueOf() возвращает примитивное значение указанного объекта.

+ +

Синтаксис

+ +
object.valueOf()
+ +

Описание

+ +

JavaScript вызывает метод valueOf для преобразования объекта в примитивное значение. Вам редко потребуется вызывать метод valueOf самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.

+ +

По умолчанию, метод valueOf наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}. Каждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения, valueOf возвращает сам объект, который отображается как:

+ +
[object Object]
+ +

Вы можете использовать valueOf в своём коде для преобразования встроенных объектов в примитивное значение. Когда вы создаёте пользовательский объект, вы можете переопределить метод Object.prototype.valueOf(), чтобы вызывать собственный метод вместо метода по умолчанию из {{jsxref("Global_Objects/Object", "Object")}}.

+ +

Переопределение valueOf в пользовательских объектах

+ +

Вы можете создать функцию, вызываемую вместо метода valueOf по умолчанию. Ваша функция не должна принимать аргументов.

+ +

Предположим, у вас есть объект типа myNumberType и вы хотите создать для него метод valueOf. Следующий код присваивает определённую пользователем функцию методу valueOf объекта:

+ +
myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
+ +

Начиная с этого места в вашем коде, в любое время, когда объект типа myNumberType будет использоваться в контексте, где он должен быть представлен примитивным значением, JavaScript будет автоматически вызывать  функцию, определённую в этом коде.

+ +

Метод объекта valueOf обычно вызывается движком JavaScript, но вы можете вызвать его и самостоятельно, как показано ниже:

+ +
myNumber.valueOf()
+ +
+

Примечание: объекты в строковом контексте преобразуются с помощью метода {{jsxref("Object.toString", "toString()")}}, что отличается от объектов {{jsxref("Global_Objects/String", "String")}}, преобразующихся в строковые примитивы методом valueOf. Все объекты имеют преобразование в строку вида "[object type]". Но многие объекты не преобразуются в число, логическое значение или функцию.

+
+ +

Примеры

+ +

Пример: использование valueOf

+ +
var o = new Object();
+myVar = o.valueOf();      // [object Object]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.2.4.4', 'Object.prototype.valueOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/values/index.html b/files/ru/web/javascript/reference/global_objects/object/values/index.html new file mode 100644 index 0000000000..fa1e84895d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/values/index.html @@ -0,0 +1,98 @@ +--- +title: Object.values() +slug: Web/JavaScript/Reference/Global_Objects/Object/values +tags: + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/values +--- +
{{JSRef}}
+ +

Метод  Object.values() возвращает массив значений перечисляемых свойств объекта в том же порядке что и цикл {{jsxref("Statements/for...in", "for...in")}}. Разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов.

+ +

{{EmbedInteractiveExample("pages/js/object-values.html")}}

+ +

Синтаксис

+ +
Object.values(obj)
+ +

Параметры

+ +
+
obj
+
Объект, чьи значения перечисляемых свойств будут возвращены.
+
+ +

Возвращаемое значение

+ +

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

+ +

Описание

+ +

Object.values() возвращает массив, чьи элементы это значения перечисляемых свойств найденых в объекте. Порядок такой же как если пройтись по объекту циклом вручную.

+ +

Примеры

+ +
var obj = { foo: "bar", baz: 42 };
+console.log(Object.values(obj)); // ['bar', 42]
+
+// Массив как объект
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.values(obj)); // ['a', 'b', 'c']
+
+// Массив как объект со случайным порядком ключей
+// Когда мы используем нумерованные ключ, значения возвращаются в порядке возрастания
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.values(an_obj)); // ['b', 'c', 'a']
+
+// getFoo неперечисляемое свойство
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = "bar";
+console.log(Object.values(my_obj)); // ['bar']
+
+// Аргумент, не являющийся объектом, будет приведен к объекту
+console.log(Object.values("foo")); // ['f', 'o', 'o']
+
+ +

Полифилл

+ +

Для добавления совместимости Object.values со старым окружением, которое не поддерживает нативно его, вы можете найти полифилл здесь tc39/proposal-object-values-entries или в es-shims/Object.values репозитарии.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}{{Spec2('ESDraft')}}
{{SpecName('ES8', '#sec-object.values', 'Object.values')}}{{Spec2('ES8')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.Object.values")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/object/watch/index.html b/files/ru/web/javascript/reference/global_objects/object/watch/index.html new file mode 100644 index 0000000000..8f4a3d5b99 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/watch/index.html @@ -0,0 +1,168 @@ +--- +title: Object.prototype.watch() +slug: Web/JavaScript/Reference/Global_Objects/Object/watch +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Archive/Web/JavaScript/Object.watch +--- +
+ {{JSRef("Global_Objects", "Object")}}
+
+

Предупреждение: обычно, при возможности, вам следует избегать использования watch() и {{jsxref("Object.prototype.unwatch", "unwatch()")}}. Эти два метода реализованы только в Gecko, и они, в основном, предназначены только для отладочных целей. Кроме того, использование точек наблюдения серьёзно бъёт по производительности, что особенно заметно при использовании их на глобальных объектах, например window. Обычно вместо них вы можете использовать сеттеры и геттеры или прокси. Для более подробной информации смотрите раздел {{anch("Browser_compatibility", "Совместимость с браузерами")}}. Также, не путайте {{jsxref("Object.prototype.watch", "Object.watch")}} с {{jsxref("Object.prototype.observe", "Object.observe")}}.

+
+

Сводка

+

Метод watch() следит за присваиванием свойству значений и запускает указанную функцию, когда это происходит.

+

Синтаксис

+
obj.watch(prop, handler)
+

Параметры

+
+
+ prop
+
+ Имя свойства объекта, чьи изменения вы хотите отслеживать.
+
+ handler
+
+ Функция, вызывающаяся при изменении значения указанного свойства.
+
+

Описание

+

Следит за присваиваниями свойству prop в этом объекте, вызывая функцию handler(prop, oldval, newval) всякий раз, когда свойство prop устанавливается и сохраняет возвращённое значение в этом свойстве. Точка наблюдения может отфильтровывать (или отменять) присваивание значения, возвращая изменённое новое значение newval (или старое значение oldval).

+

Если вы удалите свойство, для которого была установлена точка наблюдения, эта точка наблюдения не будет отключена. Если вы позже вновь создадите это свойство, точка наблюдения продолжит работать.

+

Для удаления точки наблюдения используйте метод {{jsxref("Object.unwatch", "unwatch()")}}. По умолчанию, метод watch наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}.

+

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

+

В Firefox, функция handler вызывает только при присваивании из скрипта, не из встроенного кода. Например, window.watch('location', myHandler) не вызовет myHandler, если пользователь щёлкнет по ссылке с якорем в текущем документе. Однако, выражение window.location += '#myAnchor' вызовет myHandler.

+
+

Примечание: вызов watch() на объекте для определённого свойства перезапишет любые ранее назначенные на него обработчики.

+
+

Примеры

+

Пример: использование watch и unwatch

+
var o = { p: 1 };
+
+o.watch('p', function (id, oldval, newval) {
+  console.log('o.' + id + ' изменено с ' + oldval + ' на ' + newval);
+  return newval;
+});
+
+o.p = 2;
+o.p = 3;
+delete o.p;
+o.p = 4;
+
+o.unwatch('p');
+o.p = 5;
+
+

Этот скрипт выведет следующее:

+
o.p изменено с 1 на 2
+o.p изменено с 2 на 3
+o.p изменено с undefined на 4
+
+

Пример: использование watch для проверки свойств объекта

+

Вы можете использовать watch для проверки присваивания к любым свойствам объекта. Этот пример гарантирует, что каждый человек имеет допустимое имя и возраст между 0 и 200.

+
Person = function(name, age) {
+  this.watch('age', Person.prototype._isValidAssignment);
+  this.watch('name', Person.prototype._isValidAssignment);
+  this.name = name;
+  this.age = age;
+};
+
+Person.prototype.toString = function() {
+  return this.name + ', ' + this.age;
+};
+
+Person.prototype._isValidAssignment = function(id, oldval, newval) {
+  if (id === 'name' && (!newval || newval.length > 30)) {
+    throw new RangeError('недопустимое имя для ' + this);
+  }
+  if (id === 'age'  && (newval < 0 || newval > 200)) {
+    throw new RangeError('недопустимый возраст для ' + this);
+  }
+  return newval;
+}
+
+will = new Person('Уилл', 29);
+print(will);   // Уилл, 29
+
+try {
+  will.name = '';
+} catch (e) {
+  print(e);
+}
+
+try {
+  will.age = -4;
+} catch (e) {
+  print(e);
+}
+
+

Этот скрипт выведет следующее:

+
Уилл, 29
+RangeError: недопустимое имя для Уилл, 29
+RangeError: недопустимый возраст для Уилл, 29
+
+

Спецификации

+

Не является частью какой-либо спецификации. Реализована в JavaScript 1.2.

+

Совместимость с браузерами

+ +
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+

Примечание: вызов watch() на объекте {{domxref("Document")}}, начиная с Firefox 23, выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} ({{bug(903332)}}). Эта регрессия была поправлена в Firefox 27.

+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/parallelarray/index.html b/files/ru/web/javascript/reference/global_objects/parallelarray/index.html new file mode 100644 index 0000000000..ca96e4c0fa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parallelarray/index.html @@ -0,0 +1,52 @@ +--- +title: ParallelArray +slug: Web/JavaScript/Reference/Global_Objects/ParallelArray +translation_of: Archive/Web/ParallelArray +--- +

{{jsSidebar("Objects")}} {{ obsolete_header() }}

+
+

Note: This object was implemented in Firefox 17 and has been removed from {{ Gecko(29) }} in favor of ParallelJS (PJS) currently available in the Nightly channel ({{ bug(944074) }}).

+
+

Сводка

+

Целью ParallelArray является распараллеливание данных в веб-приложениях. Все функции, которые доступны на простом массиве могут исполняться параллельно на ParallelArray, при необходимости можно вернуться к последовательному исполнению. Чтобы убедиться что ваш код исполняется параллельно, it is suggested that the functions should be limited to the parallelizable subset of JS that Firefox supports.

+

Синтаксис

+
new ParallelArray()
+new ParallelArray([element0, element1, ...])
+new ParallelArray(arrayLength, elementalFunction)
+

Экземпляры ParallelArray

+

Свойства

+
+
+ length
+
+ Возвращает количество элементов в ParallelArray.
+
+

Методы

+
+
+ map
+
+ reduce
+
+ scan
+
+ scatter
+
+ filter
+
+ flatten
+
+ partition
+
+ get
+
+

Примеры

+

Пример: Использование метода map параллельно

+
var p = new ParallelArray([0, 1, 2, 3, 4]);
+var m = p.map(function (v) {
+  return v + 1;
+});
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/parsefloat/index.html b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html new file mode 100644 index 0000000000..03cb0bc158 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html @@ -0,0 +1,136 @@ +--- +title: parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/parseFloat +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Функция parseFloat() принимает строку в качестве аргумента и возвращает десятичное число (число с плавающей точкой)

+ +

 

+ +

{{EmbedInteractiveExample("pages/js/globalprops-parsefloat.html")}}

+ + + +

 

+ +

Синтаксис

+ +
parseFloat(строка)
+ +

Параметры

+ +
+
строка
+
Текстовая строка, из которой вам надо выделить десятичное число.
+
+ +

Возвращаемое значение

+ +

Число с плавающей точкой, полученное из строки. Если первый символ не может быть сконвертирован в число, то возвращается {{jsxref("NaN")}}.

+ +

Описание

+ +

parseFloat - это высокоуровневая функция, не привязанная ни к одному объекту.

+ +

parseFloat разбирает текстовую строку, ищет и возвращает из нее десятичное число. Если функция встретит знак, отличный от (+ или -), цифр(0-9), разделительной точки, или показателя степени, она вернет значение, предшествующее этому знаку, игнорируя все последующие символы . Допускаются позади и впереди идущие пробелы.

+ +

Если первый символ нельзя привести к числовому виду, parseFloat вернет NaN.

+ +

С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернет ли parseFloat значение {{jsxref("NaN")}} в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

+ +

parseFloat также может вернуть значение Infinity ("бесконечность"). Вы можете использовать функцию {{jsxref("Global_Objects/isFinite", "isFinite")}}, чтобы определить, является ли результат конечным числом  (not Infinity, -Infinity, или NaN).

+ +

Примеры

+ +

parseFloat возвращает число

+ +

Все примеры ниже вернут 3.14

+ +
parseFloat(3.14);
+parseFloat('3.14');
+parseFloat('314e-2');
+parseFloat('0.0314E+2');
+parseFloat('3.14какие-нибудь не цифровые знаки');
+
+var foo = Object.create(null);
+foo.toString = function () { return "3.14"; };
+parseFloat(foo);
+
+var foo = Object.create(null);
+foo.valueOf = function () { return "3.14"; };
+parseFloat(foo);​​​​​
+ +

 

+ +

parseFloat возвращает NaN

+ +

Пример ниже вернет NaN

+ +
parseFloat("FF2");
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение
{{SpecName('ES5.1', '#sec-15.1.2.3', 'parseFloat')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-parsefloat-string', 'parseFloat')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-parsefloat-string', 'parseFloat')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.parseFloat")}}

+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/parseint/index.html b/files/ru/web/javascript/reference/global_objects/parseint/index.html new file mode 100644 index 0000000000..eb6c784422 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parseint/index.html @@ -0,0 +1,202 @@ +--- +title: parseInt() +slug: Web/JavaScript/Reference/Global_Objects/parseInt +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/parseInt +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Функция parseInt() принимает строку в качестве аргумента и возвращает целое число в соответствии с указанным основанием системы счисления.

+ +

 

+ +

{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}

+ +

The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.

+ +

 

+ +

Синтаксис

+ +
parseInt(string, radix);
+ +

Параметры

+ +
+
string
+
Значение, которое необходимо проинтерпретировать. Если значение параметра string не принадлежит строковому типу, оно преобразуется в него (с помощью абстрактной операции ToString). Пробелы в начале строки не учитываются.
+
+ +
+
radix
+
Целое число в диапазоне между 2 и 36, представляющее собой основание системы счисления числовой строки string, описанной выше. В основном пользователи используют десятичную систему счисления и указывают 10. Всегда указывайте этот параметр, чтобы исключить ошибки считывания и гарантировать корректность исполнения и предсказуемость результата. Когда основание системы счисления не указано, разные реализации могут возвращать разные результаты.
+
+ +

Возвращаемое значение

+ +

Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращается {{jsxref("NaN")}}. 

+ +

Описание

+ +

Функция parseInt преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значение NaN. Результат (если не NaN) является целым числом и представляет собой первый аргумент (string), рассматривающийся как число в указанной системе счисления (radix). Например, основание 10 указывает на преобразование из десятичного числа, 8 - восьмеричного, 16 - шестнадцатеричного и так далее. Если основание больше 10, то для обозначения цифр больше 9 используются буквы. Например, для шестнадцатеричных чисел (основание 16) используются буквы от A до F.

+ +

Если функция parseInt встречает символ, не являющийся числом в указанной системе счисления, она пропускает этот и все последующие символы (даже, если они подходящие) и возвращает целое число, преобразованное из части строки, предшествовавшей этому символу. parseInt отсекает дробную часть числа. Пробелы в начале и конце строки разрешены.

+ +

Так как некоторые числа включают символ e в своём строковом представлении (например, 6.022e23), то использование parseInt для усечения числовых значений может дать неожиданные результаты, когда используются очень малые или очень большие величины. parseInt не должна использоваться как замена для {{jsxref("Math.floor()")}}.

+ +

Если основание системы счисления имеет значение undefined (неопределено) или равно 0 (или не указано), то JavaScript по умолчанию предполагает следующее:

+ + + +

Если первый символ строки не может быть преобразован в число, parseInt возвращает значение NaN.

+ +

С точки зрения математики, значение NaN не является числом в какой-либо системе счисления. Чтобы определить, вернет ли parseInt значение NaN в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если NaN участвует в арифметических операциях, результатом также будет NaN.

+ +

Для преобразования числа в строку в указанной системе счисления, используйте intValue.toString(radix).

+ +

Примеры

+ +

Пример: Использование parseInt

+ +

Все следующие примеры возвращают 15:

+ +
parseInt(" 0xF", 16);
+parseInt(" F", 16);
+parseInt("17", 8);
+parseInt(021, 8);
+parseInt("015", 10);  //parseInt(015, 10); вернёт 15
+parseInt(15.99, 10);
+parseInt("FXX123", 16);
+parseInt("1111", 2);
+parseInt("15*3", 10);
+parseInt("15e2", 10);
+parseInt("15px", 10);
+parseInt("12", 13);
+
+ +

Все следующие примеры возвращают NaN:

+ +
parseInt("Hello", 8); // Не является числом
+parseInt("546", 2);   // Неверное число в двоичной системе счисления
+
+ +

Все следующие примеры возвращают -15:

+ +
parseInt("-F", 16);
+parseInt("-0F", 16);
+parseInt("-0XF", 16);
+parseInt(-15.1, 10)
+parseInt(" -17", 8);
+parseInt(" -15", 10);
+parseInt("-1111", 2);
+parseInt("-15e1", 10);
+parseInt("-12", 13);
+
+ +

Все следующие примеры возвращают 4:

+ +
parseInt(4.7, 10);
+parseInt(4.7 * 1e22, 10); // Очень большие числа становятся 4
+parseInt(0.00000000000434, 10); // Очень маленькие числа становятся 4
+ +

Следующий пример возвращает 224:

+ +
parseInt("0e0", 16);
+
+ +

Восьмеричная интерпретация без указания системы счисления

+ +

Хотя это не поощряется в спецификацией ECMAScript 3 и запрещено в ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с 0, как восьмеричную. Следующий пример может иметь как восьмеричный, так и десятичный результат. Чтобы избежать непредвиденного результата, всегда указывайте основание системы счисления.

+ +
parseInt("0e0"); // 0
+parseInt("08"); // 0, '8' не является цифрой в восьмеричной системе.
+
+ +

ECMAScript 5 устраняет восьмеричную интерпретацию

+ +

Спецификация ECMAScript 5 функции parseInt больше не разрешает трактовать в восьмеричной системе счисления строки, начинающиеся с 0. ECMAScript 5 провозглашает:

+ +

Функция parseInt производит целочисленное значение в результате интерпретации содержимого строкового аргумента в соответствии с указанным основанием системы счисления. Пробел в начале строки не учитывается. Если основание системы счисления не определено или равно 0, оно считается равным 10, за исключением случаев, когда строка начинается с пар символов 0x или 0X: тогда за основание принимается 16. Если основанием системы счисления указано 16, число также может начинаться с пар символов 0x или 0X.

+ +

В этом ECMAScript 5 расходится со спецификацией ECMAScript 3, в которой восьмеричная интерпретация не поощрялась, но и не была запрещена.

+ +

Поскольку на момент 2013 года описанное выше поведение было применено не во всех реализациях, а поддержка старых браузеров является необходимой, всегда указывайте основание системы счисления.

+ +

Более строгая функция интерпретации

+ +

Иногда необходим более строгий способ интерпретации целочисленных значений. В этом могут помочь регулярные выражения:

+ +
var filterInt = function (value) {
+  if (/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
+    return Number(value);
+  return NaN;
+}
+
+console.log(filterInt('421'));               // 421
+console.log(filterInt('-421'));              // -421
+console.log(filterInt('+421'));              // 421
+console.log(filterInt('Infinity'));          // Infinity
+console.log(filterInt('421e+0'));            // NaN
+console.log(filterInt('421hop'));            // NaN
+console.log(filterInt('hop1.61803398875'));  // NaN
+console.log(filterInt('1.61803398875'));     // NaN
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES1')}}{{Spec2('ES1')}}Изначальное определение.
{{SpecName('ES5.1', '#sec-15.1.2.2', 'parseInt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-parseint-string-radix', 'parseInt')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-parseint-string-radix', 'parseInt')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ + + +

{{Compat("javascript.builtins.parseInt")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/all/index.html b/files/ru/web/javascript/reference/global_objects/promise/all/index.html new file mode 100644 index 0000000000..9d8fba83b6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/all/index.html @@ -0,0 +1,122 @@ +--- +title: Promise.all() +slug: Web/JavaScript/Reference/Global_Objects/Promise/all +tags: + - ECMAScript6 + - JavaScript + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all +--- +
{{JSRef}}
+ +

Общее описание

+ +

Метод Promise.all(iterable) возвращает обещание, которое выполнится тогда, когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонено любое из переданных обещаний.

+ +

Синтаксис

+ +
Promise.all(iterable);
+ +

Параметры

+ +
+
iterable
+
Перечисляемый объект, например, массив ({{jsxref("Array")}}). Смотрите iterable.
+
+ +

Возвращаемое значение

+ +

{{jsxref("Promise")}}, который будет выполнен когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонен, если будет отклонено хоть одно из переданных обещаний.

+ +

Описание

+ +

Promise.all возвращает массив значений от всех обещаний, которые были ему переданы. Возвращаемый массив значений сохраняет порядок оригинального перечисляемого объекта, но не порядок выполнения обещаний. Если какой-либо элемент перечисляемого объекта не является обещанием, то он будет преобразован с помощью метода {{jsxref("Promise.resolve")}}.

+ +

Если одно из переданных обещаний будет отклонено, Promise.all будет немедлено отклонен со значением отклоненного обещания, не учитывая другие обещания, независимо выполнены они или нет. Если в качестве аргумента будет передан пустой массив, то Promise.all будет выполнен немедленно

+ +

Примеры

+ +

Использование Promise.all

+ +

Promise.all ждет выполнения всех обещаний (или первого метода reject()).

+ +
var p1 = Promise.resolve(3);
+var p2 = 1337;
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 100, "foo");
+});
+
+Promise.all([p1, p2, p3]).then(values => {
+  console.log(values);
+});
+
+//Выведет:
+// [3, 1337, "foo"] 
+
+ +

Promise.all поведение немедленного отклонения

+ +

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

+ +
var p1 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 1000, "one");
+});
+var p2 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 2000, "two");
+});
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 3000, "three");
+});
+var p4 = new Promise((resolve, reject) => {
+  setTimeout(resolve, 4000, "four");
+});
+var p5 = new Promise((resolve, reject) => {
+// Это обещание прервет Promise.all
+  reject("reject");
+});
+
+Promise.all([p1, p2, p3, p4, p5]).then(value => {
+  console.log(value);
+}, reason => {
+  console.log(reason)
+});
+
+//Выведет:
+//"reject"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусПояснение
{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-promise.all', 'Promise.all')}}{{Spec2('ES6')}}Первоначальный вариант в стандарте ECMA.
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Promise.all")}}

+ +
 
+ +

Родственные темы

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html new file mode 100644 index 0000000000..4c125fac0c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html @@ -0,0 +1,60 @@ +--- +title: Promise.allSettled() +slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +--- +

{{JSRef}}

+ +

Метод Promise.allSettled() возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.

+ +
{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}}
+ +

Синтаксис

+ +
promise.allSettled(iterable);
+ +

Параметры

+ +
+
iterable
+
Любой итерируемый объект, такой как {{jsxref("Array")}}, в котором каждый элемент является Promise.
+
+ +

Возвращаемое значение

+ +

{{jsxref("Promise")}}, который будет выполнен после завершения каждого промиса, вне зависимости от того выполнился он успешно или был отклонён. В то же время, в возвращаемый обработчик промиса передаётся массив, который содержит результат каждого промиса в исходном наборе промисов.

+ +

Объект каждого результата содержит свойство status. Если status имеет значение fulfilled (выполнено), то объект будет содержать свойство value. Если status имеет значение rejected (отклонено), то объект будет содержать свойство reason. Свойство value (или reason) будет содержать значение с которым был выполнен (или отклонён) промис.

+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
Promise.allSettled() (TC39 Stage 4 Draft){{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Promise.allSettled")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/any/index.html b/files/ru/web/javascript/reference/global_objects/promise/any/index.html new file mode 100644 index 0000000000..4d0a4baa67 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/any/index.html @@ -0,0 +1,81 @@ +--- +title: Promise.any() +slug: Web/JavaScript/Reference/Global_Objects/Promise/any +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any +--- +
{{JSRef}}
+ +

Метод Promise.any() принимает итерируемый объект содержащий объекты "обещаний" {{JSxRef("Promise")}}. Как только одно из "обещаний"(Promise) выполнится успешно(fullfill), метод возвратит единственный объект Promise со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно(если все "обещания" завершатся с ошибкой, т.е. rejected), тогда возвращенный объект promise будет отклонен(rejected) с одним из значений: массив содержащий причины ошибки(отклонения), или {{JSxRef("AggregateError")}} — подкласс {{JSxRef("Error")}}, который объединяет выброшенные ошибки вместе. По-существу, метод Promise.any() является противоположностью для {{JSxRef("Promise.all()")}}.

+ +
+

Warning! The Promise.any() method is experimental and not fully supported by all browsers. It is currently in the TC39 Candidate stage (Stage 3).

+
+ +

Синтаксис

+ +
Promise.any(iterable);
+ +

Параметры

+ +
+
iterable
+
Итерируемый(iterable) объект, например {{JSxRef("Array")}}.
+
+ +

Возвращаемое значение

+ + + +

Описание

+ +

Метод полезен, когда нужно вернуть первое исполненное "обещание". После того как одно из "обещаний" будет исполнено, метод не будет дожидаться исполнения остальных. В отличие от {{JSxRef("Promise.all()")}}, который содержит массив(Array) значений исполненных обещаний, Promise.any() содержит только одно значение (при условии, что хотя бы одно из "обещаний" исполнено успешно). Такой подход может быть выгодным, когда нужно, чтобы выполнилось только одно "обещание", неважно какое. Также, в отличие от {{JSxRef("Promise.race()")}}, который возвращает "обещание", содержащее значение первого завершенного(resolved или rejected), этот метод возвращает "обещание" содержащее значение первого успешно выполненного(resolved) "обещания". Метод будет игнорировать исполнение обещаний с ошибкой(rejection) вплоть до первого исполненного успешно(fullfilment).

+ +

Успешное исполнение(Fullfilment)

+ +

Если одно из "обещаний" исполнится успешно, возвращенное "обещание" асинхронно исполнится успешно со значением выполненного "обещания", независимо от завершения остальных "обещаний".

+ + + +

Исполнение с ошибкой(Rejection)

+ +

Елси все переданные "обещания" будут отклонены(rejected), Promise.any асинхронно будет отклонено в одном из двух вариантов (которые еще не были согласованы): либо

+ + + +

Спецификации

+ + + + + + + + + + +
Specification
ESNext Promise.any Proposal
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Promise.any")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/catch/index.html b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html new file mode 100644 index 0000000000..dee70fbc24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html @@ -0,0 +1,157 @@ +--- +title: Promise.prototype.catch() +slug: Web/JavaScript/Reference/Global_Objects/Promise/catch +tags: + - ECMAScript6 + - JavaScript + - Prototype + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch +--- +
{{JSRef}}
+ +

Метод catch() возвращает Promise(обещание) и работает только в случае отклонения обещания. Ведет себя аналогично вызову {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}}.

+ +

Syntax

+ +
p.catch(onRejected);
+
+p.catch(function(reason) {
+   // отказ
+});
+
+ +

Параметры

+ +
+
onRejected
+
{{jsxref("Function")}} вызывается когда обещание отклонено. У этой функции один аргумент: +
+
reason
+
Причина отказа.
+
+

Promise( Обещание ), возвращенное catch (), отклоняется, если onRejected выдает ошибку(throw) или возвращает Promise, который был отклонен; В противном случае Promise, возвращаемый catch () имеет статус  выполнено  (fulfilled)

+
+
+
+
+ +

Возвращаемое значение

+ +

{{jsxref("Promise")}}.

+ +

Описание

+ +
+
Метод catch может быть полезен для обработки ошибок в вашей структуре обещаний.
+
+ +

Примеры

+ +

Использование метода catch

+ +
var p1 = new Promise(function(resolve, reject) {
+  resolve('Success');
+});
+
+p1.then(function(value) {
+  console.log(value); // "Success!"
+  throw 'oh, no!';
+}).catch(function(e) {
+  // Функция не перевыбросила исключение 'e'
+  // в результате произойдёт resolve(undefined)
+  // для Promise, возвращённого функцией catch
+  console.log(e); // "oh, no!"
+}).then(function(){
+  console.log('after a catch the chain is restored');
+}, function () {
+  // Функция не перевыбросила исключение 'e'
+  // в результате произойдёт resolve(undefined)
+  // для Promise, возвращённого функцией catch
+  console.log('Not fired due to the catch');
+});
+
+// Следующий код ведет себя также, как вышенаписанный
+p1.then(function(value) {
+  console.log(value); // "Success!"
+  return Promise.reject('oh, no!');
+}).catch(function(e) {
+  // Функция не перевыбросила исключение 'e'
+  // в результате произойдёт resolve(undefined)
+  // для Promise, возвращённого функцией catch
+  console.log(e); // "oh, no!"
+}).then(function(){
+  console.log('after a catch the chain is restored');
+}, function () {
+  // Функция не перевыбросила исключение 'e'
+  // в результате произойдёт resolve(undefined)
+  // для Promise, возвращённого функцией catch
+  console.log('Not fired due to the catch');
+});
+
+ +

Ловим выброшеные исключения

+ +
// Выкидываемая ошибка вызовет метод catch
+var p1 = new Promise(function(resolve, reject) {
+  throw 'Uh-oh!';
+});
+
+p1.catch(function(e) {
+  console.log(e); // "Uh-oh!"
+});
+
+// Ошибки выброшеные из асинхронных функций не будут пойманы методом catch
+var p2 = new Promise(function(resolve, reject) {
+  setTimeout(function() {
+    throw 'Uncaught Exception!';
+  }, 1000);
+});
+
+p2.catch(function(e) {
+  console.log(e); // Никогда не вызовется
+});
+
+// Ошибки выброшеные после выполнения обещания будут проигнорированны
+var p3 = new Promise(function(resolve, reject) {
+  resolve();
+  throw 'Silenced Exception!';
+});
+
+p3.catch(function(e) {
+   console.log(e); // Никогда не вызовется
+});
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Promise.catch")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/finally/index.html b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html new file mode 100644 index 0000000000..5b4391ce47 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html @@ -0,0 +1,98 @@ +--- +title: Promise.prototype.finally() +slug: Web/JavaScript/Reference/Global_Objects/Promise/finally +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally +--- +
{{JSRef}}
+ +

Метод finally() возвращает {{jsxref("Promise")}}. Когда Promise (обещание) был выполнен, в не зависимости успешно или с ошибкой, указанная функция будет выполнена. Это дает возможность запустить один раз определенный участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился Promise.

+ +

Это позволяет вам избавиться от дубликации кода в обработчиках {{jsxref("Promise.then", "then()")}} и {{jsxref("Promise.catch", "catch()")}}.

+ +

Синтаксис

+ +
p.finally(onFinally);
+
+p.finally(function() {
+   // завершен (успешно или с ошибкой)
+});
+
+p.finally(() => {
+// завершен (успешно или с ошибкой)
+});
+ +

Параметры

+ +
+
onFinally
+
Функция {{jsxref("Function")}} вызываемая когда Promise (обещание) завершено.
+
+ +

Возвращаемое значение

+ +

Возвращает {{jsxref("Promise")}} для которого в качестве обработчика finally задана функция onFinally.

+ +

Описание

+ +

finally() может быть полезен, если необходимо приоизвести какие-либо вычисления или очистку, как только Promise (обещание) завершено, вне зависимости от результата.

+ +

finally() очень схож с вызовом .then(onFinally, onFinally), однако существует несколько различий:

+ + + +
+

Note: A throw (or returning a rejected promise) in the finally callback will reject the new promise with the rejection reason specified when calling throw().

+
+ +

Примеры

+ +
let isLoading = true;
+
+fetch(myRequest).then(function(response) {
+    var contentType = response.headers.get("content-type");
+    if(contentType && contentType.includes("application/json")) {
+      return response.json();
+    }
+    throw new TypeError("Oops, we haven't got JSON!");
+  })
+  .then(function(json) { /* process your JSON further */ })
+  .catch(function(error) { console.log(error); })
+  .finally(function() { isLoading = false; });
+
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
TC39 proposalStage 4
+ +

Браузерная совместимость

+ + + +

{{Compat("javascript.builtins.Promise.finally")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/index.html b/files/ru/web/javascript/reference/global_objects/promise/index.html new file mode 100644 index 0000000000..c4577ab151 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/index.html @@ -0,0 +1,267 @@ +--- +title: Promise +slug: Web/JavaScript/Reference/Global_Objects/Promise +tags: + - ECMAScript6 + - JavaScript + - Promise + - Обещания +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +
{{JSRef}}
+ +

Сводка

+ +

Объект Promise (промис) используется для отложенных и асинхронных вычислений.

+ +

{{EmbedInteractiveExample("pages/js/promise-constructor.html")}}

+ + + +

Синтаксис

+ +
new Promise(executor);
+new Promise(function(resolve, reject) { ... });
+ +

Параметры

+ +
+
executor
+
Объект функции с двумя аргументами resolve и reject. Функция executor  получает оба аргумента и выполняется сразу, еще до того как конструктор вернет созданный объект. Первый аргумент (resolve) вызывает успешное исполнение промиса, второй (reject) отклоняет его.
+ Обычно функция executor описывает выполнение какой-то асинхронной работы, по завершении которой необходимо вызвать функцию resolve или reject. Обратите внимание, что возвращаемое значение функции executor игнорируется.
+
+ +

Описание

+ +

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

+ +

Promise может находиться в трёх состояниях:

+ + + +

При создании промис находится в ожидании (pending), а затем может стать исполненным  (fulfilled), вернув полученный результат (значение), или отклоненным (rejected), вернув причину отказа. В любом из этих случаев вызывается обработчик, прикрепленный к промису методом then. (Если в момент назначения обработчика промис уже исполнен или отклонен, обработчик все равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)

+ +

Так как методы {{JSxRef("Promise.then", "Promise.prototype.then()")}} и {{JSxRef("Promise.catch", "Promise.prototype.catch()")}} сами возвращают промис, их можно вызывать цепочкой, создавая соединения.

+ +

+ +
+

Примечание: говорят, что промис находится в состоянии завершен (settled) когда он или исполнен или отклонен, т.е. в любом состоянии, кроме ожидания (это лишь форма речи, не являющаяся настоящим состоянием промиса). Также можно встретить термин исполен (resolved) — это значит что промис завершен или "заблокирован" в ожидании завершения другого промиса. В статье состояния и fates приводится более подробное описание терминологии.

+
+ +

Свойства

+ +
+
Promise.length
+
Значение свойства всегда равно 1 (количество аргументов конструктора).
+
{{jsxref("Promise.prototype")}}
+
Представляет прототип для конструктора Promise.
+
+ +

Методы

+ +
+
{{jsxref("Promise.all", "Promise.all(iterable)")}}
+
Ожидает исполнения всех промисов или отклонения любого из них.
+
Возвращает промис, который исполнится после исполнения всех промисов в iterable. В случае, если любой из промисов будет отклонен, Promise.all будет также отклонен.
+
{{JSxRef("Promise.allSettled", "Promise.allSettled(iterable)")}}
+
Ожидает завершения всех полученных промисов (как исполнения так и отклонения).
+
Возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.
+
{{jsxref("Promise.race", "Promise.race(iterable)")}}
+
Ожидает исполнения или отклонения любого из полученных промисов.
+
Возвращает промис, который будет исполнен или отклонен с результатом исполнения первого исполненного или отклонённого промиса из .iterable.
+
+ +
+
{{jsxref("Promise.reject", "Promise.reject(reason)")}}
+
Возвращает промис, отклонённый из-за reason.
+
+ +
+
{{jsxref("Promise.resolve", "Promise.resolve(value)")}}
+
Возвращает промис, исполненный с результатом value.
+
+ +
+
+ +

Прототип Promise

+ +

Свойства

+ +

{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Свойства')}}

+ +

Методы

+ +

{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Методы')}}

+ +

Создание промиса

+ +

Объект Promise создается при помощи ключевого слова new и своего конструктора. Конструктор Promise принимает в качестве аргумента функцию, называемую "исполнитель" (executor function). Эта функция должна принимать две функции-коллбэка в качестве параметров. Первый из них (resolve) вызывается, когда асинхронная операция завершилась успешно и вернула результат своего исполнения в виде значения. Второй коллбэк (reject) вызывается, когда операция не удалась, и возвращает значение, указывающее на причину неудачи, чаще всего объект ошибки.

+ +
const myFirstPromise = new Promise((resolve, reject) => {
+  // выполняется асинхронная операция, которая в итоге вызовет:
+  //
+  //   resolve(someValue); // успешное завершение
+  // или
+  //   reject("failure reason"); // неудача
+});
+ +

Чтобы снабдить функцию функционалом обещаний, нужно просто вернуть в ней объект Promise:

+ +
function myAsyncFunction(url) {
+  return new Promise((resolve, reject) => {
+    const xhr = new XMLHttpRequest();
+    xhr.open("GET", url);
+    xhr.onload = () => resolve(xhr.responseText);
+    xhr.onerror = () => reject(xhr.statusText);
+    xhr.send();
+  });
+}
+ +

Примеры

+ +

Простой пример

+ + + +
let myFirstPromise = new Promise((resolve, reject) => {
+  // Мы вызываем resolve(...), когда асинхронная операция завершилась успешно, и reject(...), когда она не удалась.
+  // В этом примере мы используем setTimeout(...), чтобы симулировать асинхронный код.
+  // В реальности вы, скорее всего, будете использовать XHR, HTML5 API или что-то подобное.
+  setTimeout(function(){
+    resolve("Success!"); // Ура! Всё прошло хорошо!
+  }, 250);
+});
+
+myFirstPromise.then((successMessage) => {
+  // successMessage - это что угодно, что мы передали в функцию resolve(...) выше.
+  // Это необязательно строка, но если это всего лишь сообщение об успешном завершении, это наверняка будет она.
+  console.log("Ура! " + successMessage);
+});
+ +

Продвинутый пример

+ + + +
+
<button id="btn">Создать Promise!</button>
+<div id="log"></div>
+
+ +

Данный небольшой пример показывает механизм работы с Promise. Метод testPromise() вызывается при каждом нажатии на {{HTMLElement("button")}}. При этом создаётся промис, которое успешно выполняется при помощи window.setTimeout, со значением 'result' в случайном интервале от 1 до 3-х секунд.

+ +

исполнение промиса протоколируется при помощи продолжения p1.then. Это показывает как синхронная часть метода отвязана от асинхронного завершения промиса.

+ +
var promiseCount = 0;
+function testPromise() {
+  var thisPromiseCount = ++promiseCount;
+
+  var log = document.getElementById('log');
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+      ') Запуск (запуск синхронного кода)
+');
+
+  // Создаём промис, возвращающее 'result' (по истечении 3-х секунд)
+  var p1 = new Promise(
+    // Функция разрешения позволяет завершить успешно или
+    // отклонить промис
+    function(resolve, reject) {
+      log.insertAdjacentHTML('beforeend', thisPromiseCount +
+          ') Запуск промиса (запуск асинхронного кода)
+');
+      // Это всего лишь пример асинхронности
+      window.setTimeout(
+        function() {
+          // Обещание исполнено!
+          resolve(thisPromiseCount)
+        }, Math.random() * 2000 + 1000);
+    });
+
+  // Указываем, что сделать с исполненным промисм
+  p1.then(
+    // Записываем в протокол
+    function(val) {
+      log.insertAdjacentHTML('beforeend', val +
+          ') Обещание исполнено (асинхронный код завершён)
+');
+    });
+
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+      ') Обещание создано (синхронный код завершён)
+');
+}
+
+ + + +
if ("Promise" in window) {
+  let btn = document.getElementById("btn");
+  btn.addEventListener("click",testPromise);
+} else {
+  log = document.getElementById('log');
+  log.innerHTML = "Демонстрация невозможна, поскольку ваш браузер не поддерживает интерфейс <code>Promise<code>.";
+}
+ +

Данный пример запускается при нажатии на кнопку. Для этого вам необходим браузер, поддерживающий Promise. При последовательных нажатиях на кнопку с коротким интервалом, вы можете увидеть как различные промиса будут исполнены один за другим.

+ +

Загрузка изображения при помощи XHR

+ +

Другой простой пример использования Promise и XMLHttpRequest для загрузки изображения доступен в репозитории MDNpromise-test на GitHub. Вы также можете посмотреть его в действии. Каждый шаг прокомментирован и вы можете подробно исследовать Promise и XHR.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
domenic/promises-unwrappingЧерновикНачало работы над стандартом.
{{SpecName('ES6', '#sec-promise-objects', 'Promise')}}{{Spec2('ES6')}}Изначальное определение в стандарте ECMA.
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Promise")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html b/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html new file mode 100644 index 0000000000..ebd0f84779 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html @@ -0,0 +1,66 @@ +--- +title: Promise.prototype +slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype +tags: + - JavaScript + - Обещание + - Свойство +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +
{{JSRef}}
+ +

Cвойство Promise.prototype представляет собой прототип конструктора {{jsxref("Promise")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

{{jsxref("Promise")}} обьект наследованный от {{jsxref("Promise.prototype")}}. Вы можете использовать прототип конструктора  чтобы добавлять свойства или методы во все объекты обещаний.

+ +

Свойства

+ +
+
Promise.prototype.constructor
+
Возвращает функцию, которая создала прототип экземпляра. Это функция всех обещаний по умолчанию.
+
+ +

Методы

+ +
+
{{jsxref("Promise.catch", "Promise.prototype.catch(onRejected)")}}
+
Добавляет функцию обратного вызова для обработки отклонения обещания, которая возвращает новое обещание выполненное с переданным значением, если она вызвана, или оригинальное значение resolve, если обещание выполнено.
+
{{jsxref("Promise.then", "Promise.prototype.then(onFulfilled, onRejected)")}}
+
Добавляет обработчик выполнения и отклонения обещания, и возвращает новое обещание выполненное со значением вызванного обработчика, или оригинальное значение, если обещание не было обработано (т.е. если соответствующий обработчик onFulfilled или onRejected не является функцией).
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-promise.prototype', 'Promise.prototype')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-promise.prototype', 'Promise.prototype')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/race/index.html b/files/ru/web/javascript/reference/global_objects/promise/race/index.html new file mode 100644 index 0000000000..79b3fba0b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/race/index.html @@ -0,0 +1,115 @@ +--- +title: Promise.race() +slug: Web/JavaScript/Reference/Global_Objects/Promise/race +tags: + - ECMAScript6 + - Promise + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race +--- +
{{JSRef}}
+ +

Метод Promise.race(iterable) возвращает выполненное или отклоненное обещание, в зависимости от того, с каким результатом завершится первое из переданных обещаний, со значением или причиной отклонения этого обещания.

+ +

{{EmbedInteractiveExample("pages/js/promise-race.html")}}

+ +

Синтакс

+ +
Promise.race(iterable);
+ +

Параметры

+ +
+
iterable
+
Итерируемый объект, такой как ({{jsxref("Array")}}). Смотри iterable.
+
+ +

Возвращаемое значение

+ +

Выполненный или отклоненный {{jsxref("Promise")}} в зависимости от результата первого завершенного из переданных в итерируемом объекте обещаний.

+ +

Описание

+ +

Метод race  возвращает Обещание (Promise) с результатом, первого завершенного из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.

+ +

Примеры

+ +

Использование Promise.race – пример с setTimeout

+ +
var p1 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 500, "один");
+});
+var p2 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 100, "два");
+});
+
+Promise.race([p1, p2]).then(function(value) {
+  console.log(value); // "два"
+  // Оба вернули resolve, однако p2 вернул результат первым
+});
+
+var p3 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 100, "три");
+});
+var p4 = new Promise(function(resolve, reject) {
+    setTimeout(reject, 500, "четыре");
+});
+
+Promise.race([p3, p4]).then(function(value) {
+  console.log(value); // "три"
+  // p3 быстрее, поэтому выведется значение его resolve
+}, function(reason) {
+  // Не вызывается
+});
+
+var p5 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 500, "пять");
+});
+var p6 = new Promise(function(resolve, reject) {
+    setTimeout(reject, 100, "шесть");
+});
+
+Promise.race([p5, p6]).then(function(value) {
+  // Не вызывается
+}, function(reason) {
+  console.log(reason); // "шесть"
+  // p6 быстрее, выводится его rejects
+});
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-promise.race', 'Promise.race')}}{{Spec2('ES6')}}Изначальное определение в стандарте ECMA.
{{SpecName('ESDraft', '#sec-promise.race', 'Promise.race')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Promise.race")}}

+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html new file mode 100644 index 0000000000..f234d5122f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html @@ -0,0 +1,76 @@ +--- +title: Promise.reject() +slug: Web/JavaScript/Reference/Global_Objects/Promise/reject +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject +--- +
{{JSRef}}
+ +

Метод Promise.reject(reason) возвращает объект Promise, который был отклонен по указанной причине.

+ +

Синтаксис

+ +
Promise.reject(reason);
+ +

Параметры

+ +
+
reason
+
Причина по которой Promise был отклонен.
+
+

Возвращаемое значение

+ +

Отклоненный с указаной причиной {{jsxref("Promise")}}.

+
+
+ +

Описание

+ +

Promise.reject возвращает Promise который был отклонен. В целях отладки и выборочного отлова ошибок, удобно использовать в качестве причины объекты {{jsxref("Error")}}.

+ +

Примеры

+ +

Использование статического метода Promise.reject()

+ +
Promise.reject(new Error("провал")).then(function(success) {
+  // не вызывается
+}, function(error) {
+  console.log(error); // печатает "провал" + Stacktrace
+  throw error; // повторно выбрасываем ошибку, вызывая новый reject
+});
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ES6')}}Исходное определение в стандарте ECMA.
{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Promise.reject")}}

+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html new file mode 100644 index 0000000000..13a8ba9ee9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html @@ -0,0 +1,138 @@ +--- +title: Promise.resolve() +slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve +tags: + - ECMAScript6 + - JavaScript + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve +--- +
{{JSRef}}
+ +

Метод Promise.resolve(value) возвращает {{jsxref("Promise")}} выполненый с переданным значением. Если переданное значение является thenable - обьект (т.е. имеет метод {{jsxref("Promise.then", "\"then\" method")}}), возвращаемое обещание будет следовать thenable - обьекту, принимая свое состояние; в ином случае возвращаемое обещание будет выполнено с переданным значением.

+ +

Синтаксис

+ +
Promise.resolve(value);
+Promise.resolve(promise);
+Promise.resolve(thenable);
+
+ +

Параметры

+ +
+
value
+
Значение с которым будет выполнено обещание. Может также быть обещанием или обьект подобный обещанию (thenable - обьект имеющий метод then).
+
+ +

Возращаемое значение

+ +

Выполненый с переданным значением {{jsxref("Promise")}}.

+ +

Описание

+ +

Метод Promise.resolve возвращает выполненое обещание (Promise).

+ +

Примеры

+ +

Использование метода Promise.resolve

+ +
Promise.resolve("Success").then(function(value) {
+  console.log(value); // "Success"
+}, function(value) {
+  // не будет вызвана
+});
+
+ +

Выполнение с массивом

+ +
var p = Promise.resolve([1,2,3]);
+p.then(function(v) {
+  console.log(v[0]); // 1
+});
+
+ +

Выполнение с другим обещанием ( Promise)

+ +
var original = Promise.resolve(true);
+var cast = Promise.resolve(original);
+cast.then(function(v) {
+  console.log(v); // true
+});
+
+ +

Выполнение с thenable объектом и выбрасывание исключений

+ +
// Выполнение с thenable объектом
+var p1 = Promise.resolve({
+  then: function(onFulfill, onReject) { onFulfill("fulfilled!"); }
+});
+console.log(p1 instanceof Promise) // true
+
+p1.then(function(v) {
+    console.log(v); // "fulfilled!"
+  }, function(e) {
+    // не вызывается
+});
+
+// Thenable объект выбрасывает исключение
+// перед вызовом колбека Promise resolves
+var thenable = { then: function(resolve) {
+  throw new TypeError("Throwing");
+  resolve("Resolving");
+}};
+
+var p2 = Promise.resolve(thenable);
+p2.then(function(v) {
+  // не вызывается
+}, function(e) {
+  console.log(e); // TypeError: Throwing
+});
+
+// Thenable объект выбрасывает исключение
+// после вызова колбека Promise resolves
+var thenable = { then: function(resolve) {
+  resolve("Resolving");
+  throw new TypeError("Throwing");
+}};
+
+var p3 = Promise.resolve(thenable);
+p3.then(function(v) {
+  console.log(v); // "Resolving"
+}, function(e) {
+  // не вызывается
+});
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +

{{Compat("javascript/promise","Promise.resolve")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/promise/then/index.html b/files/ru/web/javascript/reference/global_objects/promise/then/index.html new file mode 100644 index 0000000000..bf74e41b6c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/then/index.html @@ -0,0 +1,158 @@ +--- +title: Promise.prototype.then() +slug: Web/JavaScript/Reference/Global_Objects/Promise/then +tags: + - ECMAScript6 + - JavaScript + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then +--- +
{{JSRef}}
+ +

Метод then() возвращает {{jsxref("Promise")}}. Метод может принимать два аргумента: колбэк-функции для случаев выполнения и отклонения промиса.

+ +
+

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

+
+ +

Синтаксис

+ +
p.then(onFulfilled[, onRejected]);
+
+p.then(value => {
+  // выполнение
+  }, reason => {
+  // отклонение
+});
+
+ +

Параметры

+ +
+
onFulfilled {{optional_inline}}
+
{{jsxref("Function")}} вызывается, когда Promise выполнен. Эта функция принимает один аргумент, значение с которым промис был выполнен. Если значение onFulfilled не функция, то оно автоматически заменяется на "Identity" функцию (возвращает полученный аргумент)
+
onRejected {{optional_inline}}
+
{{jsxref("Function")}} вызывается, когда Promise  отклонен. Эта функция принимает один аргумент, значение с которым промис был отклонен. Если значение onRejected не функция, то оно автоматически заменяется на "Thrower" функцию (выбрасывает полученный аргумент как ошибку)
+
+ +

Описание

+ +

Так как и метод then, и метод {{jsxref("Promise.prototype.catch()")}} возвращают Promise, их можно вызвать цепочкой — эта операция называется соединение.

+ +

Примеры

+ +

Использование метода then

+ +
var p1 = new Promise(function(resolve, reject) {
+  resolve("Успех!");
+  // или
+  // reject("Ошибка!");
+});
+
+p1.then(function(value) {
+  console.log(value); // Успех!
+}, function(reason) {
+  console.log(reason); // Ошибка!
+});
+
+ +

Соединение

+ +

Так как метод then возвращает Promise (обещание), вы можете объединить несколько вызовов then в цепочку. Значения возвращаемые из onFulfilled или onRejected коллбэков будут автоматически обернуты в обещание.

+ +
var p2 = new Promise(function(resolve, reject) {
+  resolve(1);
+});
+
+p2.then(function(value) {
+  console.log(value); // 1
+  return value + 1;
+}).then(function(value) {
+  console.log(value); // 2
+});
+
+p2.then(function(value) {
+  console.log(value); // 1
+});
+
+ +

Вы также можете соединить одну функцию, имеющую подобную с обещаниями API, с другой функцией.

+ +
function fetch_current_data() {
+  // API функции fetch() возвращает обещание. Эта функция
+  // имеет аналогичный API, за исключением значения в случае выполнения
+  return fetch("current-data.json").then((response) => {
+    if (response.headers.get("content-type") != "application/json") {
+      throw new TypeError();
+    }
+    var j = response.json();
+    // можем что-нибудь делать с j
+    return j; // в случае выполнения обещания, значение
+              // передается в fetch_current_data().then()
+  });
+}
+
+ +

Если onFulfilled возвращает обещание, возвращаемое значение может быть выполнено (resolved) / отклонено (rejected) обещанием.

+ +
function resolveLater(resolve, reject) {
+  setTimeout(function () {
+    resolve(10);
+  }, 1000);
+}
+function rejectLater(resolve, reject) {
+  setTimeout(function () {
+    reject(20);
+  }, 1000);
+}
+
+var p1 = Promise.resolve("foo");
+var p2 = p1.then(function() {
+  // Возвращает обещание, которое будет разрешено значением 10 через 1 секунду
+  return new Promise(resolveLater);
+});
+p2.then(function(v) {
+  console.log("resolved", v);  // "resolved", 10
+}, function(e) {
+  // не вызвано
+  console.log("rejected", e);
+});
+
+var p3 = p1.then(function() {
+// Возвращает обещание, которое будет отброшено значением 20 через 1 секунду
+  return new Promise(rejectLater);
+});
+p3.then(function(v) {
+  // не
+  console.log("resolved", v);
+}, function(e) {
+  console.log("rejected", e); // "rejected", 20
+});
+ +

Спецификация

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ES6')}}Изначальное определение в стандарте ECMA.
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Promise.then")}}

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html new file mode 100644 index 0000000000..a796a08e26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html @@ -0,0 +1,131 @@ +--- +title: handler.deleteProperty() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty +tags: + - Прокси + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty +--- +
{{JSRef}}
+ +

Метод handler.deleteProperty() является "ловушкой" (функция-перехватчик) для оператора {{jsxref("Operators/delete", "delete")}}.

+ +
{{EmbedInteractiveExample("pages/js/proxyhandler-deleteproperty.html", "taller")}}
+ + + +

Синтаксис

+ +
var p = new Proxy(target, {
+  deleteProperty: function(target, property) {
+  }
+});
+
+ +

Параметры

+ +

Следующие параметры передаются в метод deleteProperty.

+ +
+
target
+
Целевой объект.
+
property
+
Имя или {{jsxref("Symbol")}} свойства, которое нужно удалить.
+
+ +

this в момент вызова ссылается на объект handler.

+ +

Возвращаемое значение

+ +

Метод deleteProperty должен возвращать {{jsxref("Boolean")}}. Значение true, если свойство было успешно удалено, в противном случае false.

+ +

Описание

+ +

Метод handler.deleteProperty() является "ловушкой" для оператора {{jsxref("Operators/delete", "delete")}}.

+ +

Перехваты

+ +

Данная "ловушка" может перехватывать следующие операции:

+ + + +

Инварианты

+ +

Если следующие инварианты нарушены, то прокси выдаст ошибку {{jsxref("TypeError")}}:

+ + + +

Примеры

+ +

Следующий код перехватывает действие оператора {{jsxref("Operators/delete", "delete")}}.

+ +
var p = new Proxy({}, {
+  deleteProperty: function(target, prop) {
+    if (prop in target){
+      delete target[prop]
+      console.log('property removed: ' + prop)
+      return true
+    }
+    else {
+      console.log('property not found: ' + prop)
+      return false
+    }
+  }
+})
+
+var result
+
+p.a = 10
+console.log('a' in p)  // true
+
+result = delete p.a    // "property removed: a"
+console.log(result)    // true
+console.log('a' in p)  // false
+
+result = delete p.a    // "property not found: a"
+console.log(result)    // false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Proxy.handler.deleteProperty")}}

+
+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html new file mode 100644 index 0000000000..eef887a246 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html @@ -0,0 +1,134 @@ +--- +title: Proxy handler +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +tags: + - ECMAScript 2015 + - JavaScript + - NeedsTranslation + - Proxy + - TopicStub + - Прокси + - Русский + - ловушки +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +--- +
{{JSRef}}
+ +

Объект-обработчик прокси - это объект, который содержит ловушки для {{jsxref("Proxy", "proxies", "", 1)}}.

+ +

Методы

+ +

Все ловушки ставятся по желанию разработчика. Если ловушка не была определена, то, по умолчанию, операция перенаправляется на исходный объект (target).

+ +
+
{{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}
+
Ловушка для {{jsxref("Object.getPrototypeOf")}}.
+
{{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}
+
Ловушка для {{jsxref("Object.setPrototypeOf")}}.
+
{{jsxref("Global_Objects/Proxy/handler/isExtensible", "handler.isExtensible()")}}
+
Ловушка для {{jsxref("Object.isExtensible")}}.
+
{{jsxref("Global_Objects/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}
+
Ловушка для {{jsxref("Object.preventExtensions")}}.
+
{{jsxref("Global_Objects/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}
+
Ловушка для {{jsxref("Object.getOwnPropertyDescriptor")}}.
+
{{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}}
+
Ловушка для {{jsxref("Object.defineProperty")}}.
+
{{jsxref("Global_Objects/Proxy/handler/has", "handler.has()")}}
+
Ловушка для оператора {{jsxref("Operators/in", "in")}}.
+
{{jsxref("Global_Objects/Proxy/handler/get", "handler.get()")}}
+
Ловушка для получения значений из свойств.
+
{{jsxref("Global_Objects/Proxy/handler/set", "handler.set()")}}
+
Ловушка для установки значений в свойства.
+
{{jsxref("Global_Objects/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}
+
Ловушка для оператора {{jsxref("Operators/delete", "delete")}}.
+
{{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}}
+
Ловушка для {{jsxref("Object.getOwnPropertyNames")}} и {{jsxref("Object.getOwnPropertySymbols")}}.
+
{{jsxref("Global_Objects/Proxy/handler/apply", "handler.apply()")}}
+
Ловушка для вызова функции.
+
{{jsxref("Global_Objects/Proxy/handler/construct", "handler.construct()")}}
+
Ловушка для оператора {{jsxref("Operators/new", "new")}}.
+
+ +

Некоторые нестандартные ловушки устарели и были удалены.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ES2015')}}Определении при инициализации.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}{{Spec2('ESDraft')}}Обработчик enumerate был удален.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support49 [1]{{ CompatGeckoDesktop("18") }}12{{CompatOpera(36)}}{{CompatSafari(10)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{ CompatGeckoDesktop("18") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] Разрешен по умолчанию.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html new file mode 100644 index 0000000000..88b030ecc4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html @@ -0,0 +1,179 @@ +--- +title: handler.set() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set +tags: + - Прокси + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +--- +
{{JSRef}}
+ +

Метод handler.set() является ловушкой для установки значения свойству.

+ +

Синтаксис

+ +
var p = new Proxy(target, {
+  set: function(target, property, value, receiver) {
+  }
+});
+
+ +

Параметры

+ +

Следующие параметры передаются методу set() . this привязан к обработчику

+ +
+
target
+
Исходный обьект, который проксируется.
+
property
+
Имя свойства, в которое устанавливается значение value.
+
value
+
Значение, устанавливаемое в свойство property.
+
receiver
+
Объект, которому первоначально было присвоено задание. Обычно это сам прокси. Но обработчик set() также может быть вызван косвенно, через цепочку прототипов или различными другими способами.
+      Например, предположим, что скрипт выполняет
obj.name = "jen", при этом obj не является прокси и не имеет собственного свойства .name, но имеет прокси в цепочке прототипов. Будет вызван обработчик прокси set() , а obj будет передан в качестве получателя.
+
+
+ +

Возвращаемые результаты

+ +

Метод set должен возвращать boolean значение.

+ + + +

Описание

+ +

Метод handler.set является ловушкой для установки значения свойству.

+ +

Перехват

+ +

Эта ловушка может перехватывать следующие операции:

+ + + +

Инварианты

+ +

Если нарушены следующие инваринаты, то proxy выбросит {{jsxref("TypeError")}}:

+ + + +

Примеры

+ +

Следующий код перехватывает установку значения свойству.

+ +
var p = new Proxy({}, {
+  set: function(target, prop, value, receiver) {
+    target[prop] = value
+    console.log('property set: ' + prop + ' = ' + value)
+    return true
+  }
+})
+
+console.log('a' in p)  // false
+
+p.a = 10               // "property set: a = 10"
+console.log('a' in p)  // true
+console.log(p.a)       // 10
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("61")}}{{CompatGeckoDesktop("18")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("10.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("18")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/index.html b/files/ru/web/javascript/reference/global_objects/proxy/index.html new file mode 100644 index 0000000000..2d8e5ae557 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/index.html @@ -0,0 +1,482 @@ +--- +title: Прокси +slug: Web/JavaScript/Reference/Global_Objects/Proxy +tags: + - ECMAScript6 + - JavaScript + - NeedsUpdate + - Reference + - Объект + - Прокси +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy +--- +
Объект Proxy позволяет создать прокси для другого объекта, может перехватывать и переопределить основные операции для данного объекта.
+ +

Введение

+ +

Прокси используются программистами для объявления расширенной семантики JavaScript объектов. Стандартная семантика реализована в движке JavaScript, который обычно написан на низкоуровневом языке программирования, например C++. Прокси позволяют программисту определить поведение объекта при помощи JavaScript. Другими словами они являются инструментом метапрограммирования.

+ +

Примечание: реализация прокси в SpiderMonkey является прототипом, в котором прокси API и семантика не стабильны. Также, реализация в SpiderMonkey может не соответствовать последней версии спецификации. Она может быть изменена в любой момент и предоставляется исключительно как экспериментальная функция. Не полагайтесь на неё в производственном коде.

+ +

Эта страница описывает новый API (называемый «непосредственным проксированием»), который является частью Firefox 18. Для просмотра старого API (Firefox 17 и ниже) посетите страницу описания старого прокси API.

+ +

Терминология

+ +
+
механизм полного перехвата (или "intercession API")
+
Технический термин для этой функции.
+
прокси (proxy)
+
Объект, оборачивающий исходный объект.
+
обработчик (handler)
+
Объект-заменитель, содержащий ловушки. Определяет, какие операции будут перехвачены, также переопределяет перехваченные операции.
+
ловушки (traps)
+
Методы, которые предоставляют доступ к свойствам. Это аналогично концепции ловушек в операционных системах.
+
цель (target)
+
Исходный объект, который виртуализируется прокси. Он часто используется в качестве источника данных в прокси. Для него проверяются инварианты относительно расширяемости и настраиваемости свойств.
+
+ +

Прокси

+ +

Прокси - это новые объекты; невозможно выполнить "проксирование" существующего объекта. Пример создания прокси:

+ +
var p = new Proxy(target, handler);
+
+ +

Где:

+ + + +

Обработчик

+ +

Все ловушки опциональны. В случае, если ловушка не задана, то стандартным поведением будет перенаправление операции к объекту-цели.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JavaScript кодМетод обработчикаОписание
Object.getOwnPropertyDescriptor(proxy, name)getOwnPropertyDescriptor
+ function(target, name) -> PropertyDescriptor | undefined
Должен возвращать верный объект-описание свойства или undefined, чтобы показать, что свойство с именем name существует в эмулируемом объекте.
+

Object.getOwnPropertyNames(proxy)
+ Object.getOwnPropertySymbols(proxy)
+ Object.keys(proxy)

+
ownKeys function(target) -> [string | symbol]Возвращает массив всех собственных (не унаследованных) имён свойств эмулируемого объекта.
Object.defineProperty(proxy,name,pd)defineProperty function(target, name, propertyDescriptor) -> anyЗадаёт новое свойство, атрибуты которого определяются предоставленным propertyDescriptor. Возвращаемое значение метода игнорируется.
delete proxy.namedeleteProperty function(target, name) -> booleanУдаляет именованное свойство из прокси. Возвращает true в случае успешного удаления свойства name.
Object.preventExtensions(proxy)preventExtensions function(target) -> booleanДелает объект нерасширяемым. Возвращает true при успешном выполнении.
name in proxyhas function(target, name) -> boolean
+

proxy.name (in the context of "getting the value")

+ +

receiver.name (if receiver inherits from a proxy and does not override name)

+
get function(target, name, receiver) -> anyreceiver — это прокси или объект, унаследованный от прокси.
+

proxy.name = val (in the context of "setting the value")

+ +

receiver.name = val (if receiver inherits from a proxy and does not override name)

+
set function(target, name, val, receiver) -> booleanreceiver — это прокси или объект, унаследованный от прокси.
+

proxy(...args)
+ proxy.apply(thisValue, args)
+ proxy.call(thisValue, ...args)

+
apply function(target, thisValue, args) -> anytarget должен быть функцией.
new proxy(...args)construct function(target, args) -> objecttarget должен быть функцией.
+ +

Инварианты

+ +

Несмотря на то, что прокси предоставляют много возможностей пользователям, некоторые операции не перехватываются для сохранения постоянства языка:

+ + + +

Примеры

+ +

Простой пример

+ +

Объект, возвращающий значение 37, в случае отсутствия свойства с указанным именем:

+ +
var handler = {
+    get: function(target, name){
+        return name in target?
+            target[name] :
+            37;
+    }
+};
+
+var p = new Proxy({}, handler);
+p.a = 1;
+p.b = undefined;
+
+console.log(p.a, p.b); // 1, undefined
+console.log('c' in p, p.c); // false, 37
+
+ +

Перенаправляющий прокси

+ +

В данном примере мы используем JavaScript объект, к которому наш прокси направляет все запросы:

+ +
var target = {};
+var p = new Proxy(target, {});
+
+p.a = 37; // операция перенаправлена прокси
+
+console.log(target.a); // 37. Операция была успешно перенаправлена
+
+ +

Проверка

+ +

При помощи Proxy вы можете легко проверять передаваемые объекту значения:

+ +
let validator = {
+  set: function(obj, prop, value) {
+    if (prop === 'age') {
+      if (!Number.isInteger(value)) {
+        throw new TypeError('The age is not an integer');
+      }
+      if (value > 200) {
+        throw new RangeError('The age seems invalid');
+      }
+    }
+
+    // Стандартное сохранение значения
+    obj[prop] = value;
+  }
+};
+
+let person = new Proxy({}, validator);
+
+person.age = 100;
+console.log(person.age); // 100
+person.age = 'young'; // Вызовет исключение
+person.age = 300; // Вызовет исключение
+
+ +

Дополнение конструктора

+ +

Функция прокси может легко дополнить конструктор новым:

+ +
function extend(sup, base) {
+    var descriptor = Object.getOwnPropertyDescriptor(
+        base.prototype, 'constructor',
+    );
+
+    const prototype = {...base.prototype}
+
+    base.prototype = Object.create(sup.prototype);
+    base.prototype = Object.assign(base.prototype, prototype);
+
+    var handler = {
+        construct: function(target, args) {
+            var obj = Object.create(base.prototype);
+            this.apply(target, obj, args);
+            return obj;
+        },
+        apply: function(target, that, args) {
+            sup.apply(that, args);
+            base.apply(that, args);
+        },
+    };
+    var proxy = new Proxy(base, handler);
+    descriptor.value = proxy;
+    Object.defineProperty(base.prototype, 'constructor', descriptor);
+    return proxy;
+}
+
+var Person = function(name) {
+    this.name = name;
+};
+
+var Boy = extend(Person, function(name, age) {
+    this.age = age;
+});
+
+Boy.prototype.sex = 'M';
+
+var Peter = new Boy('Peter', 13);
+console.log(Peter.sex); // "M"
+console.log(Peter.name); // "Peter"
+console.log(Peter.age); // 13
+
+ +

Манипуляция DOM элементами

+ +

Иногда возникает необходимость переключить атрибут или имя класса у двух разных элементов:

+ +
let view = new Proxy({
+  selected: null
+},
+{
+  set: function(obj, prop, newval) {
+    let oldval = obj[prop];
+
+    if (prop === 'selected') {
+      if (oldval) {
+        oldval.setAttribute('aria-selected', 'false');
+      }
+      if (newval) {
+        newval.setAttribute('aria-selected', 'true');
+      }
+    }
+
+    // Стандартное сохранение значения
+    obj[prop] = newval;
+  }
+});
+
+let i1 = view.selected = document.getElementById('item-1');
+console.log(i1.getAttribute('aria-selected')); // 'true'
+
+let i2 = view.selected = document.getElementById('item-2');
+console.log(i1.getAttribute('aria-selected')); // 'false'
+console.log(i2.getAttribute('aria-selected')); // 'true'
+
+ +

Изменение значений и дополнительные свойства

+ +

Прокси объект products проверяет передаваемые значения и преобразует их в массив в случае необходимости. Объект также поддерживает дополнительное свойство latestBrowser на чтение и запись.

+ +
let products = new Proxy({
+  browsers: ['Internet Explorer', 'Netscape']
+},
+{
+  get: function(obj, prop) {
+    // Дополнительное свойство
+    if (prop === 'latestBrowser') {
+      return obj.browsers[obj.browsers.length - 1];
+    }
+
+    // Стандартный возврат значения
+    return obj[prop];
+  },
+  set: function(obj, prop, value) {
+    // Дополнительное свойство
+    if (prop === 'latestBrowser') {
+      obj.browsers.push(value);
+      return;
+    }
+
+    // Преобразование значения, если оно не массив
+    if (typeof value === 'string') {
+      value = [value];
+    }
+
+    // Стандартное сохранение значения
+    obj[prop] = value;
+  }
+});
+
+console.log(products.browsers); // ['Internet Explorer', 'Netscape']
+products.browsers = 'Firefox'; // передаётся как строка (по ошибке)
+console.log(products.browsers); // ['Firefox'] <- проблем нет, значение - массив
+
+products.latestBrowser = 'Chrome';
+console.log(products.browsers); // ['Firefox', 'Chrome']
+console.log(products.latestBrowser); // 'Chrome'
+
+ +

Поиск элемента массива по его свойству

+ +

Данный прокси расширяет массив дополнительными возможностями. Как вы видите, вы можете гибко "задавать" свойства без использования Object.defineProperties. Данный пример также может быть использован для поиска строки таблицы по её ячейке. В этом случае целью будет table.rows.

+ +
let products = new Proxy([
+  { name: 'Firefox', type: 'browser' },
+  { name: 'SeaMonkey', type: 'browser' },
+  { name: 'Thunderbird', type: 'mailer' }
+],
+{
+  get: function(obj, prop) {
+    // Стандартное возвращение значения; prop обычно является числом
+    if (prop in obj) {
+      return obj[prop];
+    }
+
+    // Получение количества продуктов; псевдоним products.length
+    if (prop === 'number') {
+      return obj.length;
+    }
+
+    let result, types = {};
+
+    for (let product of obj) {
+      if (product.name === prop) {
+        result = product;
+      }
+      if (types[product.type]) {
+        types[product.type].push(product);
+      } else {
+        types[product.type] = [product];
+      }
+    }
+
+    // Получение продукта по имени
+    if (result) {
+      return result;
+    }
+
+    // Получение продуктов по типу
+    if (prop in types) {
+      return types[prop];
+    }
+
+    // Получение типов продуктов
+    if (prop === 'types') {
+      return Object.keys(types);
+    }
+
+    return undefined;
+  }
+});
+
+console.log(products[0]); // { name: 'Firefox', type: 'browser' }
+console.log(products['Firefox']); // { name: 'Firefox', type: 'browser' }
+console.log(products['Chrome']); // undefined
+console.log(products.browser); // [{ name: 'Firefox', type: 'browser' }, { name: 'SeaMonkey', type: 'browser' }]
+console.log(products.types); // ['browser', 'mailer']
+console.log(products.number); // 3
+
+ +

Пример использования всех перехватчиков

+ +

В данном примере, использующем все виды перехватчиков, мы попытаемся проксировать не нативный объект, который частично приспособлен для этого - docCookies, созданном в разделе "little framework" и опубликованном на странице document.cookie.

+ +
/*
+  var docCookies = ... получить объект "docCookies" можно здесь:
+  https://developer.mozilla.org/en-US/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support
+*/
+
+var docCookies = new Proxy(docCookies, {
+  "get": function (oTarget, sKey) {
+    return oTarget[sKey] || oTarget.getItem(sKey) || undefined;
+  },
+  "set": function (oTarget, sKey, vValue) {
+    if (sKey in oTarget) { return false; }
+    return oTarget.setItem(sKey, vValue);
+  },
+  "deleteProperty": function (oTarget, sKey) {
+    if (sKey in oTarget) { return false; }
+    return oTarget.removeItem(sKey);
+  },
+  "enumerate": function (oTarget, sKey) {
+    return oTarget.keys();
+  },
+  "iterate": function (oTarget, sKey) {
+    return oTarget.keys();
+  },
+  "ownKeys": function (oTarget, sKey) {
+    return oTarget.keys();
+  },
+  "has": function (oTarget, sKey) {
+    return sKey in oTarget || oTarget.hasItem(sKey);
+  },
+  "hasOwn": function (oTarget, sKey) {
+    return oTarget.hasItem(sKey);
+  },
+  "defineProperty": function (oTarget, sKey, oDesc) {
+    if (oDesc && "value" in oDesc) { oTarget.setItem(sKey, oDesc.value); }
+    return oTarget;
+  },
+  "getPropertyNames": function (oTarget) {
+    return Object.getPropertyNames(oTarget).concat(oTarget.keys());
+  },
+  "getOwnPropertyNames": function (oTarget) {
+    return Object.getOwnPropertyNames(oTarget).concat(oTarget.keys());
+  },
+  "getPropertyDescriptor": function (oTarget, sKey) {
+    var vValue = oTarget[sKey] || oTarget.getItem(sKey)
+    return vValue ? {
+      "value": vValue,
+      "writable": true,
+      "enumerable": true,
+      "configurable": false
+    } : undefined;
+  },
+  "getOwnPropertyDescriptor": function (oTarget, sKey) {
+    var vValue = oTarget.getItem(sKey);
+    return vValue ? {
+      "value": vValue,
+      "writable": true,
+      "enumerable": true,
+      "configurable": false
+    } : undefined;
+  },
+  "fix":  function (oTarget) {
+    return "not implemented yet!";
+  },
+});
+
+/* Проверка cookies */
+
+alert(docCookies.my_cookie1 = "First value");
+alert(docCookies.getItem("my_cookie1"));
+
+docCookies.setItem("my_cookie1", "Changed value");
+alert(docCookies.my_cookie1);
+ +

Смотрите также

+ + + +

Лицензионные примечания

+ +

Некоторое содержимое (текст, примеры) данной страницы было скопировано или адаптировано со страниц вики ECMAScript, имеющей лицензию CC 2.0 BY-NC-SA

diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html new file mode 100644 index 0000000000..81ea9d0605 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html @@ -0,0 +1,111 @@ +--- +title: handler.apply() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +tags: + - Прокси + - вызов функции + - ловушка +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +--- +
{{JSRef}}
+ +

Метод handler.apply() является ловушкой для вызова функции.

+ +
{{EmbedInteractiveExample("pages/js/proxyhandler-apply.html", "taller")}}
+ + + +

Синтаксис

+ +
const p = new Proxy(target, {
+  apply: function(target, thisArg, argumentsList) {
+  }
+});
+
+ +

Параметры

+ +

Методу apply() передаются следующие параметры. this связан с объектом-обработчиком.

+ +
+
target
+
Исходный объект.
+
thisArg
+
Аргумент this для вызова.
+
argumentsList
+
Список аргументов для вызова.
+
+ +

Возврат значения

+ +

Метод apply() может возвращать значение.

+ +

Описание

+ +

Метод handler.apply() является ловушкой для вызова функции.

+ +

Перехват

+ +

Ловушка может перехватывать следующие операции:

+ + + +

Инварианты

+ +

Если следующие инваринаты нарушены, то прокси выбросит {{jsxref("TypeError")}}.

+ +

Исходный объект target должен быть самовызываемым. То есть, это должна быть функция-объект.

+ +

Примеры

+ +

Ловушка для вызова функции

+ +

Следующий код ловит вызов функции.

+ +
const p = new Proxy(function() {}, {
+  apply: function(target, thisArg, argumentsList) {
+    console.log('called: ' + argumentsList.join(', '));
+    return argumentsList[0] + argumentsList[1] + argumentsList[2];
+  }
+});
+
+console.log(p(1, 2, 3)); // "called: 1, 2, 3"
+                         // 6
+
+ +

Спецификации

+ + + + + + + + + + + + +
Спецификация
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist', '[[Call]]')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Proxy.handler.apply")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html new file mode 100644 index 0000000000..2d6be05af5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html @@ -0,0 +1,127 @@ +--- +title: handler.get() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +--- +
{{JSRef}}
+ +

Метод handler.get() является ловушкой для получения значения свойства.

+ +
{{EmbedInteractiveExample("pages/js/proxyhandler-get.html", "taller")}}
+ + + +

Syntax

+ +
const p = new Proxy(target, {
+  get: function(target, property, receiver) {
+  }
+});
+
+ +

Параметры

+ +

Следующие параметры передаются методу get(). this привязан к обработчику.

+ +
+
target
+
Исходный объект, который проксируется.
+
property
+
Наименование или {{jsxref("Symbol")}} получаемого свойства. 
+
receiver
+
Прокси или объект, наследуемый от прокси..
+
+ +

Возвращаемое значение

+ +

Метод get() может возвращать значение.

+ +

Описание

+ +

Метод handler.get() является ловушкой для получения значения свойства.

+ +

Перехват

+ +

Эта ловушка может перехватывать следующие операции:

+ + + +

Инварианты

+ +

Если следующие инваринаты нарушены, то прокси выбросит {{jsxref("TypeError")}}:

+ + + +

Примеры

+ +

Ловушка для получения значения свойства

+ +

Следующий код перехватывает получение значения свойства.

+ +
const p = new Proxy({}, {
+  get: function(target, property, receiver) {
+    console.log('called: ' + property);
+    return 10;
+  }
+});
+
+console.log(p.a); // "called: a"
+                  // 10
+
+ +

Следующий код нарушает инвариант.

+ +
const obj = {};
+Object.defineProperty(obj, 'a', {
+  configurable: false,
+  enumerable: false,
+  value: 10,
+  writable: false
+});
+
+const p = new Proxy(obj, {
+  get: function(target, property) {
+    return 20;
+  }
+});
+
+p.a; // TypeError is thrown
+
+ +

Спецификации

+ + + + + + + + + + + + +
Спецификация
{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver', '[[Get]]')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.Proxy.handler.get")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html new file mode 100644 index 0000000000..1bf6b70b43 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -0,0 +1,125 @@ +--- +title: Proxy() constructor +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +tags: + - Constructor + - JavaScript + - NeedsTranslation + - Proxy + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +--- +
{{JSRef}}
+ +

The Proxy() constructor is used to create {{jsxref("Proxy")}} objects.

+ +

Syntax

+ +
new Proxy(target, handler)
+ +

Parameters

+ +
+
target
+
A target object to wrap with Proxy. It can be any sort of object, including a native array, a function, or even another proxy.
+
handler
+
An object whose properties are functions that define the behavior of the proxy when an operation is performed on it.
+
+ +

Description

+ +

Use the Proxy() constructor to create a new Proxy object. This constructor takes two mandatory arguments:

+ + + +

An empty handler will create a proxy that behaves, in almost all respects, exactly like the target. By defining any of a set group of functions on the handler object, you can customise specific aspects of the proxy's behavior. For example, by defining get() you can provide a customised version of the target's property accessor.

+ +

Handler functions

+ +

This section lists all the handler functions you can define. Handler functions are sometimes called traps, because they trap calls to the underlying target object.

+ +
+
{{JSxRef("Global_Objects/Proxy/Proxy/apply", "handler.apply()")}}
+
A trap for a function call.
+
{{JSxRef("Global_Objects/Proxy/Proxy/construct", "handler.construct()")}}
+
A trap for the {{JSxRef("Operators/new", "new")}} operator.
+
{{JSxRef("Global_Objects/Proxy/Proxy/defineProperty", "handler.defineProperty()")}}
+
A trap for {{JSxRef("Object.defineProperty")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/deleteProperty", "handler.deleteProperty()")}}
+
A trap for the {{JSxRef("Operators/delete", "delete")}} operator.
+
{{JSxRef("Global_Objects/Proxy/Proxy/get", "handler.get()")}}
+
A trap for getting property values.
+
{{JSxRef("Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}
+
A trap for {{JSxRef("Object.getOwnPropertyDescriptor")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/getPrototypeOf", "handler.getPrototypeOf()")}}
+
A trap for {{JSxRef("Object.getPrototypeOf")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/has", "handler.has()")}}
+
A trap for the {{JSxRef("Operators/in", "in")}} operator.
+
{{JSxRef("Global_Objects/Proxy/Proxy/isExtensible", "handler.isExtensible()")}}
+
A trap for {{JSxRef("Object.isExtensible")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/ownKeys", "handler.ownKeys()")}}
+
A trap for {{JSxRef("Object.getOwnPropertyNames")}} and {{JSxRef("Object.getOwnPropertySymbols")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/preventExtensions", "handler.preventExtensions()")}}
+
A trap for {{JSxRef("Object.preventExtensions")}}.
+
{{JSxRef("Global_Objects/Proxy/Proxy/set", "handler.set()")}}
+
A trap for setting property values.
+
{{JSxRef("Global_Objects/Proxy/Proxy/setPrototypeOf", "handler.setPrototypeOf()")}}
+
A trap for {{JSxRef("Object.setPrototypeOf")}}.
+
+ +

Examples

+ +

Selectively proxy property accessors

+ +

In this example the target has two properties, notProxied and proxied. We define a handler that returns a different value for proxied, and lets any other accesses through to the target.

+ +
const target = {
+  notProxied: "original value",
+  proxied: "original value"
+};
+
+const handler = {
+  get: function(target, prop, receiver) {
+    if (prop === "proxied") {
+      return "replaced value";
+    }
+    return Reflect.get(...arguments);
+  }
+};
+
+const proxy = new Proxy(target, handler);
+
+console.log(proxy.notProxied); // "original value"
+console.log(proxy.proxied);    // "replaced value"
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-proxy-constructor', 'Proxy constructor')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Proxy.Proxy")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html b/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html new file mode 100644 index 0000000000..fbc4009f60 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html @@ -0,0 +1,91 @@ +--- +title: Proxy.revocable() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocable +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/revocable +--- +
{{JSRef}}
+ +

Метод Proxy.revocable() используется, чтобы создать отменяемый {{jsxref("Proxy")}} объект.

+ +

Синтаксис

+ +
Proxy.revocable(target, handler);
+
+ +

Параметры

+ +
{{ Page("/docs/Web/JavaScript/Reference/Global_Objects/Proxy", "Parameters") }}
+ +

Возвращаемое значение

+ +

Создаётся и возвращается отменяемый Proxy объект.

+ +

Описание

+ +

Отменяемый Proxy - объект со следующими двумя свойствами {proxy: proxy, revoke: revoke}.

+ +
+
proxy
+
Объект Proxy, созданный с помощью вызова new Proxy(target, handler).
+
revoke
+
Функция, не принимающая аргументов, которая сделает недействительным (выключит) proxy.
+
+ +

Если вызовется функция revoke(), proxy становится неиспользуемым: Любой proxy-перехватчик событий объекта будет вызывать исключение {{jsxref("TypeError")}}. Как только proxy отменена, она останется отменённой и дальше, и может быть собрана сборщиком мусора. Повторный вызов revoke() не будет иметь никакого эффекта.

+ +

Примеры

+ +
var revocable = Proxy.revocable({}, {
+  get: function(target, name) {
+    return "[[" + name + "]]";
+  }
+});
+var proxy = revocable.proxy;
+console.log(proxy.foo); // "[[foo]]"
+
+revocable.revoke();
+
+console.log(proxy.foo); // Вызвано исключение TypeError
+proxy.foo = 1           // TypeError снова
+delete proxy.foo;       // Всё ещё TypeError
+typeof proxy            // "object", typeof не вызывает никаких proxy-перехватчиков событий
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-proxy.revocable', 'Proxy Revocation Functions')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-proxy.revocable', 'Proxy Revocation Functions')}}{{Spec2('ESDraft')}} 
+ +

Совместимость браузерами

+ + + +

{{Compat("javascript.builtins.Proxy.revocable")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/rangeerror/index.html b/files/ru/web/javascript/reference/global_objects/rangeerror/index.html new file mode 100644 index 0000000000..c81cd31cdc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/rangeerror/index.html @@ -0,0 +1,151 @@ +--- +title: RangeError +slug: Web/JavaScript/Reference/Global_Objects/RangeError +tags: + - Error + - JavaScript + - Object + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Объект RangeError представляет ошибку, возникающую, когда значение не входит в множество или выходит за диапазон допустимых значений.

+ +

Синтаксис

+
new RangeError([message[, fileName[, lineNumber]]])
+ +

Параметры

+
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+

Исключение RangeError выбрасывается при попытке передать аргументом в функцию число, которое не входит в допустимый диапазон значений аргумента этой функции. Оно может возникать при создании массива с неправильной длиной через конструктор {{jsxref("Array")}}, или при передаче плохих значений в методы числа {{jsxref("Number.toExponential()")}}, {{jsxref("Number.toFixed()")}} или {{jsxref("Number.toPrecision()")}}.

+ +

Свойства

+
+
{{jsxref("RangeError.prototype")}}
+
Позволяет добавлять свойства в объект RangeError.
+
+ +

Методы

+

Глобальный объект RangeError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта RangeError

+ +

Свойства

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Properties')}}
+ +

Методы

+
{{page('/ru/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование RangeError

+
var check = function(num) {
+  if (num < MIN || num > MAX) {
+    throw new RangeError('Параметр должен быть между ' + MIN + ' и ' + MAX);
+  }
+};
+
+try {
+  check(500);
+}
+catch (e) {
+  if (e instanceof RangeError) {
+    // Обработка ошибки диапазона
+  }
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.2', 'RangeError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-rangeerror', 'RangeError')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html new file mode 100644 index 0000000000..e537146615 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: RangeError.prototype +slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство RangeError.prototype представляет прототип конструктора объекта {{jsxref("RangeError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("RangeError")}} наследуются от объекта RangeError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
RangeError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "RangeError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("RangeError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "RangeError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "RangeError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "RangeError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "RangeError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "RangeError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("RangeError")}} не содержит собственных методов, экземпляры {{jsxref("RangeError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/referenceerror/index.html b/files/ru/web/javascript/reference/global_objects/referenceerror/index.html new file mode 100644 index 0000000000..b7e2dbf000 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/referenceerror/index.html @@ -0,0 +1,131 @@ +--- +title: ReferenceError +slug: Web/JavaScript/Reference/Global_Objects/ReferenceError +tags: + - Error + - JavaScript + - Object + - Reference + - ReferenceError +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +
{{JSRef}}
+ +

Объект ReferenceError представляет ошибку, возникающую при обращении к несуществующей переменной.

+ +

Синтаксис

+ +
new ReferenceError([message[, fileName[, lineNumber]]])
+ +

Параметры

+ +
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение
+
+ +

Описание

+ +

Исключение ReferenceError выбрасывается при попытке обратиться к переменной, которая не была объявлена.

+ +

Свойства

+ +
+
{{jsxref("ReferenceError.prototype")}}
+
Позволяет добавлять свойства в объект ReferenceError.
+
+ +

Методы

+ +

Глобальный объект ReferenceError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта ReferenceError

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Methods')}}
+ +

Примеры

+ +

Перехват ReferenceError

+ +
try {
+  var a = undefinedVariable;
+} catch (e) {
+  console.log(e instanceof ReferenceError); // true
+  console.log(e.message);                   // "undefinedVariable is not defined"
+  console.log(e.name);                      // "ReferenceError"
+  console.log(e.fileName);                  // "Scratchpad/1"
+  console.log(e.lineNumber);                // 2
+  console.log(e.columnNumber);              // 6
+  console.log(e.stack);                     // "@Scratchpad/2:2:7\n"
+}
+
+ +

Выбрасывание ReferenceError

+ +
try {
+  throw new ReferenceError('Привет', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof ReferenceError); // true
+  console.log(e.message);                   // "Привет"
+  console.log(e.name);                      // "ReferenceError"
+  console.log(e.fileName);                  // "someFile.js"
+  console.log(e.lineNumber);                // 10
+  console.log(e.columnNumber);              // 0
+  console.log(e.stack);                     // "@Scratchpad/2:2:9\n"
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES3')}}{{Spec2('ES3')}}Изначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.3', 'ReferenceError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+

{{Compat("javascript.builtins.ReferenceError")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html new file mode 100644 index 0000000000..0c237f9c3c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: ReferenceError.prototype +slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - ReferenceError +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство ReferenceError.prototype представляет прототип конструктора объекта {{jsxref("ReferenceError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("ReferenceError")}} наследуются от объекта ReferenceError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
ReferenceError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "ReferenceError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("ReferenceError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "ReferenceError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "ReferenceError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "ReferenceError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "ReferenceError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "ReferenceError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("ReferenceError")}} не содержит собственных методов, экземпляры {{jsxref("ReferenceError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html b/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html new file mode 100644 index 0000000000..927f5b52b8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html @@ -0,0 +1,101 @@ +--- +title: Reflect.apply() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/apply +tags: + - ECMAScript 2015 + - JavaScript + - Reflect + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/apply +--- +
{{JSRef}}
+ +

Статический метод Reflect.apply() вызывает переданную ему функцию с указанными аргументами.

+ +
{{EmbedInteractiveExample("pages/js/reflect-apply.html")}}
+ + + +

Синтаксис

+ +
Reflect.apply(target, thisArgument, argumentsList)
+
+ +

Параметры

+ +
+
target
+
Функция, которую необходимо вызвать.
+
thisArgument
+
Значение переменной this во время вызова функции target.
+
argumentsList
+
Объект, подобный массиву, содержащий аргументы, с которыми должна быть вызвана функция target.
+
+ +

Возвращаемое значение

+ +

Возвращается значение, которое вернёт функция target с указанным значением переменной this и аргументами.

+ +

Исключения

+ +

{{jsxref("TypeError")}}, если функция target не может быть вызвана.

+ +

Описание

+ +

В ES5, обычно используется метод {{jsxref("Function.prototype.apply()")}}, чтобы вызвать функцию с указанным значением переменной this и arguments, переданными как массив (или массивоподобный объект).

+ +
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
+ +

С использованием Reflect.apply это действие становится более понятным и занимает меньше места в коде.

+ +

Примеры

+ +

Использование Reflect.apply()

+ +
Reflect.apply(Math.floor, undefined, [1.75]);
+// 1;
+
+Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
+// "hello"
+
+Reflect.apply(RegExp.prototype.exec, /вы/, ['превысокомногорассмотрительствующий']).index;
+// 4
+
+Reflect.apply(''.charAt, 'пони', [3]);
+// "и"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.apply', 'Reflect.apply')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-reflect.apply', 'Reflect.apply')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ + + +

{{Compat("javascript.builtins.Reflect.apply")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html new file mode 100644 index 0000000000..e5eaa5af39 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html @@ -0,0 +1,151 @@ +--- +title: Reflect.construct() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/construct +tags: + - ECMAScript6 + - Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/construct +--- +
{{JSRef}}
+ +

Статический метод Reflect.construct() работает как new operator. Он эквивалентен new target(...args). Это также дает дополнительную возможность указать другой прототип.

+ +
{{EmbedInteractiveExample("pages/js/reflect-construct.html")}}
+ + + +

Синтаксис

+ +
Reflect.construct(target, argumentsList[, newTarget])
+
+ +

Параметры

+ +
+
target
+
Целевая функция для вызова.
+
argumentsList
+
Массивоподобный объект указывающий аргументы, с которыми target должна вызываться.
+
newTarget {{optional_inline}}
+
Конструктор, чей прототип должен быть использован. Смотрите также new.target оператор. Если newTarget не указан, то используется target.
+
+ +

Возвращаемое значение

+ +

Новый экземпляр target (или newTarget, если указан), инициализируется target как конструктор с заданными аргументами.

+ +

Исключения

+ +

Исключение {{jsxref("TypeError")}}, если target или newTarget не являются конструкторами.

+ +

Описание

+ +

Reflect.construct() позволяет вам вызывать конструктор с любым числом аргументов (что также возможно с использованием spread syntax вместе с new operator).

+ +
var obj = new Foo(...args);
+var obj = Reflect.construct(Foo, args);
+
+ +

Reflect.construct() против Object.create()

+ +

До появления Reflect, объекты могли быть созданы с использованием произвольной комбинации из конструктора и прототипа при помощи {{jsxref("Object.create()")}}.

+ +
function OneClass() {
+    this.name = 'one';
+}
+
+function OtherClass() {
+    this.name = 'other';
+}
+
+// Данный вызов:
+var obj1 = Reflect.construct(OneClass, args, OtherClass);
+
+// ...будет аналогичен данному:
+var obj2 = Object.create(OtherClass.prototype);
+OneClass.apply(obj2, args);
+
+console.log(obj1.name); // 'one'
+console.log(obj2.name); // 'one'
+
+console.log(obj1 instanceof OneClass); // false
+console.log(obj2 instanceof OneClass); // false
+
+console.log(obj1 instanceof OtherClass); // true
+console.log(obj2 instanceof OtherClass); // true
+
+ +

В любом случае, пока конечный результат один и тот же, существует одно важное отличие в этом процессе. При использовании Object.create() и {{jsxref("Function.prototype.apply()")}}, оператор new.target будет указывать на undefined внутри функции используемой в качестве конструктора, пока ключевое слово new не будет использовано для создания объекта.

+ +

С другой стороны, в случае вызова Reflect.construct(), оператор new.target будет указывать на параметр newTarget если он задан, или target в отличном случае.

+ +
function OneClass() {
+    console.log('OneClass');
+    console.log(new.target);
+}
+function OtherClass() {
+    console.log('OtherClass');
+    console.log(new.target);
+}
+
+var obj1 = Reflect.construct(OneClass, args);
+// Вывод:
+//     OneClass
+//     function OneClass { ... }
+
+var obj2 = Reflect.construct(OneClass, args, OtherClass);
+// Вывод:
+//     OneClass
+//     function OtherClass { ... }
+
+var obj3 = Object.create(OtherClass.prototype);
+OneClass.apply(obj3, args);
+// Вывод:
+//     OneClass
+//     undefined
+
+ +

Примеры

+ +

Использования Reflect.construct()

+ +
var d = Reflect.construct(Date, [1776, 6, 4]);
+d instanceof Date; // true
+d.getFullYear(); // 1776
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.construct', 'Reflect.construct')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-reflect.construct', 'Reflect.construct')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Reflect.construct")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html b/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html new file mode 100644 index 0000000000..b4d2cba107 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html @@ -0,0 +1,98 @@ +--- +title: Reflect.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +tags: + - ECMAScript 2015 + - Method + - Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +--- +
{{JSRef}}
+ +

Статический метод Reflect.defineProperty() похож на {{jsxref("Object.defineProperty()")}}, но возвращает {{jsxref("Boolean")}}.

+ +
{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}
+ + + +

Синтаксис

+ +
Reflect.defineProperty(target, propertyKey, attributes)
+
+ +

Параметры

+ +
+
target
+
Объект, в котором определяется свойство.
+
propertyKey
+
Имя определяемого или изменяемого свойства.
+
attributes
+
Атрибуты для определяемого или изменяемого свойства.
+
+ +

Возвращаемое значение

+ +

Возвращается значение {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.

+ +

Исключения

+ +

Исключение {{jsxref("TypeError")}}, если target не является {{jsxref("Object")}}.

+ +

Описание

+ +

Метод Reflect.defineProperty позволяет точно дополнить или изменить свойство объекта. Для более подробной информации смотрите на аналогичный метод - {{jsxref("Object.defineProperty")}}. Object.defineProperty возвращает объект или выбрасывает исключение {{jsxref("TypeError")}}, если свойство не было успешно определено. Reflect.defineProperty, в любом случае, просто возвращает {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.

+ +

Примеры

+ +

Использования Reflect.defineProperty()

+ +
var obj = {};
+Reflect.defineProperty(obj, 'x', {value: 7}); // true
+obj.x; // 7
+
+ +

Проверка успешно ли было определено свойство

+ +

При использовании {{jsxref("Object.defineProperty")}}, который возвращал объект в случае успеха, либо выбрасывал исключение {{jsxref("TypeError")}}, вы должны были использовать конструкцию try...catch для того, чтобы поймать ошибку, которая случилась при определении свойства. Потому что Reflect.defineProperty возвращает {{jsxref("Boolean")}} в любом случае, вы можете использовать конструкцию if...else:

+ +
if (Reflect.defineProperty(target, property, attributes)) {
+  // успех
+} else {
+  // неудача
+}
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Reflect.defineProperty")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html b/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html new file mode 100644 index 0000000000..64ba452ae5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html @@ -0,0 +1,92 @@ +--- +title: Reflect.deleteProperty() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty +--- +
{{JSRef}}
+ +

Статический метод Reflect.deleteProperty() позволяет удалять свойства из объекта. Реализация данной функции схожа с оператором delete.

+ +
{{EmbedInteractiveExample("pages/js/reflect-deleteproperty.html", "taller")}}
+ + + +

Синтаксис

+ +
Reflect.deleteProperty(target, propertyKey)
+
+ +

Параметры

+ +
+
target
+
Целевой объект в котором будет удалено свойство.
+
propertyKey
+
Имя удаляемого свойства.
+
+ +

Возвращаемое значение

+ +

{{jsxref("Boolean")}} указывающий, было ли свойство успешно удалено.

+ +

Исключения

+ +

Исключение {{jsxref("TypeError")}}, если target не является {{jsxref("Object")}}.

+ +

Описание

+ +

Метод Reflect.deleteProperty позволяет вам удалить свойство объекта. Он возвращает {{jsxref("Boolean")}} указывающий, было ли свойство успешно удалено. Он так же идентичен оператору delete без использования строгого режима.

+ +

Примеры

+ +

Использования Reflect.deleteProperty()

+ +
var obj = { x: 1, y: 2 };
+Reflect.deleteProperty(obj, 'x'); // true
+obj; // { y: 2 }
+
+var arr = [1, 2, 3, 4, 5];
+Reflect.deleteProperty(arr, '3'); // true
+arr; // [1, 2, 3, , 5]
+
+// Возвращает true даже если такого свойства не существует
+Reflect.deleteProperty({}, 'foo'); // true
+
+// Возвращает false если такое свойство ненастраивоемое
+Reflect.deleteProperty(Object.freeze({foo: 1}), 'foo'); // false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.deleteproperty', 'Reflect.deleteProperty')}}{{Spec2('ES2015')}}Начальное определение.
{{SpecName('ESDraft', '#sec-reflect.deleteproperty', 'Reflect.deleteProperty')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Reflect.deleteProperty")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/get/index.html b/files/ru/web/javascript/reference/global_objects/reflect/get/index.html new file mode 100644 index 0000000000..96d70ed7e7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/get/index.html @@ -0,0 +1,99 @@ +--- +title: Reflect.get() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/get +tags: + - ECMAScript 2015 + - JavaScript + - Reflect + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/get +--- +
{{JSRef}}
+ +

Статический метод Reflect.get() работает также, словно если бы мы получали свойство объекта (target[propertyKey]) с помощью функции.

+ +
{{EmbedInteractiveExample("pages/js/reflect-get.html")}}
+ + + +

Синтаксис

+ +
Reflect.get(target, propertyKey[, receiver])
+
+ +

Параметры

+ +
+
target
+
Объект, к свойству которого идёт обращение.
+
propertyKey
+
Название свойства, значение которого необходимо получить.
+
receiver {{optional_inline}}
+
Значение, которое получит переменная this при вызове геттера.
+
+ +

Возвращаемое значение

+ +

Значение свойства propertyKey.

+ +

Исключения

+ +

{{jsxref("TypeError")}}, если target не {{jsxref("Object")}}.

+ +

Описание

+ +

Метод Reflect.get позволяет получить значение свойства некоторого объекта. Он похож на обычный доступ к значению свойства объекта значению свойства объекта, только с синтаксисом функции.

+ +

Примеры

+ +

Использование Reflect.get()

+ +
// Объект
+var obj = { x: 1, y: 2 };
+Reflect.get(obj, 'x'); // 1
+
+// Мессив
+Reflect.get(['ноль', 'один'], 1); // "один"
+
+// Proxy, перехватывающий get
+var x = {p: 1};
+var obj = new Proxy(x, {
+  get(t, k, r) { return k + 'bar'; }
+});
+Reflect.get(obj, 'foo'); // "foobar"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.get', 'Reflect.get')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-reflect.get', 'Reflect.get')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ + + +

{{Compat("javascript.builtins.Reflect.get")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/index.html b/files/ru/web/javascript/reference/global_objects/reflect/index.html new file mode 100644 index 0000000000..0eb627a905 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/index.html @@ -0,0 +1,153 @@ +--- +title: Reflect +slug: Web/JavaScript/Reference/Global_Objects/Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect +--- +
{{JSRef}}
+ +

Reflect - это встроенный объект, который предоставляет методы для перехватывания JavaScript операций. Эти методы аналогичны методам proxy handler`ов. Reflect - это не функциональный, а простой объект, он не является сконструированным.

+ +

Описание

+ +

В отличие от большинства глобальных объектов, Reflect - это не конструктор. Вы не можете использовать его с оператором new или вызывать Reflect, как функцию. Все свойства и методы объекта Reflect являются статическими (так же, как и у объекта {{jsxref("Math")}}).

+ +

Методы

+ +

Объект Reflect обеспечивает работу статических функций, называющиеся так же, как методы proxy handler`а. Некоторые из этих методов - те же, что и соответствующие им методы класса {{jsxref("Object")}}.

+ +
+
{{jsxref("Reflect.apply()")}}
+
Вызывает целевую функцию с аргументами, переданными в параметре args. Смотрите также {{jsxref("Function.prototype.apply()")}}.
+
{{jsxref("Reflect.construct()")}}
+
 Оператор new как функция. Аналогично new target(...args). Также предоставляет возможность определить другой прототип.
+
{{jsxref("Reflect.defineProperty()")}}
+
Похож на {{jsxref("Object.defineProperty()")}}. Возвращает {{jsxref("Boolean")}}.
+
{{jsxref("Reflect.deleteProperty()")}}
+
Оператор delete как функция. Аналогично delete target[name].
+
{{jsxref("Reflect.enumerate()")}}
+
Похож на цикл for...in. Возвращает итератор с собственными перечисляемыми и наследуемыми свойствами целевого объекта.
+
{{jsxref("Reflect.get()")}}
+
Функция, которая возвращает значение свойств.
+
{{jsxref("Reflect.getOwnPropertyDescriptor()")}}
+
Аналогично {{jsxref("Object.getOwnPropertyDescriptor()")}}. Возвращает дескриптор указанного свойства если присутствует в объекте, иначе {{jsxref("undefined")}}.
+
{{jsxref("Reflect.getPrototypeOf()")}}
+
Аналогично {{jsxref("Object.getPrototypeOf()")}}.
+
{{jsxref("Reflect.has()")}}
+
Оператор in как функция. Возвращает значение {{jsxref("Boolean")}} в зависимости от факта наличия собственного или наследованного свойства.
+
{{jsxref("Reflect.isExtensible()")}}
+
Аналогично {{jsxref("Object.isExtensible()")}}.
+
{{jsxref("Reflect.ownKeys()")}}
+
Возвращает массив строк с именами собственных (не наследованных) свойств.
+
{{jsxref("Reflect.preventExtensions()")}}
+
Аналогично {{jsxref("Object.preventExtensions()")}}. Возвращает {{jsxref("Boolean")}}.
+
{{jsxref("Reflect.set()")}}
+
Функция, присваивающая значения свойствам. Возвращает {{jsxref("Boolean")}} значение true при успешном выполнении.
+
{{jsxref("Reflect.setPrototypeOf()")}}
+
Функция, присваивающая прототип целевому объекту.
+
+ +

Примеры

+ +

Проверка наличия конкретных свойств у объекта

+ +
const duck = {
+  name: 'Maurice',
+  color: 'white',
+  greeting: function() {
+    console.log(`Quaaaack! My name is ${this.name}`);
+  }
+}
+
+Reflect.has(duck, 'color');
+// true
+Reflect.has(duck, 'haircut');
+// false
+ +

Возврат собственных ключей объекта

+ +
Reflect.ownKeys(duck);
+// [ "name", "color", "greeting" ]
+ +

Добавление нового свойства в объект

+ +
Reflect.set(duck, 'eyes', 'black');
+// вернется "true" если вызов успешен
+// объект "duck" теперь содержит свойство 'eyes' со знчением 'black'
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-reflect-object', 'Reflect')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("44")}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html new file mode 100644 index 0000000000..a218116d09 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html @@ -0,0 +1,89 @@ +--- +title: Reflect.ownKeys() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys +--- +
{{JSRef}}
+ +

Статический метод Reflect.ownKeys() возвращает массив имен, а также Symbols собственных полей объекта target .

+ +
{{EmbedInteractiveExample("pages/js/reflect-ownkeys.html")}}
+ + + +

Синтаксис

+ +
Reflect.ownKeys(target)
+
+ +

Параметры

+ +
+
target
+
Объект target, из которого получаем собственные ключи.
+
+ +

Возвращаемое значение

+ +

Массив {{jsxref("Array")}} собственных полей объекта target.

+ +

Исключения

+ +

Выбрасывает ислючение {{jsxref("TypeError")}}, если target не является {{jsxref("Object")}}.

+ +

Описание

+ +

Метод Reflect.ownKeys возвращает массив собственных ключей объекта target. Эквивалентом этого метода является {{jsxref("Object.getOwnPropertyNames")}}(target).concat({{jsxref("Object.getOwnPropertySymbols")}}(target)).

+ +

Примеры

+ +

Использование Reflect.ownKeys()

+ +
Reflect.ownKeys({z: 3, y: 2, x: 1}); // [ "z", "y", "x" ]
+Reflect.ownKeys([]); // ["length"]
+
+var sym = Symbol.for('comet');
+var sym2 = Symbol.for('meteor');
+var obj = {[sym]: 0, 'str': 0, '773': 0, '0': 0,
+           [sym2]: 0, '-1': 0, '8': 0, 'second str': 0};
+Reflect.ownKeys(obj);
+// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
+// Индексы в порядке их перечисления,
+// Строки в порядке их ввода,
+// Symbols в порядке их ввода
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.ownkeys', 'Reflect.ownKeys')}}{{Spec2('ES2015')}}Начальное определение.
{{SpecName('ESDraft', '#sec-reflect.ownkeys', 'Reflect.ownKeys')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Reflect.ownKeys")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html b/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html new file mode 100644 index 0000000000..ee37017a2a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html @@ -0,0 +1,116 @@ +--- +title: 'RegExp.prototype[@@search]()' +slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@search +tags: + - JavaScript + - Prototype + - Reference + - RegExp + - метод + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@search +--- +
{{JSRef}}
+ +

Метод [@@search]() выполняет поиск совпадения между регулярным выражением this и строкой.

+ +

Синтаксис

+ +
regexp[Symbol.search](str)
+ +

Параметры

+ +
+
str
+
{{jsxref("String")}}, являющийся объектом поиска.
+
+ +

Возвращаемое значение

+ +
+
integer
+
В случае успеха, [@@search]() вернёт индекс первого совпадения регулярного выражения внутри строки. В противном случае, он вернёт -1.
+
+ +

Описание

+ +

Этот метод вызывается внутрнее в {{jsxref("String.prototype.search()")}}. Например, два следующих примера вернут один и тот же результат.

+ +
'abc'.search(/a/);
+
+/a/[Symbol.search]('abc');
+ +

Этот метод существует для настройки поведения поиска в подклассах RegExp.

+ +

Примеры

+ +

Прямой вызов

+ +

Этот метод можно использовать почти так же, как {{jsxref("String.prototype.search()")}}, за исключением другого this и другого порядка аргументов.

+ +
var re = /-/g;
+var str = '2016-01-02';
+var result = re[Symbol.search](str);
+console.log(result);  // 4
+
+ +

Используя @@search в подклассах

+ +

Подкласс {{jsxref("RegExp")}} может быть перезаписан с помощью метода [@@search]() для изменения поведения.

+ +
class MyRegExp extends RegExp {
+  constructor(str) {
+    super(str)
+    this.pattern = str;
+  }
+  [Symbol.search](str) {
+    return str.indexOf(this.pattern);
+  }
+}
+
+var re = new MyRegExp('a+b');
+var str = 'ab a+b';
+var result = str.search(re); // String.prototype.search calls re[@@search].
+console.log(result); // 3
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.RegExp.@@search")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html new file mode 100644 index 0000000000..8a0e07c804 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html @@ -0,0 +1,113 @@ +--- +title: 'RegExp.prototype[@@split]()' +slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@split +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@split +--- +
{{JSRef}}
+ +

[@@split]() метод делит объект {{jsxref("String")}}  в массив сторок, путём разбиения строки на подстроки.

+ +
{{EmbedInteractiveExample("pages/js/regexp-prototype-@@split.html")}}
+ + + +

Синтаксис

+ +
regexp[Symbol.split](str[, limit])
+ +

Параметры

+ +
+
str
+
Цель разбиения.
+
limit
+
+

Необязательное. Целое число ограничивающее кол-во рабиений. [@@split]() метод разбивает все совпадения this RegExp шаблона, до тех пор пока не достигнет числа limit или строка будет короче this шаблона.

+
+
+ +

Возвращаемое значение

+ +

{{jsxref("Array")}} содержит подстроки как элементы.

+ +

Описание

+ +

Этот метод вызывает {{jsxref("String.prototype.split()")}}, если аргумент separator объект {{jsxref("RegExp")}}. Для примера, два данных выражения возвращают одинаковый результат.

+ +
'a-b-c'.split(/-/);
+
+/-/[Symbol.split]('a-b-c');
+ +

Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.

+ +

Если аргумент str не объект типа {{jsxref("RegExp")}}, метод {{jsxref("String.prototype.split()")}} не вызывается, так же не создается объект типа {{jsxref("RegExp")}}.

+ +

Примеры

+ +

Прямой вызов

+ +

Этот метод может быть использован, так же как {{jsxref("String.prototype.split()")}}, кроме случаев когда this отличаются и аргументы идут в разном порядке.

+ +
var re = /-/g;
+var str = '2016-01-02';
+var result = re[Symbol.split](str);
+console.log(result);  // ["2016", "01", "02"]
+
+ +

Использование @@split в подклассах

+ +

Подклассы {{jsxref("RegExp")}} могут переопределить [@@split]() для изменения дефольтного поведения.

+ +
class MyRegExp extends RegExp {
+  [Symbol.split](str, limit) {
+    var result = RegExp.prototype[Symbol.split].call(this, str, limit);
+    return result.map(x => "(" + x + ")");
+  }
+}
+
+var re = new MyRegExp('-');
+var str = '2016-01-02';
+var result = str.split(re); // String.prototype.split calls re[@@split].
+console.log(result); // ["(2016)", "(01)", "(02)"]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.RegExp.@@split")}}

+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html b/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..fdd7c92041 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,228 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Метод exec() выполняет поиск сопоставления регулярного выражения в указанной строке. Возвращает массив с результатами или {{jsxref("null")}}.

+ +

Если целью выполнения является просто определить, проходит оно или нет, используйте метод {{jsxref("RegExp.prototype.test()")}}, либо метод строки {{jsxref("String.prototype.search()")}}.

+ +

Синтаксис

+ +
regexObj.exec(str)
+ +

Параметры

+ +
+
str
+
Строка, с которой производится сопоставление регулярного выражения.
+
+ +

Возвращаемое значение

+ +

Если сопоставление успешно выполнилось, метод exec() возвращает массив и обновляет свойства объекта регулярного выражения. Возвращаемый массив в первом элементе содержит сопоставленный текст, а в последующих элементах — текст, захваченный при сопоставлении круглыми скобками.

+ +

Если сопоставление не удалось, метод exec() возвращает {{jsxref("null")}}.

+ +

Описание

+ +

Рассмотрим следующий пример:

+ +
// Сопоставляется с фразой «кайф, сплющь», за которой следует слово «вши»,
+// игнорируя любые символы между ними. Запоминает слова «сплющь» и «вши».
+// Игнорирует регистр символов.
+var re = /кайф,\s(сплющь).+?(вши)/ig;
+var result = re.exec('Эх, чужд кайф, сплющь объём вши, грызя цент.');
+
+ +

Таблица ниже показывает результаты выполнения данного примера:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ОбъектСвойство/ИндексОписаниеПример
result[0]Все сопоставившиеся символы в строке.кайф, сплющь объём вши
[1], ...[n]Сопоставившиеся подстроки в круглых скобках, если они присутствуют. Количество возможных подстрок ничем не ограничено.[1] = сплющь
+ [2] = вши
indexИндекс сопоставления в строке, начинается с нуля.9
inputОригинальная строка.Эх, чужд кайф, сплющь объём вши, грызя цент.
relastIndexИндекс, с которого начнётся следующая попытка сопоставления. Если отсутствует флаг "g", остаётся равным нулю.31
ignoreCaseУказывает, что в регулярном выражении используется флаг игнорирования регистра "i".true
globalУказывает, что в регулярном выражении используется флаг глобального сопоставления "g".true
multilineУказывает, что в регулярном выражении используется флаг сопоставления по нескольким строкам "m".false
sourceТекст шаблона регулярного выражения.кайф,\s(сплющь).+?(вши)
+ +

Примеры

+ +

Пример: поиск последовательных сопоставлений

+ +

Если ваше регулярное выражение использует флаг "g", вы можете использовать метод exec() несколько раз для нахождения последовательных сопоставлений в одной и той же строке. Если вы сделаете это, поиск начнётся по подстроке строки str, начало которой определяется свойством {{jsxref("RegExp.lastIndex", "lastIndex")}} регулярного выражения (метод {{jsxref("RegExp.prototype.test()", "test()")}} также увеличивает свойство {{jsxref("RegExp.lastIndex", "lastIndex")}}). Например, предположим, что у вас есть следующий скрипт:

+ +
var myRe = /аб*/g;
+var str = 'аббвгдеабж';
+var myArray;
+while ((myArray = myRe.exec(str)) !== null) {
+  var msg = 'Найдено ' + myArray[0] + '. ';
+  msg += 'Следующее сопоставление начнётся с позиции ' + myRe.lastIndex;
+  console.log(msg);
+}
+
+ +

Этот скрипт выведет следующий текст:

+ +
Найдено абб. Следующее сопоставление начнётся с позиции 3
+Найдено аб. Следующее сопоставление начнётся с позиции 9
+
+ +

Примечание: не помещайте литерал регулярного выражения (или конструктор {{jsxref("RegExp")}}) внутрь условия while; это приведёт к бесконечному циклу, поскольку свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} будет сбрасываться в ноль на каждой итерации цикла. Также убедитесь, что установлен флаг глобального сопоставления, в противном случае цикл будет бесконечным.

+ +

Пример: использование метода exec() вместе с литералами регулярного выражения

+ +

Вы можете использовать метод exec() без создания объекта {{jsxref("RegExp")}}:

+ +
var matches = /(привет \S+)/.exec('Это привет миру!');
+console.log(matches[1]);
+
+ +

Скрипт выведет в журнал строку «привет миру!».

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.10.6.21', 'RegExp.exec')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-regexp.prototype.exec', 'RegExp.exec')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html b/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html new file mode 100644 index 0000000000..c69b279c3e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html @@ -0,0 +1,120 @@ +--- +title: RegExp.prototype.flags +slug: Web/JavaScript/Reference/Global_Objects/RegExp/flags +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/flags +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Свойство flags возвращает строку, состоящую из флагов текущего регулярного выражения.

+ +

Описание

+ +

Флаги в свойстве flags упорядочены по алфавиту (слева направо, то есть "gimuy").

+ +

Примеры

+ +

Пример: использование свойства flags

+ +
/foo/ig.flags;   // "gi"
+/bar/myu.flags;  // "muy"
+
+ +

Полифилл

+ +
if (RegExp.prototype.flags === undefined) {
+  Object.defineProperty(RegExp.prototype, 'flags', {
+    configurable: true,
+    get: function() {
+      return this.toString().match(/[gimuy]*$/)[0];
+    }
+  });
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-get-regexp.prototype.flags', 'RegExp.prototype.flags')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("37")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/global/index.html b/files/ru/web/javascript/reference/global_objects/regexp/global/index.html new file mode 100644 index 0000000000..ea31bfb150 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/global/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.global +slug: Web/JavaScript/Reference/Global_Objects/RegExp/global +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/global +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Свойство global указывает, использовался ли в определении регулярного выражения флаг "g". Свойство global является свойством только для чтения и принадлежит экземпляру регулярного выражения.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Значение свойства global имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит true, если при определении регулярного выражения использовался флаг "g"; в противном случае оно содержит false. Флаг "g" указывает на то, что регулярное выражение должно проверять все возможные сопоставления в строке.

+

Вы не можете напрямую изменить это свойство.

+ +

Примеры

+ +

Пример: использование свойства global

+
var regex = new RegExp('foo', 'g');
+
+console.log(regex.global); // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
+ JavaScript 1.5: свойство global является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.2', 'RegExp.prototype.global')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-get-regexp.prototype.global', 'RegExp.prototype.global')}}{{Spec2('ES6')}}Свойство global теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html b/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html new file mode 100644 index 0000000000..f8888887b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.ignoreCase +slug: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Свойство ignoreCase указывает, использовался ли в определении регулярного выражения флаг "i". Свойство ignoreCase является свойством только для чтения и принадлежит экземпляру регулярного выражения.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Значение свойства ignoreCase имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит true, если при определении регулярного выражения использовался флаг "i"; в противном случае оно содержит false. Флаг "i" указывает на то, что регистр символов в строке, с которой сопоставляется регулярное выражение, должен игнорироваться.

+

Вы не можете напрямую изменить это свойство.

+ +

Примеры

+ +

Пример: использование свойства ignoreCase

+
var regex = new RegExp('foo', 'i');
+
+console.log(regex.ignoreCase); // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
+ JavaScript 1.5: свойство ignoreCase является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.3', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}{{Spec2('ES6')}}Свойство ignoreCase теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/index.html b/files/ru/web/javascript/reference/global_objects/regexp/index.html new file mode 100644 index 0000000000..9a864bee32 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/index.html @@ -0,0 +1,665 @@ +--- +title: RegExp +slug: Web/JavaScript/Reference/Global_Objects/RegExp +tags: + - Constructor + - JavaScript + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Конструктор RegExp создаёт объект регулярного выражения для сопоставления текста с шаблоном.

+ +

Введение в то, что представляют собой регулярные выражения, читайте в главе «Регулярные выражения» в руководстве по JavaScript.

+ +
{{EmbedInteractiveExample("pages/js/regexp-constructor.html")}}
+ + + +

Синтаксис

+ +

Возможны как литеральная запись, так и запись через конструктор:

+ +
/pattern/flags
+new RegExp(pattern, flags)
+
+ +

Параметры

+ +
+
pattern
+
Текст регулярного выражения.
+
flags
+
+

Если определён, может принимать любую комбинацию нижеследующих значений:

+ +
+
g
+
глобальное сопоставление
+
i
+
игнорирование регистра при сопоставлении
+
m
+
сопоставление по нескольким строкам; символы начала и конца (^ и $) начинают работать по нескольким строкам (то есть, происходит сопоставление с началом или концом каждой строки (строки разделяются символами \n или \r), а не только с началом или концом всей вводимой строки)
+
y {{experimental_inline}}
+
«липкий» поиск; сопоставление в целевой строке начинается с индекса, на который указывает свойство lastIndex этого регулярного выражения (и не пытается сопоставиться с любого более позднего индекса).
+
+
+
+ +

Описание

+ +

Существует два способа создания объекта RegExp: литеральная запись и использование конструктора. При записи строк параметры в литеральной записи не используют символы кавычек, в то время как параметры функции-конструктора используют кавычки. Так что следующие выражения создают одинаковые регулярные выражения:

+ +
/ab+c/i;
+new RegExp('ab+c', 'i');
+
+ +

Литеральная запись обеспечивает компиляцию регулярного выражения при вычислении выражения. Используйте литеральную запись если регулярное выражение будет неизменным. Например, если вы используете литеральную запись для конструирования регулярного выражения, используемого в цикле, регулярное выражение не будет перекомпилироваться на каждой итерации.

+ +

Конструктор объекта регулярного выражения, например, new RegExp('ab+c'), обеспечивает компиляцию регулярного выражения во время выполнения. Используйте функцию-конструктор, если вы знаете, что шаблон регулярного выражения будет меняться или если вы не знаете шаблон и получаете его из внешних источников, например, из пользовательского ввода.

+ +

При использовании функции-конструктора необходимо использовать обычные правила экранирования в строках (предварять специальные символы символом обратного слеша «\»). Например, следующие выражения эквивалентны:

+ +
var re = /\w+/;
+var re = new RegExp('\\w+');
+
+ +

Значение специальных символов в регулярных выражениях

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Символьные классы
СимволЗначение
. +

(Точка, десятичная запятая) сопоставляется с любым символом за исключением символов новой строки: \n, \r, \u2028 или \u2029.

+ +

Обратите внимание, что флаг многострочности m не изменяет поведение точки. Так что для сопоставления с шаблона с несколькими строками используйте набор символов [^] (конечно, если только вам не нужно поддерживать старые версии IE), он сопоставляется с любым символом, включая символы новой строки.

+ +

Например, шаблон /.н/ сопоставляется с подстрокой «ан», но не подстрокой «ну», во фразе «ну что, потанцуем».

+
\d +

Сопоставляется с символом цифры в базовом латинском алфавите. Эквивалентен набору символов [0-9].

+ +

Например, шаблоны /\d/ и /[0-9]/ сопоставляются с подстрокой «2» в строке «B2 — это номер люкс».

+
\D +

Сопоставляется с любым символом, который не является цифрой в базовом латинском алфавите. Эквивалентен набору символов [^0-9].

+ +

Например, шаблоны /\D/ и /[^0-9]/ сопоставляются с подстрокой «B» в строке «B2 — это номер люкс».

+
\w +

Сопоставляется с любым алфавитно-цифровым символом из базового латинского алфавита, включая символ подчёркивания. Эквивалентен набору символов [A-Za-z0-9_].

+ +

Например, шаблон /\w/ сопоставляется с подстрокой «a» в строке «apple», с подстрокой «5» в строке «$5.28» и с подстрокой «3» в строке «3D».

+
\W +

Сопоставляется с любым символом из базового латинского алфавита, не являющимся символом, из которых состоят слова. Эквивалентен набору символов [^A-Za-z0-9_].

+ +

Например, шаблоны /\W/ и /[^A-Za-z0-9_]/ сопоставляются с подстрокой «%» в строке «50%».

+
\s +

Сопоставляется с одиночным пробельным символом, который включает в себя пробел, табуляцию, подачу страницы, перевод строки и другие пробельные символы Юникода. Эквивалентен набору символов [ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000].

+ +

Например, шаблон /\s\w*/ сопоставляется с подстрокой « bar» в строке «foo bar».

+
\S +

Сопоставляется с одиночным символом, не являющимся пробельным. Эквивалентен набору символов [^ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u202f\u205f​\u3000].

+ +

Например, шаблон /\S\w*/ сопоставляется с подстрокой «foo» в строке «foo bar».

+
\tСопоставляется с символом табуляции.
\rСопоставляется с символом возврата каретки.
\nСопоставляется с символом перевода строки.
\vСопоставляется с символом вертикальной табуляции.
\fСопоставляется с символом подачи страницы.
[\b]Сопоставляется с символом забоя (не перепутайте его с символьным классом \b).
\0Сопоставляется с нулевым символом. Не ставьте за ним другую цифру.
\cX +

Где X является буквой от «A» до «Z». Сопоставляется с управляющим символом в строке.

+ +

Например, шаблон /\cM/ сопоставляется с символом control-M в строке.

+
\xhhСопоставляется с символом с кодом hh (две шестнадцатеричные цифры).
\uhhhhСопоставляется с символом со значением Юникода hhhh (четыре шестнадцатеричные цифры).
\ +

Для символов, которые обычно трактуются буквально, указывает, что следующий символ является специальным и не должен интерпретироваться буквально.

+ +

Например, шаблон /b/ сопоставляется с символом «b». Поместив перед ним символ обратного слеша, то есть превратив шаблон в /\b/, символ приобретёт специальное значение, обозначающее сопоставление с границей слова.

+ +

или

+ +

Для символов, которые обычно трактуются специальным образом, указывает, что следующий символ не является специальным и должен интерпретироваться буквально.

+ +

Например, звёздочка «*» является специальным символом, обозначающим ноль или более вхождений предшествующего символа при сопоставлении; поэтому шаблон /a*/ означает сопоставление с нулём или более символов «a». Для буквального сопоставления со звёздочкой * предварите её символом обратного слеша; например, шаблон /a\*/ сопоставляется со строкой «a*».

+
Наборы символов
СимволЗначение
[xyz] +

Набор символов. Сопоставляется с любым из заключённых в квадратные скобки символов. С помощью дефиса вы можете определить диапазон символов.

+ +

Например, шаблон [абвгд] означает тоже самое, что и шаблон [а-д]. Они сопоставляются с символом «г» в слове «грудинка» и символом «б» в слове «отбивная».

+
[^xyz] +

Отрицательный или дополнительный набор символов. То есть он сопоставляется со всеми символами, что не заключены в квадратные скобки. С помощью дефиса вы можете определить диапазон символов.

+ +

Например, шаблон [^абвгд] означает тоже самое, что и шаблон [^а-д]. Они сопоставляются с символом «е» в слове «бекон» и символом «о» в слове «отбивная».

+
Границы
СимволЗначение
^ +

Сопоставляется c началом ввода. Если установлен флаг многострочности, также сопоставляется с позицией сразу за символом переноса строки.

+ +

Например, шаблон /^Б/ не сопоставляется с буквой «Б» в строке «буква Б», но сопоставляеся с первой буквой «Б» в строке «Буква Б».

+
$ +

Сопоставляется c концом ввода. Если установлен флаг многострочности, также сопоставляется с позицией сразу перед символом переноса строки.

+ +

Например, шаблон /т$/ не сопоставляется с буквой «т» в слове «кормить», но сопоставляеся с ней в слове «кормит».

+
\b +

Сопоставляется с границей слова нулевой ширины, например с позицией между буквой и пробелом (не путайте его с набором символов [\b]).

+ +

Например, шаблон /\bпол/ сопоставляется с подстрокой «пол» в строке «в полдень»; шаблон /но\b/ сопоставляется с подстрокой «но» в строке «возможно завтра».

+
\B +

Сопоставляется с границей не-слов нулевой ширины, например с позицией между двумя буквами или двумя пробелами.

+ +

Например, шаблон /\Bдень/ сопоставляется с подстрокой «день» в строке «в полдень»; шаблон /за\B/ сопоставляется с подстрокой «за» в строке «возможно завтра».

+
Группировка и обратные ссылки
СимволЗначение
(x) +

Сопоставляется с x и запоминает сопоставление. Называется «захватывающие скобки».

+ +

Например, шаблон /(foo)/ сопоставлется с подстрокой «foo» и запоминает её в строке «foo bar». Сопоставленую подстроку можно достать из элементов [1], ..., [n] результирующего массива или из предопределённых свойств $1, ..., $9 объекта RegExp.

+ +

Захват групп ведёт к проседанию производительности. Если вам не нужно повторно ссылаться на захваченную подстроку, лучше использовать скобки без захвата (смотрите ниже).

+
\n +

Где n является целым положительным числом. Обратная ссылка на последнюю сопоставившуюся подстроку в n-ных по счёту круглых скобках в регулярном выражении (нумерация скобок идет слева направо).

+ +

Например, шаблон /яблоко(,)\sапельсин\1/ сопоставится подстроке «яблоко, апельсин,» в строке «яблоко, апельсин, вишня, персик». Более подробный пример смотрите после этой таблицы.

+
(?:x)Сопоставляется с x, но не запоминает сопоставление. Называется «незахватывающие скобки». Сопоставленную подстроку нельзя достать из элементов [1], ..., [n] результирующего массива или из предопределённых свойств $1, ..., $9 объекта RegExp.
Квантификаторы
СимволЗначение
x* +

Сопоставляется с предшествующим элементом x ноль или более раз.

+ +

Например, шаблон /ела*/ сопоставляется с подстрокой «ел» в строке «Призрак просвистел» и подстрокой «ела» в строке «Птица пропела», но ни с чем не сопоставится в строке «Козёл хмыкнул».

+
x+ +

Сопоставляется с предшествующим элементом x один или более раз. Эквивалентен квантификатору {1,}.

+ +

Например, шаблон /о+/ сопоставляется с символом «о» в строке «конфета» и со всеми символами «о» в строке «коооооонфета».

+
x*?
+ x+?
+

Сопоставляется с предшествующим элементом x подобно квантификаторам * и +, описанным выше, однако ищет минимально возможное сопоставление.

+ +

Например, шаблон /".*?"/ сопоставляется с подстрокой «"foo"» в строке «"foo" "bar"» и не сопоставляется со строкой «"foo" "bar"», поскольку за звёздочкой * следует символ вопроса ?.

+
x? +

Сопоставляется с предшествующим элементом x ноль или один раз.

+ +

Например, шаблон /о?то?/ сопоставляется с подстрокой «от» в строке «кот» и подстрокой «то» в строке «ток».

+ +

Если символ используется сразу после какого-то из квантификаторов *, +, ?, или {}, то он делает этот квантификатор «нежадным» (сопоставление происходит минимально возможное количество раз), в противоположность «жадному» поведению квантификатора по умолчанию (сопоставление происходит максимально возможное количество раз).

+ +

Также символ используется в квантификаторах предпросмотра (?=), (?!) и (?:), также описанных в этой таблице.

+
x(?=y)Сопоставлется с x, только если за x следует y. Например, шаблон /Джек(?=Шпрот)/ сопоставлется со строкой «Джек» только если за ней следует строка «Шпрот». Шаблон /Джек(?=Шпрот|Мороз)/ сопоставлется со строкой «Джек» только если за ней следуют строки «Шпрот» или «Мороз». Однако, ни «Шпрот», ни «Мороз» не являются частью результата сопоставления.
x(?!y) +

Сопоставлется с x, только если за x не следует y. Например, шаблон /\d+(?!\.)/ сопоставляется с числом только если за ним не следует десятичная запятая.

+ +

Выражение /\d+(?!\.)/.exec('3.141') сопоставится с «141» но не с «3.141».

+
(?<=y)x +

Сопоставляется с x, только если x предшествует y

+ +

Например, /(?<=Пётр)Иванов/ сопоставится с "Иванов" только если ему будет предшествовать "Петр".
+ /(?<=Пётр|Владислав)Иванов/ сопоставится с "Иванов" только если ему будет предшествовать "Пётр" или "Владислав".
+ В любом случае, ни "Пётр" ни "Владислав" не войдут в результат сопоставления.

+
(?<!y)x + + + + + + +
+

Сопоставляется с x, только если x не предшествует y

+ +

Например, /(?<!-)\d+/ сопоставится с цифрой, только если ей не предшествует минус.
+ /(?<!-)\d+/.exec('3') вернет "3".
+  /(?<!-)\d+/.exec('-3')  не сопоставится с цифрой, тк цифре перед цифрой 3 присутствует минус.

+
+
x|y +

Сопоставляется либо с x, либо с y.

+ +

Например, шаблон /зелёное|красное/ сопоставится с подстрокой «зелёное» в строке «зелёное яблоко» и подстрокой «красное» в строке «красное яблоко».

+
x{n} +

Где n является целым положительным числом. Сопоставляется точно с n вхождениями предшествующего элемента x.

+ +

Например, шаблон /о{2}/ не сопоставится с символом «о» в слове «конфета», но сопоставится со всеми символами «о» в слове «коонфета» и с первыми двумя символами «о» в слове «кооонфета».

+
x{n,} +

Где n является целым положительным числом. Сопоставляется по крайней мере с n вхождениями предшествующего элемента x.

+ +

Например, шаблон /о{2,}/ не сопоставится с символом «о» в слове «конфета», но сопоставится со всеми символами «о» в словах «коонфета» и даже в «кооооооонфета».

+
x{n,m} +

Где n и m являются целыми положительными числами. Сопоставляется по крайней мере с n но не более, чем с m вхождениями предшествующего элемента x.

+ +

Например, шаблон /о{1,3}/ ни с чем не сопоставится в слове «кнфета», с символом «о» в слове «конфета», с двумя символами «о» в слове «коонфета» и с первыми тремя символами «о» в слове «кооооооонфета». Обратите внимание, что при сопоставлении со словом «кооооооонфета» сопоставиласть только подстрока «ооо», хотя слово содержало гораздо больше символов «о».

+
+ +

Свойства

+ +
+
{{jsxref("RegExp.prototype")}}
+
Позволяет добавлять свойства ко всем объектам регулярных выражений.
+
RegExp.length
+
Значение RegExp.length равно 2.
+
+ +
{{jsOverrides("Function", "Properties", "prototype")}}
+ +

Методы

+ +

Глобальный объект RegExp не имеет собственных методов, однако, он наследует некоторые методы через цепочку прототипов.

+ +
{{jsOverrides("Function", "Methods", "prototype")}}
+ +

Экземпляры регулярного выражения

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: использование регулярных выражений для смены формата данных

+ +

Следующий скрипт использует метод {{jsxref("String.prototype.replace()", "replace()")}} экземпляра строки {{jsxref("Global_Objects/String", "String")}} для сопоставления с именем в формате имя фамилия и выводит его в формате фамилия, имя. В тесте замены скрипт использует заменители $1 и $2, которые заменяются на результаты соответствующих сопоставившихся подгрупп регулярного выражения.

+ +
var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr);
+
+// пример с русскими буквами
+var re = /([а-яё]+)\s([а-яё]+)/i;
+var str = 'Джон Смит';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr);
+
+ +

Пример выведет «Smith, John» и «Смит, Джон»

+ +

Пример: использование регулярного выражения для разбиения строк с различными символами конца строки

+ +

Символы конца строки различаются на различных платформах (Unix, Windows и так далее). Разбиение строк из этого примера работает на всех платформах.

+ +
var text = 'Некоторый текст\nЕщё текст\r\nИ ещё\rЭто конец';
+var lines = text.split(/\r\n|\r|\n/);
+console.log(lines); // выведет [ 'Некоторый текст', 'Ещё текст', 'И ещё', 'Это конец' ]
+
+ +

Обратите внимание, что порядок шаблонов в регулярном выражении имеет значение.

+ +

Пример: использование регулярных выражений на нескольких строках

+ +
var s = 'Please yes\nmake my day!';
+s.match(/yes.*day/);
+// Вернёт null
+s.match(/yes[^]*day/);
+// Вернёт 'yes\nmake my day'
+
+ +

Пример: использование регулярных выражений с флагом «липучести»

+ +

Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.

+ +
var text = 'Первая строка\nВторая строка';
+var regex = /(\S+) строка\n?/y;
+
+var match = regex.exec(text);
+console.log(match[1]);        // напечатает 'Первая'
+console.log(regex.lastIndex); // напечатает '14'
+
+var match2 = regex.exec(text);
+console.log(match2[1]);       // напечатает 'Вторая'
+console.log(regex.lastIndex); // напечатает '27'
+
+var match3 = regex.exec(text);
+console.log(match3 === null); // напечатает 'true'
+
+ +

Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока try { … } catch { … }. Для этого надо использовать либо выражение с eval(…), либо конструктор RegExp(строка-регулярки, строка-с-флагами) (поскольку нотация /регулярка/флаги обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока catch). Например:

+ +
var supports_sticky;
+try { RegExp('', 'y'); supports_sticky = true; }
+catch(e) { supports_sticky = false; }
+console.log(supports_sticky); // напечатает 'true'
+
+ +

Пример: регулярные выражения и символы Юникода

+ +

Как уже сказано выше, символьные классы \w и \W сопоставляются только с базовыми символами ASCII; то есть, с символами от «a» до «z», от «A» до «Z», от «0» до «9» и символом «_». Для сопоставления с символами из других языков, например, с кириллическими или иврита, используйте форму \uhhhh, где «hhhh» — это значение символа Юникода, записанное в шестнадцатеричной форме. Этот пример демонстрирует, как можно выделить символы Юникода, составляющие слова.

+ +
var text = 'Образец text на русском языке';
+var regex = /[\u0400-\u04FF]+/g;
+
+var match = regex.exec(text);
+console.log(match[0]);        // напечатает 'Образец'
+console.log(regex.lastIndex); // напечатает '7'
+
+var match2 = regex.exec(text);
+console.log(match2[0]);       // напечатает 'на' [не 'text']
+console.log(regex.lastIndex); // напечатает '15'
+
+// и так далее
+
+ +

Вот на этом внешнем ресурсе можно составить полный диапазон блоков Юникода для различных письменностей: regexp-unicode-block.

+ +

Пример: извлечение имени поддомена из URL

+ +
var url = 'http://xxx.domain.com';
+console.log(/[^.]+/.exec(url)[0].substr(7)); // напечатает 'xxx'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.10', 'RegExp')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-regexp-regular-expression-objects', 'RegExp')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Флаг «липучести» («y»){{CompatChrome("39")}} (через флаг){{CompatGeckoDesktop("1.9")}} ES4-Style {{bug(773687)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Флаг «липучести» («y»){{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("1.9")}} ES4-Style {{bug(773687)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Примечания по Gecko

+ +

Начиная с Gecko 34 {{geckoRelease(34)}}, в случае захвата группы с квантификаторами, предотвращающими появление группы в результате сопоставления, сопоставившийся текст для захваченной группы теперь имеет значение undefined вместо пустой строки:

+ +
// Firefox 33 или более ранние
+'x'.replace(/x(.)?/g, function(m, group) {
+  console.log("'group:" + group + "'");
+}); // 'group:'
+
+// Firefox 34 или более новые
+'x'.replace(/x(.)?/g, function(m, group) {
+  console.log("'group:" + group + "'");
+}); // 'group:undefined'
+
+ +

Обратите внимание, что для поддержания обратной совместимости, свойства RegExp.$N по-прежнему возвращают пустую строку вместо значения undefined (bug 1053944).

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/input/index.html b/files/ru/web/javascript/reference/global_objects/regexp/input/index.html new file mode 100644 index 0000000000..1e85d92013 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/input/index.html @@ -0,0 +1,55 @@ +--- +title: RegExp.input ($_) +slug: Web/JavaScript/Reference/Global_Objects/RegExp/input +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/input +--- +
{{JSRef}} {{non-standard_header}}
+ +

Нестандартное свойство input является статическим свойством регулярных выражений. Оно содержит строку, для которой произошло совпадение по регулярному выражению. Значение свойства также можно получить как RegExp.$_.

+ +

Синтаксис

+ +
RegExp.input
+RegExp.$_
+
+ +

Описание

+ +

Поскольку свойство input статическое, к нему можно обратиться только как RegExp.input или RegExp.$_.

+ +

Значение данного свойства изменяется каждый раз при возникновении совпадений с регулярным выражением для новой строки.

+ +

Примеры

+ +

Использование input и $_

+ +
var re = /hi/g;
+re.test('hi there!');
+RegExp.input;         // "hi there!"
+re.test('foo');       // новая проверка, совпадений нет
+RegExp.$_;            // "hi there!"
+re.test('hi world!'); // новая проверка, совпадение есть
+RegExp.$_;            // "hi world!"
+
+ +

Спецификация

+ +

Не стандартизированно. Не является частью какой-либо спецификации.

+ +

Поддержка в браузерах

+ +
+ + +

{{Compat("javascript.builtins.RegExp.input")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html b/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html new file mode 100644 index 0000000000..3b9b80efea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html @@ -0,0 +1,130 @@ +--- +title: RegExp.lastIndex +slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex +tags: + - JavaScript + - Property + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Свойство lastIndex является целочисленным свойством регулярного выражения, доступным как для чтения, так и для записи, которое определяет индекс, с которого следует начинать следующее сопоставление.

+ +
{{js_property_attributes(1, 0, 0)}}
+ +

Синтаксис

+
regExpObj.lastIndex
+ +

Описание

+

Это свойство устанавливается только в том случае, если в регулярном выражении используется флаг "g", указывающий на необходимость глобального поиска. Оно подчиняется следующим правилам:

+ + +

Примеры

+ +

Пример: использование свойства lastIndex

+

Рассмотрим следующую последовательность инструкций:

+
var re = /(привет)?/g;
+
+

Сопоставляется с пустой строкой.

+
console.log(re.exec('привет'));
+console.log(re.lastIndex);
+
+

Выведет массив ["привет", "привет"], а свойство lastIndex будет равным 6.

+
console.log(re.exec('привет'));
+console.log(re.lastIndex);
+
+

Выведет массив ["", undefined], «пустой» массив, чей нулевой элемент является сопоставившейся строкой. В данном случае, ей является пустая строка, поскольку свойство lastIndex было равно 6 (и остаётся равным 6), а строка "привет" имеет длину 6.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
+ JavaScript 1.5: свойство lastIndex является свойством экземпляра {{jsxref("RegExp")}}, а не самого объекта {{jsxref("RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.5', 'RegExp.lastIndex')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-properties-of-regexp-instances', 'RegExp.lastIndex')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html new file mode 100644 index 0000000000..94e140a0a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html @@ -0,0 +1,54 @@ +--- +title: RegExp.lastMatch ($&) +slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch +--- +
{{JSRef}} {{non-standard_header}}
+ +

Нестандартное свойство lastMatch является доступным только для чтения статическим свойством регулярных выражений. Оно содержит последние совпавшие символы. Значение свойства также можно получить как RegExp.$&.

+ +

Синтаксис

+ +
RegExp.lastMatch
+RegExp['$&']
+
+ +

Описание

+ +

Поскольку свойство lastMatch  статическое, к нему можно обратиться только как  RegExp.lastMatch или RegExp['$&'].

+ +

Значение свойства lastMatch доступно только для чтение и изменяется при успешном совпадении с регулярным выражением.

+ +

Поскольку использование символа "&" приведет к выбрасыванию ошибки {{jsxref("SyntaxError")}}, обратиться к данному свойству с помощью точечной нотации(RegExp.$&) нельзя. Вместо этого стоит использовать скобочную нотацию (RegExp['$&']).

+ +

Примеры

+ +

Использование lastMatch и $&

+ +
var re = /hi/g;
+re.test('hi there!');
+RegExp.lastMatch; // "hi"
+RegExp['$&'];     // "hi"
+
+ +

Спецификация

+ +

Не стандартизированно. Не является частью какой-либо спецификации.

+ +

Поддержка в браузерах

+ +
+ + +

{{Compat("javascript.builtins.RegExp.lastMatch")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html b/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html new file mode 100644 index 0000000000..734964950f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.multiline +slug: Web/JavaScript/Reference/Global_Objects/RegExp/multiline +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/multiline +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Свойство multiline указывает, использовался ли в определении регулярного выражения флаг "m". Свойство multiline является свойством только для чтения и принадлежит экземпляру регулярного выражения.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Значение свойства multiline имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит true, если при определении регулярного выражения использовался флаг "m"; в противном случае оно содержит false. Флаг "m" указывает на то, что многострочная входная строка должна рассматриваться в виде нескольких строк. Например, если используется флаг "m", специальные символы "^" и "$" меняют своё поведение: с установленным флагом они сопоставляются в началом / концом каждой строки в многострочной строке, а не с началом / концом всей многострочной строки.

+

Вы не можете напрямую изменить это свойство.

+ +

Примеры

+ +

Пример: использование свойства multiline

+
var regex = new RegExp('foo', 'm');
+
+console.log(regex.multiline); // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
+ JavaScript 1.5: свойство multiline является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.4', 'RegExp.prototype.multiline')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-get-regexp.prototype.multiline', 'RegExp.prototype.multiline')}}{{Spec2('ES6')}}Свойство multiline теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/n/index.html b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html new file mode 100644 index 0000000000..a785e92f01 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html @@ -0,0 +1,64 @@ +--- +title: RegExp.$1-$9 +slug: Web/JavaScript/Reference/Global_Objects/RegExp/n +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/n +--- +
{{JSRef}} {{non-standard_header}}
+ +

Нестандартные свойства $1, $2, $3, $4, $5, $6, $7, $8, $9 являются статическими и доступными только для чтения свойствами регулярных выражений, которые содержат найденые подстроки, обернутые в скобки.

+ +

Синтаксис

+ +
RegExp.$1
+RegExp.$2
+RegExp.$3
+RegExp.$4
+RegExp.$5
+RegExp.$6
+RegExp.$7
+RegExp.$8
+RegExp.$9
+
+ +

Описание

+ +

Свойства $1, ..., $9 являются статичными, они не являются свойствами конкретного объекта регулярного выражения, поэтому вы всегда можете использовать их как RegExp.$1, ..., RegExp.$9.

+ +

Значения этих свойств не доступны для изменения, они модифицируются всякий раз при успешном совпадении регулярного выражения.

+ +

Количество возможных подстрок в круглых скобках неограничено, но объект RegExp может содержать в себе только последние 9. Вы можете получить доступ ко всем подстрокам, совпавшим с выражениями внутри круглых скобок, с помощью индексов возвращенного массива.

+ +

Эти свойства могу использоваться при замене текста в методе {{jsxref("String.replace")}}. Когда используете его, не добавляйте их в RegExp. Пример ниже демонстрирует правильное применение. Когда круглые скобки не включены в регулярное выражение, код интерпритирует такие значения, как $n буквально, как литерал (n - положительное число).

+ +

Примеры

+ +

Использование $n со String.replace

+ +

Следующий код использует метод {{jsxref("String.prototype.replace()", "replace()")}} строки {{jsxref("String")}}, чтобы преобразовать строку в формате Имя Фамилия в формат Фамилия, Имя. В коде замены текста используются $1 и $2 чтобы указать порядок вывода результата совпадений полученных при сравнивании с шаблоном регулярного выражения, имеющего круглые скобки.

+ +
var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+str.replace(re, '$2, $1'); // "Smith, John"
+RegExp.$1; // "John"
+RegExp.$2; // "Smith"
+
+ +

Спецификация

+ +

Не стандартизированно. Не является частью какой-либо спецификации

+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.RegExp.n")}}

+ +
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html b/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html new file mode 100644 index 0000000000..dd6989d2fd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html @@ -0,0 +1,140 @@ +--- +title: RegExp.prototype +slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Свойство RegExp.prototype представляет объект прототипа для констуктора {{jsxref("Global_Objects/RegExp", "RegExp")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Описание экземпляров регулярных выражений смотрите на странице документации, посвящёной объекту {{jsxref("Global_Objects/RegExp", "RegExp")}}. Экземпляры регулярных выражений наследуются от RegExp.prototype. Изменение объекта прототипа распространяется на все экземпляры регулярных выражений.

+ +

Свойства

+

Также смотрите устаревшие свойства объекта RegExp

+

Обратите внимание, что некоторые свойста объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} имеют как длинные, так и короткие (Perl-подобные) имена. Оба имени всегда ссылаются на одно и тоже значение. Perl — это язык программирования, откуда JavaScript взял свои регулярные выражения.

+
+
RegExp.prototype.constructor
+
Определяет функцию, создающую прототип объекта.
+
{{jsxref("RegExp.prototype.global")}}
+
Определяет, надо ли проверять регулярное выражение на все возможные сопоставления со строкой, или достаточно только первый раз.
+
{{jsxref("RegExp.prototype.ignoreCase")}}
+
Определяет, надо ли игнорировать регистр символов при попытке сопоставления со строкой.
+
{{jsxref("RegExp.prototype.lastIndex")}}
+
Индекс, по которому начинается следующее сопоставление.
+
{{jsxref("RegExp.prototype.multiline")}}
+
Определяет, надо ли искать по нескольким строкам.
+
{{jsxref("RegExp.prototype.source")}}
+
Текст шаблона.
+
{{jsxref("RegExp.prototype.sticky")}} {{experimental_inline}}
+
Определяет, включён ли режим «липкого» поиска.
+
{{jsxref("RegExp.prototype.flags")}} {{experimental_inline}}
+
Строка, состоящая из флагов объекта регулярного выражения.
+
+
{{jsOverrides("Object", "properties", "constructor", "global", "ignoreCase", "lastIndex", "multiline", "source", "sticky")}}
+ +

Методы

+

Также смотрите устаревшие методы объекта RegExp

+
+
{{jsxref("RegExp.prototype.exec()")}}
+
Выполняет поиск сопоставлений регулярного выражения в своём строковом параметре.
+
{{jsxref("RegExp.prototype.test()")}}
+
Пытается сопоставить регулярное выражение своему строковому параметру.
+
{{jsxref("RegExp.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает объектный литерал, представляющий указаный объект; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("RegExp.prototype.toString()")}}
+
Возвращает строку, представляющую указаннный объект. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
+
{{jsOverrides("Object", "Methods", "exec", "test", "toSource", "toString")}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.10.5.1', 'RegExp')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-regexp.prototype', 'RegExp.prototype')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/source/index.html b/files/ru/web/javascript/reference/global_objects/regexp/source/index.html new file mode 100644 index 0000000000..32d0bb687d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/source/index.html @@ -0,0 +1,121 @@ +--- +title: RegExp.prototype.source +slug: Web/JavaScript/Reference/Global_Objects/RegExp/source +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/source +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Свойство source возвращает {{jsxref("Global_Objects/String", "строку", "", 1)}}, содержащую текст шаблона регулярного выражения без прямых слешей с обеих сторон и без флагов регулярного выражения.

+ +

Примеры

+ +

Пример: использование свойства source

+ +
var regex = /fooBar/ig;
+
+console.log(regex.source); // 'fooBar', не содержит прямые слеши /.../ и флаги 'ig'.
+
+ +

Начиная с ECMAScript 5, свойство source больше не возвращает пустую строку для пустых регулярных выражений. Вместо этого, возвращается строка" (?:)". Кроме того, теперь экранируются символы окончания строк (такие как, "\n").

+ +
new RegExp().source; // "(?:)"
+
+new RegExp('\n').source === '\n';  // true, до появления ES5
+new RegExp('\n').source === '\\n'; // true, начиная с ES5
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
+ JavaScript 1.5: свойство source является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.
{{SpecName('ES5.1', '#sec-15.10.7.1', 'RegExp.prototype.source')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-get-regexp.prototype.source', 'RegExp.prototype.source')}}{{Spec2('ES6')}}Свойство source теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + + +
diff --git a/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html b/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html new file mode 100644 index 0000000000..84801849db --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html @@ -0,0 +1,139 @@ +--- +title: RegExp.prototype.sticky +slug: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Свойство sticky отражает тот факт, является ли поиск «липким» (то есть, начинается ли он с индекса, на который указывает свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} регулярного выражения). Свойство sticky является свойством только для чтения и принадлежит экземпляру регулярного выражения.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Значение свойства sticky имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит true, если при определении регулярного выражения использовался флаг "y", в противном случае оно содержит false. Флаг "y" указывает на то, что регулярное выражение сопоставляется с целевой строкой начиная с позиции, на которую указывает его свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} (и не пытается сопоставиться по любому более старшему индексу). Такое поведение позволяет эффективно использовать символ "^" сопоставления-с-началом в любом месте строки путём смены значения свойства {{jsxref("RegExp.lastIndex", "lastIndex")}}.

+ +

Вы не можете напрямую изменить это свойство.

+ +

Примеры

+ +

Пример: использование регулярных выражений с флагом «липучести»

+ +

Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.

+ +
var text = 'Первая строка\nВторая строка';
+var regex = /(\S+) строка\n?/y;
+
+var match = regex.exec(text);
+console.log(match[1]);        // напечатает 'Первая'
+console.log(regex.lastIndex); // напечатает '14'
+
+var match2 = regex.exec(text);
+console.log(match2[1]);       // напечатает 'Вторая'
+console.log(regex.lastIndex); // напечатает '27'
+
+var match3 = regex.exec(text);
+console.log(match3 === null); // напечатает 'true'
+
+ +

Проверка совместимости

+ +

Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока try { … } catch { … }. Для этого надо использовать либо выражение с eval(…), либо конструктор RegExp(строка регулярного выражения, строка-с-флагами) (поскольку нотация /регулярное выражение/флаги обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока catch). Например:

+ +
var supports_sticky;
+try { RegExp('', 'y'); supports_sticky = true; }
+catch(e) { supports_sticky = false; }
+console.log(supports_sticky); // напечатает 'false' в Firefox 2 и 'true' в Firefox 3+
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-get-regexp.prototype.sticky', 'RegExp.prototype.sticky')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("1.9")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/test/index.html b/files/ru/web/javascript/reference/global_objects/regexp/test/index.html new file mode 100644 index 0000000000..3723064858 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/test/index.html @@ -0,0 +1,143 @@ +--- +title: RegExp.prototype.test() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/test +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+ +

Метод test() выполняет поиск сопоставления регулярного выражения указанной строке. Возвращает true или false.

+ +

Синтаксис

+ +
regexObj.test(str)
+ +

Параметры

+ +
+
str
+
Строка, с которой сопоставляется регулярное выражение.
+
+ +

Возвращаемое значение

+ +

Логическое значение: true или false.

+ +

Описание

+ +

Используйте метод test(), если вы просто хотите узнать, находится ли шаблон в строке (он почти аналогичен методу {{jsxref("String.prototype.search()")}}, только вместо индекса шаблона возвращает true или false); для получения дополнительной информации о сопоставлении (но за счёт более медленного выполнения) используйте метод {{jsxref("RegExp.prototype.exec()", "exec()")}} (он аналогичен методу {{jsxref("String.prototype.match()")}}). Как и при вызове метода {{jsxref("RegExp.prototype.exec()", "exec()")}} (или при совместном с ним вызове), метод test(), вызванный несколько раз на одном и том же экземпляре глобального регулярного выражения, будет начинать проверку с конца предыдущего сопоставления.

+ +

Примеры

+ +

Пример: использование метода test()

+ +

Следующий пример печатает сообщение, в зависимости от того, была ли проверка успешной:

+ +
function testinput(re, str){
+  var midstring;
+  if (re.test(str)) {
+    midstring = ' содержит ';
+  } else {
+    midstring = ' не содержит ';
+  }
+  console.log(str + midstring + re.source);
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.10.6.3', 'RegExp.test')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-regexp.prototype.test', 'RegExp.test')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Примечания по Gecko

+ +

До Gecko 8.0 {{geckoRelease("8.0")}} метод test() был реализован неправильно; когда он вызывался без параметров, он проверял на сопоставление предыдущее проверенное значение (свойство RegExp.input) вместо сопоставления со строкой "undefined". Это поведение было исправлено; теперь /undefined/.test() правильно вернёт true вместо ошибки.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html b/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html new file mode 100644 index 0000000000..470f288df6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html @@ -0,0 +1,106 @@ +--- +title: RegExp.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/toSource +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toSource +--- +
{{JSRef("Global_Objects", "RegExp")}} {{non-standard_header}}
+ +

Сводка

+ +

Метод toSource() возвращает строковое представление исходного кода объекта.

+ +

Синтаксис

+ +
regexObj.toSource()
+RegExp.toSource()
+
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Метод toSource() возвращает следующие значения:

+ + + +

Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.

+ +

Спецификации

+ +

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html b/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html new file mode 100644 index 0000000000..2e0d9badec --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html @@ -0,0 +1,116 @@ +--- +title: RegExp.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/toString +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toString +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Сводка

+

Метод toString() возвращает строковое представление регулярного выражения.

+ +

Синтаксис

+
regexObj.toString()
+ +

Параметры

+

Нет.

+ +

Описание

+

Объект {{jsxref("Global_Objects/RegExp", "RegExp")}} переопределяет метод toString() объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/RegExp", "RegExp")}}, метод toString() возвращает строковое представление регулярного выражения.

+ +

Примеры

+ +

Пример: использование метода toString()

+

Следующий пример отображает строковое значение объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}:

+
var myExp = new RegExp('a+b+c');
+console.log(myExp.toString());  // отобразит '/a+b+c/'
+
+var foo = new RegExp('bar', 'g');
+console.log(foo.toString());    // отобразит '/bar/g'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.9.5.2', 'RegExp.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html new file mode 100644 index 0000000000..6f585f94f7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html @@ -0,0 +1,70 @@ +--- +title: RegExp.prototype.unicode +slug: Web/JavaScript/Reference/Global_Objects/RegExp/unicode +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/unicode +--- +
{{JSRef}}
+ +

Свойство unicode указывает, используется ли флаг «u» с регулярным выражением. Свойство unicode доступно только для чтения конкретного экземпляра регулярного выражения.

+ +
{{EmbedInteractiveExample("pages/js/regexp-prototype-unicode.html", "taller")}}
+ + + +
{{js_property_attributes(0, 0, 1)}}
+ +

Описание

+ +

Значение unicode является {{jsxref ("Boolean")}}. True, если используется флаг u, или false - противном случае. Флаг «u» позволяет использовать различные функции, связанные с Unicode. С флагом «u» любые escape-последовательности кода Unicode будут интерпретироваться как таковые, например.

+ +

Вы не можете напрямую изменить это свойство. Оно доступно только для чтения.

+ +

Примеры

+ +

Испльзование свойства unicode

+ +
var regex = new RegExp('\u{61}', 'u');
+
+console.log(regex.unicode); // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-get-regexp.prototype.unicode', 'RegExp.prototype.unicode')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-get-regexp.prototype.unicode', 'RegExp.prototype.unicode')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.RegExp.unicode")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/add/index.html b/files/ru/web/javascript/reference/global_objects/set/add/index.html new file mode 100644 index 0000000000..44ac1e81b8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/add/index.html @@ -0,0 +1,76 @@ +--- +title: Set.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/Set/add +translation_of: Web/JavaScript/Reference/Global_Objects/Set/add +--- +
{{JSRef}}
+ +

Метод add() добавляет новый элемент с заданным значением в конец объекта Set.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-add.html")}}
+ + + +

Синтаксис

+ +
mySet.add(value);
+ +

Параметы

+ +
+
value
+
Обязательное. Значение элемента, добавляемого в объект Set.
+
+ +

Возвращаемое значение

+ +

Объект Set.

+ +

Примеры

+ +

Использование метода add 

+ +
var mySet = new Set();
+
+mySet.add(1);
+mySet.add(5).add('some text'); // можно делать цепочки
+
+console.log(mySet);
+// Set [1, 5, "some text"]
+
+ +

Спецификация

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.add")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/clear/index.html b/files/ru/web/javascript/reference/global_objects/set/clear/index.html new file mode 100644 index 0000000000..376c848719 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/clear/index.html @@ -0,0 +1,74 @@ +--- +title: Set.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/Set/clear +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear +--- +
{{JSRef}}
+ +

Метод clear() удаляет все элементы из объекта Set.

+ +

Синтаксис

+ +
mySet.clear();
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Примеры

+ +

Использование метода clear

+ +
var mySet = new Set();
+mySet.add(1);
+mySet.add('foo');
+
+mySet.size;       // 2
+mySet.has('foo'); // true
+
+mySet.clear();
+
+mySet.size;       // 0
+mySet.has('bar')  // false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.clear")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/delete/index.html b/files/ru/web/javascript/reference/global_objects/set/delete/index.html new file mode 100644 index 0000000000..3ba75646a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/delete/index.html @@ -0,0 +1,93 @@ +--- +title: Set.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Set/delete +translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete +--- +
{{JSRef}}
+ +
Метод delete() удаляет уникальный элемент из объекта Set.
+ +
+ +
{{EmbedInteractiveExample("pages/js/set-prototype-delete.html")}}
+ + + +

Синтаксис

+ +
mySet.delete(value);
+ +

Параметры

+ +
+
value
+
Обязательный. Значение элемента для удаления из объекта Set.
+
+ +

Возвращаемое значение

+ +

true, если элемент был успешно удален из объекта Set, иначе false.

+ +

Примеры

+ +

Использование метода delete

+ +
var mySet = new Set();
+mySet.add('foo');
+
+mySet.delete('bar'); // Вернет false. Отсутсвует элемент "bar" для удаления.
+mySet.delete('foo'); // Вернет true.  Успешно удален.
+
+mySet.has('foo');    // Вернет false. Элемент "foo" больше не присутствует.
+
+ +

Давайте проверим как удалить Object из Set.

+ +
var setObj = new Set(); // Создаем новый Set.
+
+setObj.add({x: 10, y: 20}); // Добавляем объект в набор.
+
+setObj.add({x: 20, y: 30}); // Добавляем объект в набор.
+
+// Удаляем любой point с `x > 10`.
+setObj.forEach(function(point){
+  if(point.x > 10){
+    setObj.delete(point)
+  }
+})
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.delete")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/entries/index.html b/files/ru/web/javascript/reference/global_objects/set/entries/index.html new file mode 100644 index 0000000000..52184bd79a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/entries/index.html @@ -0,0 +1,71 @@ +--- +title: Set.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Set/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries +--- +
{{JSRef}}
+ +

Метод  entries() возвращает новый Итератор, который содержит массив [значение, значение] для каждого элемента в объекте Set в порядке их добавления. Для объекта Set не существует ключа key, как в объекте Map. Тем не менее, чтобы API было схож с объектом Map, каждая запись содержит значение как в ключе, так и в значении, возвращая массив [значение, значение].

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-entries.html")}}
+ + + +

Синтаксис

+ +
mySet.entries()
+ +

Возвращаемое значение

+ +

Новый Итератор, который содержит массив [значение, значение] для каждого элемента, полученного в Set в порядке их добавления. 

+ +

Примеры

+ +

Использование entries()

+ +
var mySet = new Set();
+mySet.add('foobar');
+mySet.add(1);
+mySet.add('baz');
+
+var setIter = mySet.entries();
+
+console.log(setIter.next().value); // ["foobar", "foobar"]
+console.log(setIter.next().value); // [1, 1]
+console.log(setIter.next().value); // ["baz", "baz"]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ES2015')}}Первоначальное определение
{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.entries")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/foreach/index.html b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html new file mode 100644 index 0000000000..5ed212666b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html @@ -0,0 +1,110 @@ +--- +title: Set.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Set/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Set/forEach +--- +
{{JSRef}}
+ +

Метод forEach() выполняет функцию по одному разу для каждого элемента из Set в порядке их расположения.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-foreach.html")}}
+ + + +

Синтаксис

+ +
mySet.forEach(callback[, thisArg])
+ +

Параметры

+ +
+
callback
+
Функция, которая будет выполнена для каждого элемента, принимает три параметра:
+
+
+
currentValue, currentKey
+
Текущий элемент из Set. Т.к. в Set нет ключей,  в каждом будет лежать value.
+
set
+
Сам объект Set для которого был вызван forEach().
+
+
+
thisArg
+
Значение, используемое как this в ходе выполнения callback.
+
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Описание

+ +

Метод forEach() выполняет callback по одному разу для каждого значения, которое находится в объекте Set. Функция не будет выполняться для значений, которые были удалены. Тем не менее функция выполнится с элементами, значение которых undefined.

+ +

callback вызывается с тремя аргументами:

+ + + +

В объектах типа Set нет ключей, поэтому оба первых аргумента принимают значение содержащееся в  {{jsxref("Set")}}. Это делает метод  forEach() для объекта Set совместимым с методами forEach() других объектов, таких как {{jsxref("Map.foreach", "Map")}} и {{jsxref("Array.forEach","Array")}}.

+ +

Если аргумент thisArg был передан в forEach(), то он будет передан в  callback , во время исполнения, для использование его в качестве this.  Иначе в this будет хранится значение undefined.  Значение this используемое в  callback определено согласно с обычными правилами определения  this используемого функцией 

+ +

Каждое значение используется только один раз, исключая те случаи, когда оно было удалено и передобавлено до того, как forEach() завершился. callback не будет выполнена для элементов, которые были удалены до их использования. Новые значения, которые были добавлены до того как forEach() завершился будут использованы.

+ +

forEach() выполняет callback однажды для каждого элемента из объекта Set; Он не возвращает никакого значения.

+ +

Примеры

+ +

Содержимое объекта Set 

+ +

Приведенный код показывает состояние каждого элемента в объекте Set:

+ +
function logSetElements(value1, value2, set) {
+    console.log('s[' + value1 + '] = ' + value2);
+}
+
+new Set(['foo', 'bar', undefined]).forEach(logSetElements);
+
+// logs:
+// "s[foo] = foo"
+// "s[bar] = bar"
+// "s[undefined] = undefined"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}}{{Spec2('ESDraft')}}
+ +

Совместимость в браузерах

+ + + +

{{Compat("javascript.builtins.Set.forEach")}}

+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/has/index.html b/files/ru/web/javascript/reference/global_objects/set/has/index.html new file mode 100644 index 0000000000..45a5de9131 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/has/index.html @@ -0,0 +1,91 @@ +--- +title: Set.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Set/has +translation_of: Web/JavaScript/Reference/Global_Objects/Set/has +--- +
{{JSRef}}
+ +

Метод  has() возвращает логическое значение, показывающее, существует ли элемент с указанным значением в объекте  Set или нет.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-has.html")}}
+ + + +

Syntax

+ +
mySet.has(value);
+ +

Parameters

+ +
+
value
+
Required. The value to test for presence in the Set object.
+
+ +

Return value

+ +
+
Boolean
+
+

Returns true if an element with the specified value exists in the Set object; otherwise false.

+ +
+

Note: Technically speaking, has() uses the sameValueZero algorithm to determine whether the given element is found.

+
+
+
+ +

Examples

+ +

Using the has method

+ +
var mySet = new Set();
+mySet.add('foo');
+
+mySet.has('foo');  // returns true
+mySet.has('bar');  // returns false
+
+var set1 = new Set();
+var obj1 = {'key1': 1};
+set1.add(obj1);
+
+set1.has(obj1);        // returns true
+set1.has({'key1': 1}); // returns false because they are different object references
+set1.add({'key1': 1}); // now set1 contains 2 entries
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Set.has")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/index.html b/files/ru/web/javascript/reference/global_objects/set/index.html new file mode 100644 index 0000000000..0233c7fcb5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/index.html @@ -0,0 +1,242 @@ +--- +title: Set +slug: Web/JavaScript/Reference/Global_Objects/Set +tags: + - ECMAScript6 + - JavaScript + - set + - Экспериментальный +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef("Global_Objects", "Set")}}
+ +

Сводка

+ +

Объекты Set позволяют вам сохранять уникальные значения любого типа, как {{Glossary("Primitive", "примитивы")}}, так и другие типы объектов.

+ +

Синтаксис

+ +
 new Set([iterable]);
+ +

Параметры

+ +
+
iterable
+
При передаче итерируемого объекта, все его элементы будут добавлены в новый Set. Иначе (или при null) новый Set будет пуст.
+
+

Возвращает

+
+
+

Новый Set объект.

+
+
+ +

Описание

+ +

Объекты Set представляют коллекции значений, по которым вы можете выполнить обход в порядке вставки элементов. Значение элемента в Set может присутствовать только в одном экземпляре, что обеспечивает его уникальность в коллекции Set.

+ +

Сравнение значений

+ +

Поскольку каждое значение в Set должно быть уникальным, сравнение значений основано на алгоритме "подобное значение": NaN равно NaN (несмотря на то, что NaN !== NaN); все другие значения рассматриваются равными исходя из семантики оператора строго равенства ===. В ранних версиях черновика ECMAScript 6 -0 и +0 считались разными (несмотря на то, что -0 === +0), это было изменено в последующих версиях и адаптировано в Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) и последней ночной сборке ChromeNaN и undefined также могут сохраняться в Set.

+ +

Свойства

+ +
+
Set.length
+
Значение свойства length всегда равно 0.
+
Чтобы узнать количество элементов в Set, используйте {{jsxref("Set.prototype.size")}}.
+
{{jsxref("Set.@@species", "get Set[@@species]")}}
+
Функция-конструктор, которая используется для создания производных объектов.
+
{{jsxref("Set.prototype")}}
+
Представляет прототип конструктора Set. Позволяет добавлять свойства всем объектам типа Set.
+
+ +

Экземпляры Set

+ +

Все экземпляры Set унаследованы от {{jsxref("Set.prototype")}}.

+ +

Свойства

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/Set/prototype','Properties')}}

+ +

Методы

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/Set/prototype','Methods')}}

+ +

Примеры

+ +

Использование объекта Set

+ +
var mySet = new Set();
+
+mySet.add(1); // Set { 1 }
+mySet.add(5); // Set { 1, 5 }
+mySet.add(5); // Set { 1, 5 }
+mySet.add("some text"); // Set { 1, 5, 'some text' }
+var o = {a: 1, b: 2};
+mySet.add(o);
+
+mySet.add({a: 1, b: 2}); // переменная o связана с другим объектом, поэтому данная строка также сработает
+
+mySet.has(1); // true
+mySet.has(3); // false, 3 не было добавлено в set
+mySet.has(5);              // true
+mySet.has(Math.sqrt(25));  // true
+mySet.has("Some Text".toLowerCase()); // true
+mySet.has(o); // true
+
+mySet.size; // 5
+
+mySet.delete(5); // удаляет 5 из set
+mySet.has(5);    // false, 5 было удалено
+
+mySet.size; // 4, было удалено одно значение
+console.log(mySet); // Set {1, 'some text', Object {a: 1, b: 2}, Object {a: 1, b: 2}}
+ +

Обход Set

+ +
// обход элементов set
+// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2}
+for (let item of mySet) console.log(item);
+
+// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2}
+for (let item of mySet.keys()) console.log(item);
+
+// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2}
+for (let item of mySet.values()) console.log(item);
+
+// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2}
+//(key и value в данном случае одинаковы)
+for (let [key, value] of mySet.entries()) console.log(key);
+
+// преобразует Set в Array
+var myArr = Array.from(mySet); // [1, "some text", {"a": 1, "b": 2}]
+
+// следующее будет работать при запуске с HTML документом
+mySet.add(document.body);
+mySet.has(document.querySelector("body")); // true
+
+// преобразования из Array в Set и обратно
+mySet2 = new Set([1,2,3,4]);
+mySet2.size; // 4
+[...mySet2]; // [1,2,3,4]
+
+// пересечение можно представить следующим образом
+var intersection = new Set([...set1].filter(x => set2.has(x)));
+
+// разность можно представить следующим образом
+var difference = new Set([...set1].filter(x => !set2.has(x)));
+
+// Обход элементов set при помощи forEach
+mySet.forEach(function(value) {
+  console.log(value);
+});
+
+// 1
+// 2
+// 3
+// 4
+
+ +

Реализация простых операций

+ +
function isSuperset(set, subset) {
+    for (var elem of subset) {
+        if (!set.has(elem)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+function union(setA, setB) {
+    var _union = new Set(setA);
+    for (var elem of setB) {
+        _union.add(elem);
+    }
+    return _union;
+}
+
+function intersection(setA, setB) {
+    var _intersection = new Set();
+    for (var elem of setB) {
+        if (setA.has(elem)) {
+            _intersection.add(elem);
+        }
+    }
+    return _intersection;
+}
+
+function difference(setA, setB) {
+    var _difference = new Set(setA);
+    for (var elem of setB) {
+        _difference.delete(elem);
+    }
+    return _difference;
+}
+
+// Например
+var setA = new Set([1, 2, 3, 4]),
+    setB = new Set([2, 3]),
+    setC = new Set([3, 4, 5, 6]);
+
+isSuperset(setA, setB);   // => true
+union(setA, setC);        // => Set [1, 2, 3, 4, 5, 6]
+intersection(setA, setC); // => Set [3, 4]
+difference(setA, setC);   // => Set [1, 2]
+
+ +

Взаимоотношения с объектом Array

+ +
var myArray = ["value1", "value2", "value3"];
+
+// Используйте конструктор Set для преобразования Array в Set
+var mySet = new Set(myArray);
+
+mySet.has("value1"); // вернёт true
+
+// Используйте spread оператор для преобразования Set в Array
+console.log([...mySet]); // Отобразит тот же массив, что и myArray
+
+ +

Взаимоотношения со String

+ +
var text = 'India';
+
+var mySet = new Set(text);  // Set ['I', 'n', 'd', 'i', 'a']
+mySet.size;  // 5
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-set-objects', 'Set')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.Set")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/prototype/index.html b/files/ru/web/javascript/reference/global_objects/set/prototype/index.html new file mode 100644 index 0000000000..c546a1997f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/prototype/index.html @@ -0,0 +1,80 @@ +--- +title: Set.prototype +slug: Web/JavaScript/Reference/Global_Objects/Set/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef}}
+ +

The Set.prototype property represents the prototype for the {{jsxref("Set")}} constructor.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Description

+ +

{{jsxref("Set")}} instances inherit from {{jsxref("Set.prototype")}}. You can use the constructor's prototype object to add properties or methods to all Set instances.

+ +

Свойства

+ +
+
Set.prototype.constructor
+
Возвращает функцию, которая создала прототип экземпляра. Это функция {{jsxref("Set")}} по умолчанию.
+
{{jsxref("Set.prototype.size")}}
+
Возвращает количество элементов в объекте Set.
+
+ +

Методы

+ +
+
{{jsxref("Set.add", "Set.prototype.add(value)")}}
+
Добавляет новый элемент с переданным значением в Set объект. Возвращает Set объект.
+
{{jsxref("Set.prototype.clear()")}}
+
Removes all elements from the Set object.
+
{{jsxref("Set.delete", "Set.prototype.delete(value)")}}
+
Removes the element associated to the value and returns the value that Set.prototype.has(value) would have previously returned. Set.prototype.has(value) will return false afterwards.
+
{{jsxref("Set.prototype.entries()")}}
+
Returns a new Iterator object that contains an array of [value, value] for each element in the Set object, in insertion order. This is kept similar to the Map object, so that each entry has the same value for its key and value here.
+
{{jsxref("Set.forEach", "Set.prototype.forEach(callbackFn[, thisArg])")}}
+
Calls callbackFn once for each value present in the Set object, in insertion order. If a thisArg parameter is provided to forEach, it will be used as the this value for each callback.
+
{{jsxref("Set.has", "Set.prototype.has(value)")}}
+
Returns a boolean asserting whether an element is present with the given value in the Set object or not.
+
{{jsxref("Set.prototype.keys()")}}
+
Is the same function as the values() function and returns a new Iterator object that contains the values for each element in the Set object in insertion order.
+
{{jsxref("Set.prototype.values()")}}
+
Returns a new Iterator object that contains the values for each element in the Set object in insertion order.
+
{{jsxref("Set.prototype.@@iterator()", "Set.prototype[@@iterator]()")}}
+
Returns a new Iterator object that contains the values for each element in the Set object in insertion order.
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-set.prototype', 'Set.prototype')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-set.prototype', 'Set.prototype')}}{{Spec2('ESDraft')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Set.prototype")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/set/index.html b/files/ru/web/javascript/reference/global_objects/set/set/index.html new file mode 100644 index 0000000000..66e1d0108e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/set/index.html @@ -0,0 +1,72 @@ +--- +title: Set() конструктор +slug: Web/JavaScript/Reference/Global_Objects/Set/Set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/Set +--- +
{{JSRef}}
+ +

Конструктор Set позволяет создавать объекты Set, в которых хранятся уникальные значения любого типа, будь то примитивные значения или ссылки на объекты.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-constructor.html")}}
+ +

Синтаксис

+ +
new Set([iterable])
+ +

Параметры

+ +
+
iterable {{optional_inline}}
+
+

Если передается итеративный объект, все его элементы будут добавлены в новый Set.

+ +

Если вы не укажете этот параметр или его значение равно нулю, новый набор будет пустым.

+
+
+ +

Возвращаемое значение

+ +

Новый объект Set.

+ +

Примеры

+ +

Использование объекта Set

+ +
let mySet = new Set()
+
+mySet.add(1)           // Set [ 1 ]
+mySet.add(5)           // Set [ 1, 5 ]
+mySet.add(5)           // Set [ 1, 5 ]
+mySet.add('какой-то текст') // Set [ 1, 5, 'какой-то текст' ]
+let o = {a: 1, b: 2}
+mySet.add(o)
+ +

Спецификации

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-set-constructor', 'Set constructor')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.Set")}}

+ +

Смотрите также

+ + + + diff --git a/files/ru/web/javascript/reference/global_objects/set/size/index.html b/files/ru/web/javascript/reference/global_objects/set/size/index.html new file mode 100644 index 0000000000..5b530d7331 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/size/index.html @@ -0,0 +1,68 @@ +--- +title: Set.prototype.size +slug: Web/JavaScript/Reference/Global_Objects/Set/size +tags: + - ECMAScript6 + - JavaScript + - set + - Свойство + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Set/size +--- +
{{JSRef}}
+ +

Метод доступа size возвращает количество (уникальных) элементов в объекте {{jsxref("Set")}}

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-size.html")}}
+ + + +

Описание

+ +

Значение size является целым числом, которое показывает как много записей имеет объект Set. Функция для установки size равна undefined; вы не можете изменить это свойство.

+ +

Примеры

+ +

Использование size

+ +
var mySet = new Set();
+mySet.add(1);
+mySet.add(5);
+mySet.add('некоторый текст')
+
+mySet.size; // 3
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-get-set.prototype.size', 'Set.prototype.size')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.size")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/set/values/index.html b/files/ru/web/javascript/reference/global_objects/set/values/index.html new file mode 100644 index 0000000000..115d300b53 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/values/index.html @@ -0,0 +1,72 @@ +--- +title: Set.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Set/values +translation_of: Web/JavaScript/Reference/Global_Objects/Set/values +--- +
{{JSRef}}
+ +

Метод values() возвращает новый Итератор, который содержит значения для каждого элемента в объекте Set в порядке их добавления.

+ +

Метод keys() является синонимом этого метода (для схожести с объектами {{jsxref("Map")}}). Он ведёт себя точно так же и возвращает значения элементов Set.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}
+ + + +

Синтаксис

+ +
mySet.values();
+
+ +

Возвращаемое значение

+ +

Новый Итератор, содержащий значения для каждого элемента Set, в порядке их добавления.

+ +

Примеры

+ +

Ипсользование values()

+ +
var mySet = new Set();
+mySet.add('foo');
+mySet.add('bar');
+mySet.add('baz');
+
+var setIter = mySet.values();
+
+console.log(setIter.next().value); // "foo"
+console.log(setIter.next().value); // "bar"
+console.log(setIter.next().value); // "baz"
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ES2015')}}Начальное определение.
{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Set.values")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html new file mode 100644 index 0000000000..884ab88fa1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -0,0 +1,209 @@ +--- +title: SharedArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +--- +
{{JSRef}}
+ +

Объект SharedArrayBuffer используется для создания разделенного буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделенную память. В отличие от ArrayBufferSharedArrayBuffer не может быть отсоединен.

+ +

Синтаксис

+ +
new SharedArrayBuffer(length)
+
+ +

Параметры

+ +
+
length
+
Размер, в байтах, для создания буферного массива.
+
+ +

Возвращаемое значение

+ +

Новый объект SharedArrayBuffer указаной длины. Его содержимое после инициализаци равно 0.

+ +

Описание

+ +

Распределение и разделение память

+ +

Для разделения памяти с помощью объекта {{jsxref("SharedArrayBuffer")}} между одним агентом в кластере и другим (агент может быть как основной программой web-страницы, так и одним из web-workers), используются postMessage и structured cloning.

+ +

Алгоритм структурированного клонирования принимает SharedArrayBuffers и TypedArrays, отображенный в SharedArrayBuffers. В обоих случаях, объект  SharedArrayBuffer передается получателю, результируя в новый, приватный объект SharedArrayBuffer внутри агента-получателя (так же как для {{jsxref("ArrayBuffer")}}). Однако, блок общих данных, на который ссылаются оба объекта SharedArrayBuffer, это один и тот же блок данных, и сторонние эффекты в блоке в одном из агентов в итоге станут заметны в другом агенте.

+ +
var sab = new SharedArrayBuffer(1024);
+worker.postMessage(sab);
+
+ +

Обновление и синхронизация разделенной памяти с помощью Атомарных операций

+ +

Разделенная память может быть создана и изменена одновременно в  workers или основном потоке. В зависимости от системы (ЦПУ, ОС, браузер) может уйти время пока изменения будут распространены по всем контекстам. Для синхронизации необходимы {{jsxref("Атомарные", "атомарные", "", 1)}} операции .

+ +

API, принимающие объекты SharedArrayBuffer

+ + + +

Конструкции требуют оператор new

+ +

Конструторы SharedArrayBuffer необходимо вызывать с помощью оператора {{jsxref("Operators/new", "new")}}. Вызов конструктора SharedArrayBuffer как функции без указания new, вызовет ошибку {{jsxref("TypeError")}}.

+ +
var sab = SharedArrayBuffer(1024);
+// TypeError: вызов встроенного конструктора SharedArrayBuffer
+// без new запрещено
+ +
var sab = new SharedArrayBuffer(1024);
+ +

Свойства

+ +
+
SharedArrayBuffer.length
+
Длина конструктора SharedArrayBuffer, чье значение равно 1.
+
{{jsxref("SharedArrayBuffer.prototype")}}
+
Позволяет дополнительные свойства для всех объектов SharedArrayBuffer.
+
+ +

SharedArrayBuffer объект prototype

+ +

Все экземпляры SharedArrayBuffer наследуются от {{jsxref("SharedArrayBuffer.prototype")}}.

+ +

Свойства

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','Properties')}}

+ +

Методы

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','Methods')}}

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ESDraft')}}Initial definition in ES2017.
{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ES8')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
slice(){{CompatNo}}{{CompatNo}}{{CompatGeckoDesktop("52")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
SAB in DataView{{CompatNo}}{{CompatNo}}{{CompatGeckoDesktop("53")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
slice(){{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("52")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
SAB in DataView{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("53")}} [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.1")}}
+
+ +

[1] Enabled by default in Firefox 55. In Firefox version 46 until version 54, this feature is disabled by a preference setting (in about:config, set javascript.options.shared_memory to true). 

+ +

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html b/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html new file mode 100644 index 0000000000..a493783be3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html @@ -0,0 +1,131 @@ +--- +title: 'String.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/String/@@iterator +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/@@iterator +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод [@@iterator]() возвращает новый объект итератора Iterator, который проходит по кодовым точкам строкового значения, возвращая каждую кодовую точку в виде строкового значения.

+ +

Синтаксис

+ +
string[Symbol.iterator]
+ +

Примеры

+ +

Пример: использование метода [@@iterator]()

+ +
var string = 'A\uD835\uDC68';
+
+var strIter = string[Symbol.iterator]();
+
+console.log(strIter.next().value); // "A"
+console.log(strIter.next().value); // "\uD835\uDC68"
+
+ +

Пример: использование метода [@@iterator]() вместе с циклом for..of

+ +
var string = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';
+
+for (var v of string) {
+  console.log(v);
+}
+// "A"
+// "\uD835\uDC68"
+// "B"
+// "\uD835\uDC69"
+// "C"
+// "\uD835\uDC6A"
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype-@@iterator', 'String.prototype[@@iterator]()')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("17")}} (.iterator)
+ {{CompatGeckoDesktop("27")}} (["@@iterator"])
+ {{CompatGeckoDesktop("36")}} ([Symbol.iterator])
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatGeckoMobile("17")}} (.iterator)
+ {{CompatGeckoMobile("27")}} (["@@iterator"])
+ {{CompatGeckoMobile("36")}} ([Symbol.iterator])
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Примечания по Gecko

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/anchor/index.html b/files/ru/web/javascript/reference/global_objects/string/anchor/index.html new file mode 100644 index 0000000000..43b5161a75 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/anchor/index.html @@ -0,0 +1,131 @@ +--- +title: String.prototype.anchor() +slug: Web/JavaScript/Reference/Global_Objects/String/anchor +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+ +

Метод anchor() создаёт якорный HTML-элемент {{HTMLElement("a")}}, используемый в качестве цели гиперссылки.

+ +

Синтаксис

+ +
str.anchor(name)
+ +

Параметры

+ +
+
name
+
Строка, представляющая атрибут name создаваемого тега.
+
+ +

Описание

+ +

Метод anchor() используется для программного создания и отображения якоря в документе.

+ +

Текстовая строка представляет из себя буквальный текст, который ва хотите показать пользователю. Строковый параметр name представляет атрибут name элемента {{HTMLElement("a")}}.

+ +

Якоря, созданные методом anchor(), становятся элементами в массиве {{domxref("document.anchors")}}.

+ +

Примеры

+ +

Пример: использование метода anchor()

+ +
var myString = 'Оглавление';
+
+document.body.innerHTML = myString.anchor('contents_anchor');
+
+ +

приведёт к выводу следующего HTML:

+ +
<a name="contents_anchor">Оглавление</a>
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.anchor', 'String.prototype.anchor')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Примечания по Gecko

+ +

Начиная с версии {{gecko("17")}}, символ " (кавычка) в строках, передаваемых в качестве параметра name, заменяется его HTML-мнемоникой &quot;.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/big/index.html b/files/ru/web/javascript/reference/global_objects/string/big/index.html new file mode 100644 index 0000000000..b0172de18a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/big/index.html @@ -0,0 +1,112 @@ +--- +title: String.prototype.big() +slug: Web/JavaScript/Reference/Global_Objects/String/big +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/big +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод big() создаёт HTML-элемент {{HTMLElement("big")}}, заставляющий строку отображаться большим шрифтом.

+
+

Примечание по использованию: элемент <big> был удалён из HTML5 и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства CSS.

+
+ +

Синтаксис

+
str.big()
+ +

Описание

+

Метод big() заключает строку в тег <big>: "<big>str</big>".

+ +

Примеры

+ +

Пример: использование метода big()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:

+
var worldString = 'Привет, мир';
+
+console.log(worldString.small());     // <small>Привет, мир</small>
+console.log(worldString.big());       // <big>Привет, мир</big>
+console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize>
+
+

При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута style элемента и управлять им более обобщённым способом, например:

+
document.getElementById('yourElemId').style.fontSize = '2em';
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.big', 'String.prototype.big')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/blink/index.html b/files/ru/web/javascript/reference/global_objects/string/blink/index.html new file mode 100644 index 0000000000..4cb5218f7f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/blink/index.html @@ -0,0 +1,117 @@ +--- +title: String.prototype.blink() +slug: Web/JavaScript/Reference/Global_Objects/String/blink +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/blink +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод blink() создаёт HTML-элемент {{HTMLElement("blink")}}, заставляющий строку мерцать.

+
+

Предупреждение: мерцающий текст осуждается некоторыми стандартами доступности. Сам элемент <blink> является нестандартным и устаревшим!

+
+ +

Синтаксис

+
str.blink()
+ +

Описание

+

Метод blink() заключает строку в тег <blink>: "<blink>str</blink>".

+ +

Примеры

+ + +

В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:

+
var worldString = 'Привет, мир';
+
+document.write(worldString.blink());
+document.write(worldString.bold());
+document.write(worldString.italics());
+document.write(worldString.strike());
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
<blink>Привет, мир</blink>
+<b>Привет, мир</b>
+<i>Привет, мир</i>
+<strike>Привет, мир</strike>
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.blink', 'String.prototype.blink')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/bold/index.html b/files/ru/web/javascript/reference/global_objects/string/bold/index.html new file mode 100644 index 0000000000..255ff7623c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/bold/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.bold() +slug: Web/JavaScript/Reference/Global_Objects/String/bold +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/bold +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод bold() создаёт HTML-элемент {{HTMLElement("b")}}, заставляющий строку отображаться полужирным шрифтом.

+ +

Синтаксис

+
str.bold()
+ +

Описание

+

Метод bold() заключает строку в тег <b>: "<b>str</b>".

+ +

Примеры

+ +

Пример: использование метода bold()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:

+
var worldString = 'Привет, мир';
+
+document.write(worldString.blink());
+document.write(worldString.bold());
+document.write(worldString.italics());
+document.write(worldString.strike());
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
<blink>Привет, мир</blink>
+<b>Привет, мир</b>
+<i>Привет, мир</i>
+<strike>Привет, мир</strike>
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.bold', 'String.prototype.bold')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/charat/index.html b/files/ru/web/javascript/reference/global_objects/string/charat/index.html new file mode 100644 index 0000000000..c86dae26aa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/charat/index.html @@ -0,0 +1,270 @@ +--- +title: String.prototype.charAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charAt +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод charAt() возвращает указанный символ из строки.

+ +

Синтаксис

+
str.charAt(index)
+ +

Параметры

+
+
index
+
Целое число от 0 до длины строки минус 1.
+
+ +

Описание

+

Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName равен stringName.length - 1. Если предоставленный вами параметр index выходит за пределы этого диапазона, JavaScript вернёт пустую строку.

+ +

Примеры

+ +

Пример: отображение символов из различных позиций строки

+

Следующий пример показывает символы в различных позициях в строке "Дивный новый мир":

+
var anyString = 'Дивный новый мир';
+
+console.log("Символ по индексу 0   равен '" + anyString.charAt(0)   + "'");
+console.log("Символ по индексу 1   равен '" + anyString.charAt(1)   + "'");
+console.log("Символ по индексу 2   равен '" + anyString.charAt(2)   + "'");
+console.log("Символ по индексу 3   равен '" + anyString.charAt(3)   + "'");
+console.log("Символ по индексу 4   равен '" + anyString.charAt(4)   + "'");
+console.log("Символ по индексу 5   равен '" + anyString.charAt(5)   + "'");
+console.log("Символ по индексу 999 равен '" + anyString.charAt(999) + "'");
+
+

Этот код отобразит следующее:

+
Символ по индексу 0   равен 'Д'
+Символ по индексу 1   равен 'и'
+Символ по индексу 2   равен 'в'
+Символ по индексу 3   равен 'н'
+Символ по индексу 4   равен 'ы'
+Символ по индексу 5   равен 'й'
+Символ по индексу 999 равен ''
+
+ +

Пример: получение целых символов

+

Следующий пример показывает, как обойти строку в цикле, каждый раз гарантированно получая целый символ, даже если строка содержит символы, не помещающиеся на Базовую многоязыковую плоскость (БМП).

+
var str = 'A \uD87E\uDC04 Z'; // Также можно использовать не-БМП символы напрямую
+for (var i = 0, chr; i < str.length; i++) {
+  if ((chr = getWholeChar(str, i)) === false) {
+    continue;
+  }
+  // Поместите эти строки в самое начало каждого цикла, передавая в функцию строку
+  // и текущую итерацию; возвращаемая переменная будут представлять
+  // отдельный символ
+
+  console.log(chr);
+}
+
+function getWholeChar(str, i) {
+  var code = str.charCodeAt(i);
+
+  if (isNaN(code)) {
+    return ''; // Позиция не найдена
+  }
+  if (code < 0xD800 || code > 0xDFFF) {
+    return str.charAt(i);
+  }
+
+  // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F,
+  // чтобы трактовать старшую часть суррогатной пары в частной плоскости как
+  // одиночный символ)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    if (str.length <= (i + 1)) {
+      throw 'Старшая часть суррогатной пары без следующей младшей';
+    }
+    var next = str.charCodeAt(i + 1);
+      if (0xDC00 > next || next > 0xDFFF) {
+        throw 'Старшая часть суррогатной пары без следующей младшей';
+      }
+      return str.charAt(i) + str.charAt(i + 1);
+  }
+  // Младшая часть суррогатной пары (0xDC00 <= code && code <= 0xDFFF)
+  if (i === 0) {
+    throw 'Младшая часть суррогатной пары без предшествующей старшей';
+  }
+  var prev = str.charCodeAt(i - 1);
+
+  // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую
+  // часть суррогатной пары в частной плоскости как одиночный символ)
+  if (0xD800 > prev || prev > 0xDBFF) {
+    throw 'Младшая часть суррогатной пары без предшествующей старшей';
+  }
+  // Теперь мы можем пропустить младшую часть суррогатной пары,
+  // которую мы уже обработали
+  return false;
+}
+
+

В среде, поддерживающей JavaScript 1.7+ (например, в Firefox), который позволяет деструктуризующее присваивание, можно использовать более лаконичную и более гибкую альтернативу в том смысле, что она автоматически увеличивает счётчик (если символ гарантированно является суррогатной парой).

+
var str = 'A\uD87E\uDC04Z'; // Также можно использовать не-БМП символы напрямую
+for (var i = 0, chr; i < str.length; i++) {
+  [chr, i] = getWholeCharAndI(str, i);
+  // Поместите эту строку в самое начало каждого цикла, передавая в функцию строку
+  // и текущую итерацию; возвращаемый массив будет содержать отдельный символ и
+  // новое значение счётчика цикла 'i' (изменится только при встрече суррогатной пары)
+
+  console.log(chr);
+}
+
+function getWholeCharAndI(str, i) {
+  var code = str.charCodeAt(i);
+
+  if (isNaN(code)) {
+    return ''; // Позиция не найдена
+  }
+  if (code < 0xD800 || code > 0xDFFF) {
+    return [str.charAt(i), i]; // Обычный символ, оставляем переменную 'i' неизменной
+  }
+
+  // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F,
+  // чтобы трактовать старшую часть суррогатной пары в частной плоскости как
+  // одиночный символ)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    if (str.length <= (i + 1)) {
+      throw 'Старшая часть суррогатной пары без следующей младшей';
+    }
+    var next = str.charCodeAt(i + 1);
+      if (0xDC00 > next || next > 0xDFFF) {
+        throw 'Старшая часть суррогатной пары без следующей младшей';
+      }
+      return [str.charAt(i) + str.charAt(i + 1), i + 1];
+  }
+  // Младшая часть суррогатной пары (0xDC00 <= code && code <= 0xDFFF)
+  if (i === 0) {
+    throw 'Младшая часть суррогатной пары без предшествующей старшей';
+  }
+  var prev = str.charCodeAt(i - 1);
+
+  // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую
+  // часть суррогатной пары в частной плоскости как одиночный символ)
+  if (0xD800 > prev || prev > 0xDBFF) {
+    throw 'Младшая часть суррогатной пары без предшествующей старшей';
+  }
+  // Возвращаем следующий символ (и увеличиваем счётчик)
+  return [str.charAt(i + 1), i + 1];
+}
+
+ +

Пример: добавление к методу charAt() поддержки символов не в Базовой многоязыковой плоскости (БМП)

+

В то время как пример выше может быть более полезен тем, кто хочет поддерживать символы не в плоскости БМП (поскольку он не требует от вызывающей стороны знания о том, где может встретиться символ из не-БМП), в случае, если кто-то желает выбирать символы по индексу и трактовать суррогатную пару внутри строки как один символ, он может использовать следующий код:

+
function fixedCharAt(str, idx) {
+  var ret = '';
+  str += '';
+  var end = str.length;
+
+  var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+  while ((surrogatePairs.exec(str)) != null) {
+    var li = surrogatePairs.lastIndex;
+    if (li - 2 < idx) {
+      idx++;
+    } else {
+      break;
+    }
+  }
+
+  if (idx >= end || idx < 0) {
+    return '';
+  }
+
+  ret += str.charAt(idx);
+
+  if (/[\uD800-\uDBFF]/.test(ret) && /[\uDC00-\uDFFF]/.test(str.charAt(idx + 1))) {
+    // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары
+    ret += str.charAt(idx + 1);
+  }
+  return ret;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.5.4.4', 'String.prototype.charAt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.charat', 'String.prototype.charAt')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html b/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html new file mode 100644 index 0000000000..d5c58899cf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html @@ -0,0 +1,205 @@ +--- +title: String.prototype.charCodeAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +tags: + - JavaScript + - Method + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод charCodeAt() возвращает числовое значение Юникода для символа по указанному индексу (за исключением кодовых точек Юникода, больших 0x10000).

+ +

Синтаксис

+ +
str.charCodeAt(index)
+ +

Параметры

+ +
+
index
+
Целое число больше, либо равное 0 и меньше длины строки; если параметр не является числом, он устанавливается в 0.
+
+ +

Описание

+ +

Кодовые точки Юникода простираются в диапазоне от 0 до 1114111 (0x10FFFF). Первые 128 кодовых точек Юникода напрямую отображаются в кодировку ASCII. Информацию по Юникоду смотрите в Руководстве по JavaScript.

+ +

Обратите внимание, что метод charCodeAt() всегда возвращает значение, меньшее 65536. Так происходит потому, что большие кодовые точки представляются парой (меньших значений) «суррогатных» псевдо-символов, которые используются для составления настоящего символа. Поэтому для того, чтобы получить полный символ для значений символов от 65536 и выше, необходимо получить не только значение charCodeAt(i), но также значение charCodeAt(i + 1) (как если бы строка состояла из двух букв). Смотрите второй и третий примеры ниже.

+ +

Метод charCodeAt() возвращает {{jsxref("Global_Objects/NaN", "NaN")}}, если указанный индекс меньше нуля или больше длины строки.

+ +

Обратная совместимость: в более старых версиях (например, в JavaScript 1.2) метод charCodeAt() возвращал число из кодировки ISO-Latin-1 по указанному индексу. Диапазон символов в кодировке ISO-Latin-1 простирается от 0 до 255. Первые 127 чисел напрямую отображаются в кодировку ASCII.

+ +

Примеры

+ +

Пример: использование метода charCodeAt()

+ +

В следующем примере возвращается число 65, значение Unicode для латинского символа «A».

+ +
'ABC'.charCodeAt(0); // вернёт 65
+
+ +

Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке неизвестно

+ +

Эта версия может использоваться в циклах for, даже когда неизвестно, были ли до указанной позиции символы из не-БМП.

+ +
function fixedCharCodeAt(str, idx) {
+  // например, fixedCharCodeAt('\uD800\uDC00', 0); // 65536
+  // например, fixedCharCodeAt('\uD800\uDC00', 1); // false
+  idx = idx || 0;
+  var code = str.charCodeAt(idx);
+  var hi, low;
+
+  // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F,
+  // чтобы трактовать старшую часть суррогатной пары в частной плоскости как
+  // одиночный символ)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    hi = code;
+    low = str.charCodeAt(idx + 1);
+    if (isNaN(low)) {
+      throw 'Старшая часть суррогатной пары без следующей младшей в fixedCharCodeAt()';
+    }
+    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
+  }
+  if (0xDC00 <= code && code <= 0xDFFF) { // Младшая часть суррогатной пары
+    // Мы возвращаем false, чтобы цикл пропустил эту итерацию,
+    // поскольку суррогатная пара
+    // уже обработана в предыдущей итерации
+    return false;
+    // hi = str.charCodeAt(idx - 1);
+    // low = code;
+    // return ((hi - 0xD800) * 0x400) +
+    //   (low - 0xDC00) + 0x10000;
+  }
+  return code;
+}
+
+ +

Пример: исправление метода charCodeAt() для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке известно

+ +
function knownCharCodeAt(str, idx) {
+  str += '';
+  var code,
+      end = str.length;
+
+  var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+  while ((surrogatePairs.exec(str)) != null) {
+    var li = surrogatePairs.lastIndex;
+    if (li - 2 < idx) {
+      idx++;
+    }
+    else {
+      break;
+    }
+  }
+
+  if (idx >= end || idx < 0) {
+    return NaN;
+  }
+
+  code = str.charCodeAt(idx);
+
+  var hi, low;
+  if (0xD800 <= code && code <= 0xDBFF) {
+    hi = code;
+    low = str.charCodeAt(idx + 1);
+    // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары
+    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
+  }
+  return code;
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.5', 'String.prototype.charCodeAt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.charcodeat', 'String.prototype.charCodeAt')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html b/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html new file mode 100644 index 0000000000..db2b8a4e19 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html @@ -0,0 +1,174 @@ +--- +title: String.prototype.codePointAt() +slug: Web/JavaScript/Reference/Global_Objects/String/codePointAt +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод codePointAt() возвращает неотрицательное целое число, являющееся закодированным в UTF-16 значением кодовой точки.

+ +

Синтаксис

+ +
str.codePointAt(pos)
+ +

Параметры

+ +
+
pos
+
Позиция элемента в строке, чья кодовоя точка возвращается функцией.
+
+ +

Описание

+ +

Если на указанной позиции нет элементов, будет возвращено значение {{jsxref("Global_Objects/undefined", "undefined")}}. Если суррогатная пара UTF-16 не начинается в позиции pos, будет возвращено кодовое значение в позиции pos.

+ +

Примеры

+ +

Пример: использование метода codePointAt()

+ +
'ABC'.codePointAt(1);          // 66
+'\uD800\uDC00'.codePointAt(0); // 65536
+
+'XYZ'.codePointAt(42); // undefined
+
+ +

Полифилл

+ +

Следующий полифилл расширяет прототип строки определённой в ECMAScript 6 функцией codePointAt(), если браузер не имеет её родной поддержки.

+ +
/*! http://mths.be/codepointat v0.1.0 от @mathias */
+if (!String.prototype.codePointAt) {
+  (function() {
+    'use strict'; // необходимо для поддержки методов `apply`/`call` с `undefined`/`null`
+    var codePointAt = function(position) {
+      if (this == null) {
+        throw TypeError();
+      }
+      var string = String(this);
+      var size = string.length;
+      // `ToInteger`
+      var index = position ? Number(position) : 0;
+      if (index != index) { // лучше, чем `isNaN`
+        index = 0;
+      }
+      // Проверяем выход индекса за границы строки
+      if (index < 0 || index >= size) {
+        return undefined;
+      }
+      // Получаем первое кодовое значение
+      var first = string.charCodeAt(index);
+      var second;
+      if ( // проверяем, не начинает ли оно суррогатную пару
+        first >= 0xD800 && first <= 0xDBFF && // старшая часть суррогатной пары
+        size > index + 1 // следующее кодовое значение
+      ) {
+        second = string.charCodeAt(index + 1);
+        if (second >= 0xDC00 && second <= 0xDFFF) { // младшая часть суррогатной пары
+          // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+          return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+        }
+      }
+      return first;
+    };
+    if (Object.defineProperty) {
+      Object.defineProperty(String.prototype, 'codePointAt', {
+        'value': codePointAt,
+        'configurable': true,
+        'writable': true
+      });
+    } else {
+      String.prototype.codePointAt = codePointAt;
+    }
+  }());
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("41")}}{{CompatGeckoDesktop("29")}}11 на Windows 10 Preview{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/concat/index.html b/files/ru/web/javascript/reference/global_objects/string/concat/index.html new file mode 100644 index 0000000000..b8df563087 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/concat/index.html @@ -0,0 +1,121 @@ +--- +title: String.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/String/concat +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/concat +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод concat() объединяет текст из двух или более строк и возвращает новую строку.

+ +

Синтаксис

+
str.concat(string2, string3[, ..., stringN])
+ +

Параметры

+
+
string2...stringN
+
Строки, объединяемые в эту строку.
+
+ +

Описание

+

Метод concat() объединяет текст из двух или более строк и возвращает новую строку. Изменения в тексте в одной строке не затрагивают остальные строки.

+ +

Примеры

+ +

Пример: использование метода concat()

+

В следующем примере несколько строк объединяются в одну.

+
var hello = 'Привет, ';
+console.log(hello.concat('Кевин', ', удачного дня.'));
+
+/* Привет, Кевин, удачного дня. */
+
+ +

Производительность

+

Настоятельно рекомендуется вместо метода concat() использовать {{jsxref("Operators/Assignment_Operators", "операторы присваивания", "", 1)}} (+, +=). Смотрите это сравнение производительности.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.6', 'String.prototype.concat')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.concat', 'String.prototype.concat')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/endswith/index.html b/files/ru/web/javascript/reference/global_objects/string/endswith/index.html new file mode 100644 index 0000000000..f2f6aa5c2c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/endswith/index.html @@ -0,0 +1,145 @@ +--- +title: String.prototype.endsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/endsWith +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод endsWith() позволяет определить, заканчивается ли строка символами указанными в скобках, возвращая, соотвественно, true или false.

+ +

Синтаксис

+ +
str.endsWith(searchString[, length])
+ +

Параметры

+ +
+
searchString
+
Символы, искомые в конце строки.
+
length
+
Необязательный параметр. Позволяет искать внутри строки, обрезая её по диапазону; по умолчанию равен длине строки.
+
+ +

Возвращаемое значение

+ +

true если данные символы находятся в конце строки; в противном случае, false.

+ +

Описание

+ +

Этот метод позволяет определять, заканчивается ли строка искомыми символами. Метод чувствителен к регистру.

+ +

Примеры

+ +

Пример: использование метода endsWith()

+ +
var str = 'Быть или не быть, вот в чём вопрос.';
+
+console.log(str.endsWith('вопрос.'));   // true
+console.log(str.endsWith('быть'));      // false
+console.log(str.endsWith('быть', 16));  // true
+
+ +

Полифилл

+ +

Этот метод был добавлен к спецификации ECMAScript 6 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:

+ +
if (!String.prototype.endsWith) {
+  Object.defineProperty(String.prototype, 'endsWith', {
+    value: function(searchString, position) {
+      var subjectString = this.toString();
+      if (position === undefined || position > subjectString.length) {
+        position = subjectString.length;
+      }
+      position -= searchString.length;
+      var lastIndex = subjectString.indexOf(searchString, position);
+      return lastIndex !== -1 && lastIndex === position;
+    }
+  });
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("41")}}{{CompatGeckoDesktop("17")}}12{{CompatNo}}{{CompatSafari("9")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("36")}}{{CompatGeckoMobile("17")}}12{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/fixed/index.html b/files/ru/web/javascript/reference/global_objects/string/fixed/index.html new file mode 100644 index 0000000000..8f3feae555 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fixed/index.html @@ -0,0 +1,108 @@ +--- +title: String.prototype.fixed() +slug: Web/JavaScript/Reference/Global_Objects/String/fixed +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод fixed() создаёт HTML-элемент {{HTMLElement("tt")}}, заставляющий строку отображаться моноширинным шрифтом.

+ +

Синтаксис

+
str.fixed()
+ +

Описание

+

Метод fixed() заключает строку в тег <tt>: "<tt>str</tt>".

+ +

Примеры

+ +

Пример: использование метода fixed()

+

В следующем примере для изменения форматирования строки используется метод fixed():

+
var worldString = 'Привет, мир';
+
+document.write(worldString.fixed());
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
<tt>Привет, мир</tt>
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.fixed', 'String.prototype.fixed')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html b/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html new file mode 100644 index 0000000000..549d0e2b54 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html @@ -0,0 +1,119 @@ +--- +title: String.prototype.fontcolor() +slug: Web/JavaScript/Reference/Global_Objects/String/fontcolor +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод fontcolor() создаёт HTML-элемент {{HTMLElement("font")}}, заставляющий строку отображаться шрифтом указанного цвета.

+
+

Примечание по использованию: элемент <font> был удалён из HTML5 и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства CSS.

+
+ +

Синтаксис

+
str.fontcolor(color)
+ +

Параметры

+
+
color
+
Строка, выражающая цвет в виде шестнадцатеричного триплета RGB, либо в виде названия цвета. Названия цветов перечислены в справочнике по значению цвета в CSS.
+
+ +

Описание

+

Ксли вы выразили цвет в виде шестнадцатеричного триплета RGB, вы должны использовать формат rrggbb. Например, шестнадцатеричные значения RGB для оранжево-розового цвета такие: красный=FA, зелёный=80 и синий=72, так что RGB-триплет для оранжево-розового цвета будет следующим "FA8072".

+ +

Примеры

+ +

Пример: использование метода fontcolor()

+

В следующем примере метод fontcolor() используется для изменения цвета строки путём генерирования строки с HTML-тегом <font>.

+
var worldString = 'Привет, мир';
+
+console.log(worldString.fontcolor('red') +  ' на этой строке красный');
+// '<font color="red">Привет, мир</font> на этой строке красный'
+
+console.log(worldString.fontcolor('FF00') + ' на этой строке красный в шестнадцатеричной форме');
+// '<font color="FF00">Привет, мир</font> на этой строке красный в шестнадцатеричной форме'
+
+

При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута style элемента и управлять им более обобщённым способом, например:

+
document.getElementById('yourElemId').style.color = 'red';
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html b/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html new file mode 100644 index 0000000000..3ed48133c3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html @@ -0,0 +1,118 @@ +--- +title: String.prototype.fontsize() +slug: Web/JavaScript/Reference/Global_Objects/String/fontsize +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод fontsize() создаёт HTML-элемент {{HTMLElement("font")}}, заставляющий строку отображаться шрифтом указанного размера.

+
+

Примечание по использованию: элемент <font> был удалён из HTML5 и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства CSS.

+
+ +

Синтаксис

+
str.fontsize(size)
+ +

Параметры

+
+
size
+
Целое число от 1 до 7, либо строка с целым числом со знаком по модулю от 1 до 7.
+
+ +

Описание

+

При задании размера в виде целого числа, вы устанавливаете размер шрифта строки str в один из 7 предопределённых размеров. При задании размера в виде строки, например, "-2", вы задаёте размер шрифта строки str относительно размера, установленного тегом {{HTMLElement("basefont")}}.

+ +

Примеры

+ +

Пример: использование метода fontsize()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:

+
var worldString = 'Привет, мир';
+
+console.log(worldString.small());     // <small>Привет, мир</small>
+console.log(worldString.big());       // <big>Привет, мир</big>
+console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize>
+
+

При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута style элемента и управлять им более обобщённым способом, например:

+
document.getElementById('yourElemId').style.fontSize = '0.7em';
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html b/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html new file mode 100644 index 0000000000..04e5c26ada --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html @@ -0,0 +1,138 @@ +--- +title: String.fromCharCode() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +tags: + - JavaScript + - Method + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Статический метод String.fromCharCode() возвращает строку, созданную из указанной последовательности значений единиц кода UTF-16.

+ +

+ +

Синтаксис

+ +
String.fromCharCode(num1[, ...[, numN]])
+ +

Параметры

+ +
+
num1, ..., numN
+
Последовательность чисел, являющихся значениями единиц кода UTF-16. Диапазон составляет от 0 до 65535 (0xFFFF). Числа больше 0xFFFF усекаются. Проверка достоверности не производится.
+
+ +

Описание

+ +

Этот метод возвращает примитивную строку, а не объект {{jsxref("Global_Objects/String", "String")}}.

+ +

Поскольку метод fromCharCode() является статическим методом объекта {{jsxref("Global_Objects/String", "String")}}, вы всегда должны использовать его как String.fromCharCode(), а не как метод созданного вами экземпляра {{jsxref("Global_Objects/String", "String")}}.

+ +

Примеры

+ +

Пример: использование метода fromCharCode()

+ +

Следующий пример вернёт строку "ABC".

+ +
String.fromCharCode(65, 66, 67);  // "ABC"
+
+ +

Полная таблица UTF-16

+ +

Как заставить его работать с большими значениями

+ +

Хотя большинство распространённых значений Юникода может быть представлено одним 16-битным числом (как ожидалось на ранней стадии стандартизации JavaScript) и метод fromCharCode() может использоваться для возврата одного символа для самых распространённых значений (точнее, значений UCS-2, которые являются подмножеством самых распространённых символов UTF-16), для работы со ВСЕМИ допустимыми значениями Юникода (занимающими до 21 бита) одного метода fromCharCode() недостаточно. Поскольку большие кодовые точки используют (самое меньшее) два «суррогатных» числа для представления одного символа, для возврата таких пар можно использовать метод {{jsxref("String.fromCodePoint()")}} (являющийся частью черновика ES6) и, таким образом, адекватно представлять эти символы.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.3.2', 'StringfromCharCode')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.fromcharcodes', 'String.fromCharCode')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html new file mode 100644 index 0000000000..6f4cde3a52 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html @@ -0,0 +1,213 @@ +--- +title: String.fromCodePoint() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Статический метод String.fromCodePoint() возвращает строку, созданную из указанной последовательности кодовых точек.

+ +

Синтаксис

+ +
String.fromCodePoint(num1[, ...[, numN]])
+ +

Параметры

+ +
+
num1, ..., numN
+
Последовательность кодовых точек.
+
+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Исключение {{jsxref("Global_Objects/RangeError", "RangeError")}} выбрасывается в случае, если методу предоставлена неверная кодовая точка Юникода (например, "RangeError: NaN is not a valid code point").
+
+ +

Описание

+ +

Поскольку метод fromCodePoint() является статическим методом объекта {{jsxref("Global_Objects/String", "String")}}, вы всегда должны использовать его как String.fromCodePoint(), а не как метод созданного вами экземпляра {{jsxref("Global_Objects/String", "String")}}.

+ +

Примеры

+ +

Пример: использование метода fromCodePoint()

+ +
String.fromCodePoint(42);       // "*"
+String.fromCodePoint(65, 90);   // "AZ"
+String.fromCodePoint(0x404);    // "\u0404"
+String.fromCodePoint(0x2F804);  // "\uD87E\uDC04"
+String.fromCodePoint(194564);   // "\uD87E\uDC04"
+String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07"
+
+String.fromCodePoint('_');      // RangeError
+String.fromCodePoint(Infinity); // RangeError
+String.fromCodePoint(-1);       // RangeError
+String.fromCodePoint(3.14);     // RangeError
+String.fromCodePoint(3e-2);     // RangeError
+String.fromCodePoint(NaN);      // RangeError
+
+ +
// Метод String.fromCharCode() не может вернуть символ по такой большой кодовой точке
+// Следующий же метод может вернуть 4-байтный символ так же, как и обычный
+// 2-байтный (то есть, он может вернуть один символ, который на самом деле
+// имеет длину 2, а не 1!)
+console.log(String.fromCodePoint(0x2F804)); // или 194564 в десятичной записи
+
+ +

Полифилл

+ +

Метод String.fromCodePoint() был добавлен к стандарту ECMAScript в 6-й версии и может поддерживаться ещё не во всех браузерах или окружениях. Используйте код ниже в качестве полифилла:

+ +
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
+if (!String.fromCodePoint) {
+  (function() {
+    var defineProperty = (function() {
+      // IE 8 поддерживает метод `Object.defineProperty` только на элементах DOM
+      try {
+        var object = {};
+        var $defineProperty = Object.defineProperty;
+        var result = $defineProperty(object, object, object) && $defineProperty;
+      } catch(error) {}
+      return result;
+    }());
+    var stringFromCharCode = String.fromCharCode;
+    var floor = Math.floor;
+    var fromCodePoint = function() {
+      var MAX_SIZE = 0x4000;
+      var codeUnits = [];
+      var highSurrogate;
+      var lowSurrogate;
+      var index = -1;
+      var length = arguments.length;
+      if (!length) {
+        return '';
+      }
+      var result = '';
+      while (++index < length) {
+        var codePoint = Number(arguments[index]);
+        if (
+          !isFinite(codePoint) ||       // `NaN`, `+Infinity` или `-Infinity`
+          codePoint < 0 ||              // неверная кодовая точка Юникода
+          codePoint > 0x10FFFF ||       // неверная кодовая точка Юникода
+          floor(codePoint) != codePoint // не целое число
+        ) {
+          throw RangeError('Invalid code point: ' + codePoint);
+        }
+        if (codePoint <= 0xFFFF) { // кодовая точка Базовой многоязыковой плоскости (БМП)
+          codeUnits.push(codePoint);
+        } else { // Астральная кодовая точка; делим её на суррогатную пару
+          // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+          codePoint -= 0x10000;
+          highSurrogate = (codePoint >> 10) + 0xD800;
+          lowSurrogate = (codePoint % 0x400) + 0xDC00;
+          codeUnits.push(highSurrogate, lowSurrogate);
+        }
+        if (index + 1 == length || codeUnits.length > MAX_SIZE) {
+          result += stringFromCharCode.apply(null, codeUnits);
+          codeUnits.length = 0;
+        }
+      }
+      return result;
+    };
+    if (defineProperty) {
+      defineProperty(String, 'fromCodePoint', {
+        'value': fromCodePoint,
+        'configurable': true,
+        'writable': true
+      });
+    } else {
+      String.fromCodePoint = fromCodePoint;
+    }
+  }());
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("41")}}{{CompatGeckoDesktop("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/includes/index.html b/files/ru/web/javascript/reference/global_objects/string/includes/index.html new file mode 100644 index 0000000000..a766377bb8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/includes/index.html @@ -0,0 +1,127 @@ +--- +title: String.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/String/includes +tags: + - JavaScript + - Prototype + - Reference + - String + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/String/includes +--- +
{{JSRef}}
+ +

Метод includes() проверяет, содержит ли строка заданную подстроку, и возвращает, соответственно true или false.

+ +

Синтаксис

+ +
str.includes(searchString[, position])
+ +

Параметры

+ +
+
searchString
+
Строка для поиска в данной строке.
+
position {{optional_inline}}
+
Позиция в строке, с которой начинать поиск строки  searchString, по умолчанию 0.
+
+ +

Возвращаемое значение

+ +

true, если искомая строка была найдена в данной строке; иначе false.

+ +

Описание

+ +

Этот метод позволяет вам определять, содержит ли строка другую строку.

+ +

Чувствительность к регистру символов

+ +

Метод includes() является регистрозависимым. Например, следующее выражение вернёт false:

+ +
'Синий кит'.includes('синий'); // вернёт false
+
+ +

Примеры

+ +

Использование includes()

+ +
var str = 'Быть или не быть вот в чём вопрос.';
+
+console.log(str.includes('Быть'));       // true
+console.log(str.includes('вопрос'));    // true
+console.log(str.includes('несуществующий')); // false
+console.log(str.includes('Быть', 1));    // false
+console.log(str.includes('БЫТЬ'));       // false
+
+ +

Полифилл

+ +

Этот метод был добавлен в спецификации ECMAScript 2015 и может быть недоступен в некоторых реализациях JavaScript. Однако, можно легко эмулировать этот метод:

+ +
if (!String.prototype.includes) {
+  String.prototype.includes = function(search, start) {
+    'use strict';
+    if (typeof start !== 'number') {
+      start = 0;
+    }
+
+    if (start + search.length > this.length) {
+      return false;
+    } else {
+      return this.indexOf(search, start) !== -1;
+    }
+  };
+}
+
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-string.prototype.includes', 'String.prototype.includes')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

{{Compat("javascript.builtins.String.includes")}}

+ +

String.prototype.contains

+ +

 

+ +

В Firefox с версии 18 по версию 39, этот метод назывался «contains». Он был переименован в «includes» в замечании {{bug(1102219)}} по следующей причине:

+ +

Как было сообщено, некоторые сайты, использующие MooTools 1.2, ломаются в Firefox 17. Эта версия MooTools проверяет существование метода String.prototype.contains() и, если он не существует, добавляет свой собственный. С введением этого метода в Firefox 17, поведение этой проверки изменилось таким образом, что реализация String.prototype.contains(), основанная на MooTools, сломалась. В результате это изменение было отключено в Firefox 17. Метод String.prototype.contains() доступен в следующей версии Firefox — Firefox 18.

+ +

MooTools 1.3 принудительно использует свою собственную версию метода String.prototype.contains(), так что использующие его веб-сайты не должны ломаться. Тем не менее, следует отметить, что сигнатура метода в MooTools 1.3 отличается от сигнатуры метода в ECMAScript 2015 (во втором аргументе). В MooTools 1.5+ сигнатура изменена для соответствия стандарту ES2015.

+ +

 

+ +

В Firefox 48, метод String.prototype.contains() был удалён. Следует использовать только String.prototype.includes().

+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/index.html b/files/ru/web/javascript/reference/global_objects/string/index.html new file mode 100644 index 0000000000..887272aab2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/index.html @@ -0,0 +1,301 @@ +--- +title: String +slug: Web/JavaScript/Reference/Global_Objects/String +tags: + - JavaScript + - NeedsUpdate + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Объект String используется, чтобы представить и конструировать последовательность символов.

+ +

Синтаксис

+ +

Строковые литералы могут быть следующих форм:

+ +
'строка текста'
+"строка текста"
+"中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어 தமிழ்"
+
+ +

Кроме регулярных печатных символов можно использовать специальные символы, которые можно закодировать, используя нотацию escape-последовательностей:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
КодВывод
\0нулевой символ (символ NUL)
\'одинарная кавычка
\"двойная кавычка
\\обратный слэш
\nновая строка
\rвозврат каретки
\vвертикальная табуляция
\tтабуляция
\bзабой
\fподача страницы
\uXXXXкодовая точка Юникода
\xXXсимвол из кодировки Latin-1
+ +

Либо можно использовать глобальный объект String напрямую:

+ +
String(thing)
+new String(thing)
+
+ +

Параметры

+ +
+
thing
+
Всё, что может быть преобразовано в строку.
+
+ +

Описание

+ +

Строки полезны для хранения данных, которые можно представить в текстовой форме. Некоторые из наиболее частых операций со строками — это проверка их {{jsxref("String.length", "длины", "", 1)}}, построение строки с помощью операций строковой конкатенации + и +=, проверка на существование или местоположение подстрок с помощью метода {{jsxref("String.prototype.indexOf()", "indexOf()")}}, либо извлечение подстрок с помощью метода {{jsxref("String.prototype.substring()", "substring()")}}.

+ +

Доступ к символам

+ +

Существует два способа добраться до конкретного символа в строке. В первом способе используется метод {{jsxref("String.prototype.charAt()", "charAt()")}}:

+ +
return 'кот'.charAt(1); // вернёт "о"
+
+ +

Другим способом (введённым в ECMAScript 5) является рассмотрение строки как массивоподобного объекта, в котором символы имеют соответствующие числовые индексы:

+ +
return 'кот'[1]; // вернёт "о"
+
+ +

При доступе к символам посредством нотации с квадратными скобками, попытка удалить символ, или присвоить значение числовому свойству закончится неудачей, поскольку эти свойства являются незаписываемыми и ненастраиваемыми. Смотрите документацию по методу {{jsxref("Object.defineProperty()")}} для дополнительной информации.

+ +

Сравнение строк

+ +

Разработчики на C имеют для сравнения строк функцию strcmp(). В JavaScript вы просто используете операторы меньше и больше:

+ +
var a = 'a';
+var b = 'b';
+if (a < b) { // true
+  print(a + ' меньше чем ' + b);
+} else if (a > b) {
+  print(a + ' больше чем ' + b);
+} else {
+  print(a + ' и ' + b + ' равны.');
+}
+
+ +

Подобный результат также может быть достигнут путём использования метода {{jsxref("String.prototype.localeCompare()", "localeCompare()")}}, имеющегося у всех экземпляров String.

+ +

Разница между строковыми примитивами и объектами String

+ +

Обратите внимание, что JavaScript различает объекты String и значения строкового примитива (то же самое верно и для объектов {{jsxref("Global_Objects/Boolean", "Boolean")}} и {{jsxref("Global_Objects/Number", "Number")}}).

+ +

Строковые литералы (обозначаемые двойными или одинарными кавычками) и строки, возвращённые вызовом String в неконструкторном контексте (то есть, без использования ключевого слова {{jsxref("Operators/new", "new")}}) являются строковыми примитивами. JavaScript автоматически преобразует примитивы в объекты String, так что на строковых примитивах возможно использовать методы объекта String. В контекстах, когда на примитивной строке вызывается метод или происходит поиск свойства, JavaScript автоматически оборачивает строковый примитив объектом и вызывает на нём метод или ищет в нём свойство.

+ +
var s_prim = 'foo';
+var s_obj = new String(s_prim);
+
+console.log(typeof s_prim); // выведет 'string'
+console.log(typeof s_obj);  // выведет 'object'
+
+ +

Строковые примитивы и объекты String также дают разные результаты при использовании глобальной функции {{jsxref("Global_Objects/eval", "eval()")}}. Примитивы, передаваемые в eval(), трактуются как исходный код; объекты же String трактуются так же, как и все остальные объекты, а именно: возвращается сам объект. Например:

+ +
var s1 = '2 + 2';             // создаёт строковый примитив
+var s2 = new String('2 + 2'); // создаёт объект String
+console.log(eval(s1));        // выведет число 4
+console.log(eval(s2));        // выведет строку '2 + 2'
+
+ +

По этим причинам код может сломаться, если он получает объекты String, а ожидает строковые примитивы, хотя в общем случае вам не нужно беспокоиться о различиях между ними.

+ +

Объект String также всегда может быть преобразован в его примитивный аналог при помощи метода {{jsxref("String.prototype.valueOf()", "valueOf()")}}.

+ +
console.log(eval(s2.valueOf())); // выведет число 4
+
+ +
Примечание: для того, чтобы узнать больше о другом возможном подходе к строкам в JavaScript, прочитайте статью о StringView — C-подобном представлении строк на основе типизирванных массивов.
+ +

Свойства

+ +
+
{{jsxref("String.prototype")}}
+
Позволяет добавлять свойства к объекту String.
+
+ +
{{jsOverrides("Function", "Properties", "prototype")}}
+ +

Методы

+ +
+
{{jsxref("String.fromCharCode()")}}
+
Возвращает строку, созданную из указанной последовательности значений Юникода.
+
{{jsxref("String.fromCodePoint()")}} {{experimental_inline}}
+
Возвращает строку, созданную из указанной последовательности кодовых точек Юникода.
+
{{jsxref("String.raw()")}} {{experimental_inline}}
+
Возвращает строку, созданную из сырой шаблонной строки.
+
+ +
{{jsOverrides("Function", "Methods", "fromCharCode", "fromCodePoint", "raw")}}
+ +

Общие методы объекта String

+ +

Методы экземпляров String также доступны в Firefox как часть JavaScript 1.6 (который не является частью стандарта ECMAScript) на объекте String, что позволяет применять эти методы к любому объекту:

+ +
var num = 15;
+console.log(String.replace(num, /5/, '2'));
+
+ +

{{jsxref("Global_Objects/Array", "Общие методы", "#Array_generic_methods", 1)}} также доступны для объекта {{jsxref("Global_Objects/Array", "Array")}}.

+ +

Следующая прослойка позволяет использовать их во всех браузерах:

+ +
/*globals define*/
+// Предполагаем, что все требуемые методы экземпляров String уже присутствуют
+// (для них так же можно использовать полифиллы, если их нет)
+(function() {
+  'use strict';
+
+  var i,
+    // Мы могли построить массив методов следующим образом, однако метод
+    //   getOwnPropertyNames() нельзя реализовать на JavaScript:
+    // Object.getOwnPropertyNames(String).filter(function(methodName) {
+    //   return typeof String[methodName] === 'function';
+    // });
+    methods = [
+      'quote', 'substring', 'toLowerCase', 'toUpperCase', 'charAt',
+      'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith',
+      'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase',
+      'toLocaleUpperCase', 'localeCompare', 'match', 'search',
+      'replace', 'split', 'substr', 'concat', 'slice'
+    ],
+    methodCount = methods.length,
+    assignStringGeneric = function(methodName) {
+      var method = String.prototype[methodName];
+      String[methodName] = function(arg1) {
+        return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
+      };
+    };
+
+  for (i = 0; i < methodCount; i++) {
+    assignStringGeneric(methods[i]);
+  }
+}());
+
+ +

Экземпляры объекта String

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Properties')}}
+ +

Методы

+ +

Методы, не относящиеся к HTML

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Methods_unrelated_to_HTML')}}
+ +

Методы-обёртки HTML

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'HTML_wrapper_methods')}}
+ +

Примеры

+ +

Пример: преобразование в строку

+ +

Объект String можно использовать как «безопасную» альтернативу методу {{jsxref("String.prototype.toString()", "toString()")}}, так как хотя он обычно и вызывает соответствующий метод toString(), он также работает и для значений {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}}. Например:

+ +
var outputStrings = [];
+for (var i = 0, n = inputValues.length; i < n; ++i) {
+  outputStrings.push(String(inputValues[i]));
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.5', 'String')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string-objects', 'String')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.String",2)}}

+ +
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/indexof/index.html b/files/ru/web/javascript/reference/global_objects/string/indexof/index.html new file mode 100644 index 0000000000..2b91bdc97a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/indexof/index.html @@ -0,0 +1,194 @@ +--- +title: String.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/indexOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод indexOf() возвращает индекс первого вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, начиная с индекса fromIndex. Возвращает -1, если значение не найдено.

+ +

Синтаксис

+ +
str.indexOf(searchValue, [fromIndex])
+ +

Параметры

+ +
+
searchValue
+
Строка, представляющая искомое значение.
+
fromIndex
+
Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если fromIndex < 0, поиск ведётся по всей строке (так же, как если бы был передан 0). Если fromIndex >= str.length, метод вернёт -1, но только в том случае, если searchValue не равен пустой строке, в этом случае он вернёт str.length.
+
+ +

Описание

+ +

Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName равен stringName.length - 1.

+ +
'Синий кит'.indexOf('Синий');   // вернёт  0
+'Синий кит'.indexOf('Голубой');  // вернёт -1
+'Синий кит'.indexOf('кит', 0);    // вернёт  6
+'Синий кит'.indexOf('кит', 5);    // вернёт  6
+'Синий кит'.indexOf('', 8);       // вернёт  8
+'Синий кит'.indexOf('', 9);      // вернёт 9
+'Синий кит'.indexOf('', 10);      // вернёт 9
+
+ +

Регистрозависимость

+ +

Метод indexOf() является регистрозависимым. Например, следующее выражение вернёт -1:

+ +
'Синий кит'.indexOf('синий'); // вернёт -1
+
+ +

Проверка на вхождение

+ +

Обратите внимание, что значение 0 не вычисляется в true, а значение -1 не вычисляется в false. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:

+ +
'Синий кит'.indexOf('Синий') !== -1; // true
+'Синий кит'.indexOf('Голубой') !== -1; // false
+
+ +

Примеры

+ +

Пример: использование методов indexOf() и lastIndexOf()

+ +

В следующем примере используются методы indexOf() и {{jsxref("String.prototype.lastIndexOf()", "lastIndexOf()")}} для нахождения значений в строке "Дивный новый мир".

+ +
var anyString = 'Дивный новый мир';
+
+console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й'));
+// Отобразит 5
+console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й'));
+// Отобразит 11
+
+console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый'));
+// Отобразит 7
+console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый'));
+// Отобразит 7
+
+ +

Пример: метод indexOf() и регистрозависимость

+ +

В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода {{domxref("console.log()")}} отобразит 18. Но поскольку метод indexOf() является регистрозависимым, строка "чеддер" в переменной myCapString не будет найдена, так что второй вызов метода console.log() отобразит -1.

+ +
var myString    = 'бри, пеппер джек, чеддер';
+var myCapString = 'Бри, Пеппер Джек, Чеддер';
+
+console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер'));
+// Отобразит 18
+console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер'));
+// Отобразит -1
+
+ +

Пример: использование метода indexOf() для подсчёта вхождений буквы в строку

+ +

Следующий пример устанавливает значение переменной count в количество вхождений буквы в в строку str:

+ +
var str = 'Быть или не быть, вот в чём вопрос.';
+var count = 0;
+var pos = str.indexOf('в');
+
+while (pos !== -1) {
+  count++;
+  pos = str.indexOf('в', pos + 1);
+}
+
+console.log(count); // отобразит 3
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.5.4.7', 'String.prototype.indexOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/italics/index.html b/files/ru/web/javascript/reference/global_objects/string/italics/index.html new file mode 100644 index 0000000000..3876249dcb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/italics/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.italics() +slug: Web/JavaScript/Reference/Global_Objects/String/italics +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/italics +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод italics() создаёт HTML-элемент {{HTMLElement("i")}}, заставляющий строку отображаться курсивом.

+ +

Синтаксис

+
str.italics()
+ +

Описание

+

Метод italics() заключает строку в тег <i>: "<i>str</i>".

+ +

Примеры

+ +

Пример: использование метода italics()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:

+
var worldString = 'Привет, мир';
+
+document.write(worldString.blink());
+document.write(worldString.bold());
+document.write(worldString.italics());
+document.write(worldString.strike());
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
<blink>Привет, мир</blink>
+<b>Привет, мир</b>
+<i>Привет, мир</i>
+<strike>Привет, мир</strike>
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.italics', 'String.prototype.italics')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html b/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html new file mode 100644 index 0000000000..853670b0e1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html @@ -0,0 +1,155 @@ +--- +title: String.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод lastIndexOf() возвращает индекс последнего вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, или -1, если ничего не было найдено. Поиск по строке ведётся от конца к началу, начиная с индекса fromIndex.

+ +

Синтаксис

+ +
str.lastIndexOf(searchValue[, fromIndex])
+ +

Параметры

+ +
+
searchValue
+
Строка, представляющая искомое значение.
+
fromIndex
+
Необязательный параметр. Местоположение внутри строки, откуда начинать поиск, нумерация индексов идёт слева направо. Может быть любым целым числом. Значение по умолчанию установлено в str.length. Если оно отрицательно, трактуется как 0. Если fromIndex > str.length, параметр fromIndex будет трактоваться как str.length.
+
+ +

Описание

+ +

Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName равен stringName.length - 1.

+ +
'канал'.lastIndexOf('а');     // вернёт 3
+'канал'.lastIndexOf('а', 2);  // вернёт 1
+'канал'.lastIndexOf('а', 0);  // вернёт -1
+'канал'.lastIndexOf('ч');     // вернёт -1
+
+ +

Регистрозависимость

+ +

Метод lastIndexOf() является регистрозависимым. Например, следующее выражение вернёт -1:

+ +
'Cиний кит, касатка'.lastIndexOf('синий'); // вернёт -1
+
+ +

Примеры

+ +

Пример: использование методов indexOf() и lastIndexOf()

+ +

В следующем примере используются методы {{jsxref("String.prototype.indexOf()", "indexOf()")}} и lastIndexOf() для нахождения значений в строке "Дивный новый мир".

+ +
var anyString = 'Дивный новый мир';
+
+console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й'));
+// Отобразит 5
+console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й'));
+// Отобразит 11
+
+console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый'));
+// Отобразит 7
+console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый'));
+// Отобразит 7
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.5.4.8', 'String.prototype.lastIndexOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.lastindexof', 'String.prototype.lastIndexOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/length/index.html b/files/ru/web/javascript/reference/global_objects/string/length/index.html new file mode 100644 index 0000000000..f794c6ccdf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/length/index.html @@ -0,0 +1,116 @@ +--- +title: String.length +slug: Web/JavaScript/Reference/Global_Objects/String/length +tags: + - JavaScript + - Property + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/length +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Свойство length представляет длину строки.

+ +

Синтаксис

+
str.length
+ +

Описание

+

Это свойство возвращает количество кодовых значений в строке. В {{interwiki("wikipedia", "UTF-16")}}, строковом формате, используемом в JavaScript, для представления большинства символов используется одно 16-битное кодовое значение, но для представления не так часто используемых символов требуется два кодовых значения, так что вполне может быть так, что значение, возвращённое свойством length не будет соответствовать действительному количеству символов в строке.

+

Для пустых строк свойство length возвращает 0.

+

Статическое свойство String.length возвращает значение 1.

+ +

Примеры

+ +

Пример: базовое использование

+
var x = 'Mozilla';
+var empty = '';
+
+console.log('Слово «Mozilla» занимает ' + x.length + ' кодовых значений');
+/* "Слово «Mozilla» занимает 7 кодовых значений" */
+
+console.log('Пустая строка имеет длину, равную ' + empty.length);
+/* "Пустая строка имеет длину, равную 0" */
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.5.5.1', 'String.prototype.length')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-properties-of-string-instances-length', 'String.prototype.length')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/link/index.html b/files/ru/web/javascript/reference/global_objects/string/link/index.html new file mode 100644 index 0000000000..00cec2d905 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/link/index.html @@ -0,0 +1,131 @@ +--- +title: String.prototype.link() +slug: Web/JavaScript/Reference/Global_Objects/String/link +tags: + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/link +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+ +

Метод link() создаёт HTML-элемент {{HTMLElement("a")}}, заставляющий строку отображаться в виде ссылки на другой URL.

+ +

Синтаксис

+ +
str.link(url)
+ +

Параметры

+ +
+
url
+
Любая строка, определяющая атрибут href тега <a>; она должна содержать допустимый URL (относительный или абсолютный), символы амперсанда & должны быть закодированы в ней как &amp;, а символы кавычки " — как &quot;.
+
+ +

Описание

+ +

Метод link() используется для создания кусочка HTML со ссылкой в гипертексте. Возвращённая строка затем может быть добавлена в документ при помощи метода {{domxref("document.write()")}} или свойства {{domxref("element.innerHTML")}}

+ +

Ссылки, созданные методом link(), становятся элементами в массиве {{domxref("document.links")}}.

+ +

Примеры

+ + + +

В следующем примере слово «MDN» отображается в виде гипертекстовой ссылки, ведущей на сайт Сети разработчиков Mozilla.

+ +
var hotText = 'MDN';
+var URL = 'https://developer.mozilla.org/';
+
+document.write('Нажмите для возврата на ' + hotText.link(URL));
+
+ +

Этот пример генерирует такой же вывод, как и следующий HTML:

+ +
Нажмите для возврата на <a href="https://developer.mozilla.org/">MDN</a>
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.link', 'String.prototype.link')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Примечания по Gecko

+ +

Начиная с версии {{gecko("17")}}, символ " (кавычка) в строках, передаваемых в качестве параметра url, заменяется его HTML-мнемоникой &quot;.

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html b/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html new file mode 100644 index 0000000000..606cf86549 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html @@ -0,0 +1,196 @@ +--- +title: String.prototype.localeCompare() +slug: Web/JavaScript/Reference/Global_Objects/String/localeCompare +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод localeCompare() возвращает число, указывающее, должна ли данная строка находиться до, после или в том же самом месте, что и строка, переданная через параметр, при сортировке этих строк.

+ +

Новые аргументы locales и options позволяют приложениям определять язык, чей порядок сортировки оно хочет использовать и настраивать поведение этой функции. В старых реализациях, игнорирующих аргументы locales и options, используемая локаль и порядок сортировки целиком зависят от реализации.

+ +

Синтаксис

+ +
str.localeCompare(compareString[, locales[, options]])
+ +

Параметры

+ +

Проверьте раздел Совместимость с браузерами, чтобы увидеть, какие браузеры поддерживают аргументы locales и options, и Пример: проверка поддержки аргументов locales и options для определения этой возможности.

+ +
+
compareString
+
Строка, с которой сравнивается данная.
+
+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}
+ +

Описание

+ +

Возвращает число, указывающее, должна данная строка находится до, после или в том же самом месте, что и строка, переданная через параметр, при сортировке этих строк. Если данная строка предшествует строке compareString, возвращает отрицательное число, если она следует за строкой compareString, возвращает положительное значение и возвращает 0, если строки находятся на одном уровне.

+ +

Примеры

+ +

Пример: использование метода localeCompare()

+ +

Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:

+ +
console.log(new Intl.Collator().compare('a', 'c')); // -2, -1 или другое отрицательное значение
+console.log(new Intl.Collator().compare('c', 'a')); // 2, 1 или другое положительное значение
+console.log(new Intl.Collator().compare('a', 'a')); // 0
+
+ +

Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только того, чтобы значение было отрицательным, если строка данная следует до переданной, и положительным — если после.

+ +

Пример: проверка поддержки аргументов locales и options

+ +

Аргументы locales и options поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:

+ +
function localeCompareSupportsLocales() {
+  try {
+    'a'.localeCompare​('b', 'i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Пример: использование аргумента locales

+ +

Результаты, предоставляемые методом localeCompare(), сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

+ +
console.log('ä'.localeCompare('z', 'de')); // отрицательное значение: в немецком буква ä идёт рядом с буквой a
+console.log('ä'.localeCompare('z', 'sv')); // положительное значение: в шведском буква ä следует после буквы z
+
+ +

Пример: использование аргумента options

+ +

Результат, предоставляемый методом localeCompare(), может быть настроен с помощью аргумента options:

+ +
// В немецком буква a является базовой для буквы ä
+console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
+
+// В шведском буквы ä и a являются двумя разными базовыми буквами
+console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // положительное значение
+
+ +

Производительность

+ +

При сравнении большого количества строк, например, при сортировке больших массивов, лучшим вариантом будет создание объекта {{jsxref("Global_Objects/Collator", "Intl.Collator")}} и использование функции, предоставляемой его свойством {{jsxref("Collator.prototype.compare", "compare")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.9', 'String.prototype.localeCompare')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}{{Spec2('ES6')}} 
{{SpecName('ES Int 1.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}{{Spec2('ES Int 1.0')}}Определение параметров locale и option.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Аргументы locales и options{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}
+ {{bug("864843")}}
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/match/index.html b/files/ru/web/javascript/reference/global_objects/string/match/index.html new file mode 100644 index 0000000000..ebcc53c574 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/match/index.html @@ -0,0 +1,177 @@ +--- +title: String.prototype.match() +slug: Web/JavaScript/Reference/Global_Objects/String/match +tags: + - JavaScript + - Method + - Prototype + - Reference + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/match +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод match() возвращает получившиеся совпадения при сопоставлении строки с регулярным выражением.

+ +

Синтаксис

+ +
str.match(regexp)
+ +

Параметры

+ +
+
regexp
+
Объект регулярного выражения. Если будет передан объект obj, не являющийся регулярным выражением, он будет неявно преобразован в объект {{jsxref("Global_Objects/RegExp", "RegExp")}} через вызов конструктора new RegExp(obj).
+
+ +

Возвращаемое значение

+ +
+
array
+
Объект {{jsxref("Global_Objects/Array", "Array")}}, содержащий результаты сопоставления, или {{jsxref("Global_Objects/null", "null")}}, если ничего не было сопоставлено.
+
+ +

Описание

+ +

Если регулярное выражение не содержит флаг g, возвращаемый результат будет тем же самым, что и при вызове метода {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}. Возвращаемый объект {{jsxref("Global_Objects/Array", "массива", "", 1)}} имеет дополнительное свойство input, которое содержит оригинальную строку. Кроме того, он имеет свойство index, которое представляет индекс (нумерация с нуля) сопоставления в строке.

+ +

Если регулярное выражение содержит флаг g, метод вернёт {{jsxref("Global_Objects/Array", "массив", "", 1)}}, содержащий все сопоставления. Если сопоставлений не было, метод вернёт значение {{jsxref("Global_Objects/null", "null")}}.

+ +

Смотрите также: методы объекта RegExp

+ + + +

Примеры

+ +

Пример: использование метода match()

+ +

В следующем примере метод match() используется для поиска слова 'Глава', за которым следуют 1 или более цифр, за которыми следуют 0 или более раз группы из точки и цифры. Регулярное выражение включает флаг i, так что регистр букв игнорируется.

+ +
var str = 'Глава 3.4.5.1 содержит дополнительную информацию';
+var re = /(глава \d+(\.\d)*)/i;
+var found = str.match(re);
+
+console.log(found);
+
+// выведет [ 'Глава 3.4.5.1',
+//           'Глава 3.4.5.1',
+//           '.1',
+//           index: 0,
+//           input: 'Глава 3.4.5.1 содержит дополнительную информацию' ]
+
+// 'Глава 3.4.5.1' - это первое сопоставление и первое значение,
+// сопоставленное с группой `(Глава \d+(\.\d)*)`.
+// '.1' - это последнее значение, сопоставленное с группой `(\.\d)`.
+// Свойство 'index' содержит значение (0) индекса совпадения
+// относительно начала сопоставления
+// Свойство 'input' содержит значение введенной строки.
+ +

Пример: использование флагов глобальности и игнорирования регистра с методом match()

+ +

Следующий пример демонстрирует использование флагов глобального поиска и игнорирования регистра символов вместе с методом match(). Возвращаются все буквы от А до Д и от а до д, каждая в своём элементе массива.

+ +
var str = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя';
+var regexp = /[А-Д]/gi;
+var matches_array = str.match(regexp);
+
+console.log(matches_array);
+// ['А', 'Б', 'В', 'Г', 'Д', 'а', 'б', 'в', 'г', 'д']
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.10', 'String.prototype.match')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype.match', 'String.prototype.match')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Примечания по Firefox

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/matchall/index.html b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html new file mode 100644 index 0000000000..6c8defbc17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html @@ -0,0 +1,120 @@ +--- +title: String.prototype.matchAll() +slug: Web/JavaScript/Reference/Global_Objects/String/matchAll +tags: + - JavaScript + - Method + - Prototype + - Reference + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll +--- +
{{JSRef}}
+ +

Метод matchAll() возвращает итератор по всем результатам при сопоставлении строки с регулярным выражением.

+ +
{{EmbedInteractiveExample("pages/js/string-matchall.html")}}
+ + + +

Синтаксис

+ +
str.matchAll(regexp)
+ +

Параметры

+ +
+
regexp
+
Объект регулярного выражения. Если передано значение, не являющееся объектом регулярного выражения, оно неявно преобразуется в {{jsxref("RegExp")}} используя new RegExp(obj).
+
+ +

Возвращаемое значение

+ +

Возвращается iterator (не перезапускаемый).

+ +

Примеры

+ +

Regexp.exec() и matchAll()

+ +

До добавления метода matchAll в JavaScript, можно было использовать метод regexp.exec (и регулярные выражения с флагом /g ) в цикле для получения доступа к совпадениям:

+ +
const regexp = RegExp('foo*','g');
+const str = 'table football, foosball';
+
+while ((matches = regexp.exec(str)) !== null) {
+  console.log(`Found ${matches[0]}. Next starts at ${regexp.lastIndex}.`);
+  // expected output: "Found foo. Next starts at 9."
+  // expected output: "Found foo. Next starts at 19."
+}
+
+ +

С появлением matchAll, нет необходимости использовать цикл while и метод exec с флагом /g.
+ Используя вместо этого метод matchAll, вы получаете итератор, который вы можете использовать более удобно с конструкциями for...of, array spread, или {{jsxref("Array.from()")}} :

+ +
const regexp = RegExp('foo*','g');
+const str = 'table football, foosball';
+let matches = str.matchAll(regexp);
+
+for (const match of matches) {
+  console.log(match);
+}
+// Array [ "foo" ]
+// Array [ "foo" ]
+
+// итерация больше недоступна после вызова for of
+// Для создания нового итератора вызовите matchAll повторно
+matches = str.matchAll(regexp);
+
+Array.from(matches, m => m[0]);
+// Array [ "foo", "foo" ]
+
+ +

Улучшенный доступ к группам захвата

+ +

Еще одна веская причина использовать matchAll это улучшенный доступ к группам захвата. Группы захвата игнорируются при использовании match() с глобальным флагом /g:

+ +
var regexp = /t(e)(st(\d?))/g;
+var str = 'test1test2';
+
+str.match(regexp);
+// Array ['test1', 'test2']
+ +

С matchAll у вас появляется к ним доступ:

+ +
let array = [...str.matchAll(regexp)];
+
+array[0];
+// ['test1', 'e', 'st1', '1', index: 0, input: 'test1test2', length: 4]
+array[1];
+// ['test2', 'e', 'st2', '2', index: 5, input: 'test1test2', length: 4]
+
+ +

Спецификации

+ + + + + + + + + + + + +
СпецификацияСтатус
String.prototype.matchAllStage 3
+ +

Браузерная совместимость

+ + + +

{{Compat("javascript.builtins.String.matchAll")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/normalize/index.html b/files/ru/web/javascript/reference/global_objects/string/normalize/index.html new file mode 100644 index 0000000000..098bc2de09 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/normalize/index.html @@ -0,0 +1,174 @@ +--- +title: String.prototype.normalize() +slug: Web/JavaScript/Reference/Global_Objects/String/normalize +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод normalize() возвращает форму нормализации Юникода данной строки (если значение не является строкой, сначала оно будет в неё преобразовано).

+ +

Одна из особенностей Юникода - возможность считать два разных символа эквивалентными при выполнении сортировки и иных операций, которые основаны на сравнении.

+ +

Виды эквивалентности:
+ - первый - каноническая эквивалентность, когда две последовательности code point являются полностью взаимозаменяемыми.

+ +

- второй - совместимость - две совместимые последовательности code point выглядят по-разному, но в некоторых случаях они могут быть взаимозаменяемыми.

+ +

'æ' взаимозаменяемый 'ae', но они не являются строго эквивалентными, если не провести некоторую нормализацию

+ +

Синтаксис

+ +
str.normalize([form])
+ +

Параметры

+ +
+
form
+
Одно из значений "NFC", "NFD", "NFKC" или "NFKD", определяющих форму нормализации Юникода. Если параметр опущен или равен {{jsxref("Global_Objects/undefined", "undefined")}}, будет использоваться значение "NFC". +
    +
  • NFC —  форма нормализации канонической композицией (Normalization Form Canonical Composition, 'NFC'), по умолчанию;
  • +
  • NFD — форма нормализации канонической декомпозицией (Normalization Form Canonical Decomposition, 'NFD');
  • +
  • NFKC — форма нормализации совместимой композицией (Normalization Form Compatibility Composition, 'NFKC');
  • +
  • NFKD — форма нормализации совместимой декомпозицией (Normalization Form Compatibility Decomposition, 'NFKD').
  • +
+
+
+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Если параметр form не является одним из вышеперечисленных значений, будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.
+
+ +

Описание

+ +

Метод normalize() возвращает указанную форму нормализации Юникода строки. Он не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода normalize()

+ +
let valueStr = ['h', 'ĥ', 'æ', 'ae', 'g', 'ġ'],
+    normArr = valueStr.map(function (text) {
+        return text.normalize(); // (по умолчанию 'NFC') normArr (после сортировки) -> [ae, g, h, æ, ġ, ĥ]
+        //return text.normalize('NFD'); // normArr (после сортировки) -> [ae, g, ġ, h, ĥ, æ]
+        //return text.normalize('NFKC'); // normArr (после сортировки) -> [ae, g, h, æ, ġ, ĥ]
+        //return text.normalize('NFKD'); // normArr (после сортировки) -> [ae, g, ġ, h, ĥ, æ]
+    });
+
+//После приведение строк в нормальную форму, мы можем провести сортировку, массива:
+normArr.sort(function (f,s) {
+    if (f < s) {
+        return -1;
+    } else if (f === s) {
+        return 0;
+    } else {
+        return 1;
+    }
+});
+
+//Приведение к нормальной форме можно выполнить во время сортировки. Нормализацию при этом можно выполнять с помощью разных форм нормализации
+let valueStrNorm = ['h', 's', 'ĥ', 'æ', 'ș', 'ae', 'g', 'ġ'];
+valueStrNorm.sort(function (first, second) {
+    let fN = first.normalize(),
+        sN = second.normalize('NFKC');
+
+    if (fN < sN) {
+        return -1;
+    } else if (fN === sN) {
+        return 0;
+    } else {
+        return 1;
+    }
+});
+
+valueStrNorm.join(', ');//-> ae, g, h, s, æ, ġ, ĥ, ș
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome("34")}}{{CompatGeckoDesktop("31")}}{{CompatIE("11")}} на Windows 10 Preview{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatChrome("34")}}{{CompatNo}}
+ {{bug("864843")}}
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/padend/index.html b/files/ru/web/javascript/reference/global_objects/string/padend/index.html new file mode 100644 index 0000000000..31da2edad0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/padend/index.html @@ -0,0 +1,94 @@ +--- +title: String.prototype.padEnd() +slug: Web/JavaScript/Reference/Global_Objects/String/padEnd +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd +--- +
{{JSRef}}{{SeeCompatTable}}
+ +

Метод padEnd() дополняет текущую строку с помощью заданной строки (в конечном счете повторяя), так чтобы результирующая строка достигла заданной длины. Дополнение применяется в конце (справа) текущей строки.

+ +

Синтаксис

+ +
str.padEnd(targetLength [, padString])
+ +

Параметры

+ +
+
targetLength
+
Длина результирующей строки, после того как текущая строка была дополнена. Если этот параметр меньше длины текущей строки, то будет возвращена текущая строка , как она есть.
+
padString {{optional_inline}}
+
Строка для дополнения текущей строки с. Если эта строка слишком длинная, она будет урезана и будет применяться ее левая большая часть. " " (U+0020) - значение по умолчанию для этого параметра.
+
+ +

Возвращаемое значение

+ +

Строка указанной длинны дополненная с помощью дополнительной строки в конце текуще строки.

+ +

Примеры

+ +
'abc'.padEnd(10);         // "abc       "
+'abc'.padEnd(10, "foo");  // "abcfoofoof"
+'abc'.padEnd(6,"123456"); // "abc123"
+
+ +

Характеристики

+ +

Этот метод еще не достиг стандарта ECMAScript. Сейчас он в состоянии proposal for ECMAScript.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatUnknown}} {{CompatGeckoDesktop(48)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(48)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/string/padstart/index.html b/files/ru/web/javascript/reference/global_objects/string/padstart/index.html new file mode 100644 index 0000000000..074516217d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/padstart/index.html @@ -0,0 +1,92 @@ +--- +title: String.prototype.padStart() +slug: Web/JavaScript/Reference/Global_Objects/String/padStart +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart +--- +
{{JSRef}}{{SeeCompatTable}}
+ +

Метод padStart() заполняет текущую строку другой строкой (несколько раз, если нужно) так, что итоговая строка достигает заданной длины. Заполнение осуществляется в начале (слева) текущей строки.

+ +

Синтаксис

+ +
str.padStart(targetLength [, padString])
+ +

Параметры

+ +
+
targetLength
+
Длина итоговой строки после дополнения текущей строки. Если значение меньше, чем длина текущей строки, текущая строка будет возвращена без изменений.
+
padString {{optional_inline}}
+
Строка для заполнения текущей строки. Если эта строка слишком длинная для заданной длины, она будет обрезана. Значение по умолчанию - " " (U+0020).
+
+ +

Возвращаемое значение

+ +

{{jsxref("String")}} заданной длины с заполнением строкой, выполненное в начале.

+ +

Примеры

+ +
'abc'.padStart(10);         // "       abc"
+'abc'.padStart(10, "foo");  // "foofoofabc"
+'abc'.padStart(6,"123465"); // "123abc"
+'abc'.padStart(8, "0");     // "00000abc"
+'abc'.padStart(1);          // "abc"
+ +

Полифил

+ +

Запуск данного кода перед любым другим кодом будет создавать String.prototype.padStart(), если он нативно не поддерживается.

+ +
// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
+if (!String.prototype.padStart) {
+    String.prototype.padStart = function padStart(targetLength,padString) {
+        targetLength = targetLength>>0; //floor if number or convert non-number to 0;
+        padString = String(padString || ' ');
+        if (this.length > targetLength) {
+            return String(this);
+        }
+        else {
+            targetLength = targetLength-this.length;
+            if (targetLength > padString.length) {
+                padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed
+            }
+            return padString.slice(0,targetLength) + String(this);
+        }
+    };
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ESDraft', '#sec-string.prototype.padstart', 'String.prototype.padStart')}}{{Spec2('ESDraft')}}Initial definition in ECMAScript 2017.
+ +

Поддержка браузерами

+ + + +

{{Compat("javascript.builtins.String.padStart")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/prototype/index.html b/files/ru/web/javascript/reference/global_objects/string/prototype/index.html new file mode 100644 index 0000000000..cecc7325a5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/prototype/index.html @@ -0,0 +1,229 @@ +--- +title: String.prototype +slug: Web/JavaScript/Reference/Global_Objects/String/prototype +tags: + - JavaScript + - Property + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Свойство String.prototype представляет прототип объекта {{jsxref("Global_Objects/String", "String")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Все объекты {{jsxref("Global_Objects/String", "String")}} наследуются от String.prototype. Изменения в прототипе объекта {{jsxref("Global_Objects/String", "String")}} распространяются на все его экземпляры.

+ +

Свойства

+ +
+
String.prototype.constructor
+
Определяет функцию, создающую прототип этого объекта.
+
{{jsxref("String.prototype.length")}}
+
Отражает длину строки.
+
N
+
Используется для доступа к символу в позиции N, где N — это целое число между 0 и длиной строки {{jsxref("String.length", "length")}} минус один. Эти свойства доступны только для чтения.
+
+ +

Методы

+ +

Методы, не относящиеся к HTML

+ +
+
{{jsxref("String.prototype.charAt()")}}
+
Возвращает символ по указанному индексу.
+
{{jsxref("String.prototype.charCodeAt()")}}
+
Возвращает число, представляющее значение символа в Юникоде по указанному индексу.
+
{{jsxref("String.prototype.codePointAt()")}} {{experimental_inline}}
+
Возвращает неотрицательное целое число, представляющее закодированную в UTF-16 кодовую точку значения по указанной позиции.
+
{{jsxref("String.prototype.concat()")}}
+
Объединяет текст двух строк и возвращает новую строку.
+
{{jsxref("String.prototype.includes()")}} {{experimental_inline}}
+
Определяет, находится ли строка внутри другой строки.
+
{{jsxref("String.prototype.endsWith()")}} {{experimental_inline}}
+
Определяет, заканчивается ли строка символами другой строки.
+
{{jsxref("String.prototype.indexOf()")}}
+
Возвращает индекс первого вхождения указанного значения в объекте {{jsxref("Global_Objects/String", "String")}}, на котором был вызван этот метод, или -1, если вхождений нет.
+
{{jsxref("String.prototype.lastIndexOf()")}}
+
Возвращает индекс последнего вхождения указанного значения в объекте {{jsxref("Global_Objects/String", "String")}}, на котором был вызван этот метод, или -1, если вхождений нет.
+
{{jsxref("String.prototype.localeCompare()")}}
+
Возвращает число, указывающее, находится ли образцовая строка до, после или на том же самом месте, что и указанная строка в порядке сортировки.
+
{{jsxref("String.prototype.match()")}}
+
Используется для сопоставления строке регулярного выражения.
+
+ +
+
{{jsxref("String.prototype.matchAll()")}}
+
Возвращает итератор по всем результатам при сопоставлении строки с регулярным выражением.
+
+ +
+
{{jsxref("String.prototype.normalize()")}} {{experimental_inline}}
+
Возвращает форму нормализации Юникода для строкового значения.
+
{{jsxref("String.prototype.quote()")}} {{obsolete_inline}}
+
Оборачивает строку в двойные кавычки (""").
+
{{jsxref("String.prototype.repeat()")}} {{experimental_inline}}
+
Возвращает строку. состоящую из элементов объекта, повторённых указанное количество раз.
+
{{jsxref("String.prototype.replace()")}}
+
Используется для сопоставления строке регулярного выражения и для замены совпавшей подстроки на новую подстроку.
+
{{jsxref("String.prototype.search()")}}
+
Выполняет поиск совпадения регулярного выражения со строкой.
+
{{jsxref("String.prototype.slice()")}}
+
Извлекает часть строки и возвращает новую строку.
+
{{jsxref("String.prototype.split()")}}
+
Разбивает объект {{jsxref("Global_Objects/String", "String")}} на массив строк, разделёных указанной строкой на подстроки.
+
{{jsxref("String.prototype.startsWith()")}} {{experimental_inline}}
+
Определяет, начинается ли строка символами другой строки.
+
{{jsxref("String.prototype.substr()")}}
+
Возвращает указанное количество символов в строке, начинающихся с указанной позиции.
+
{{jsxref("String.prototype.substring()")}}
+
Возвращает символы в строке между двумя индексами.
+
{{jsxref("String.prototype.toLocaleLowerCase()")}}
+
Приводит символы в строке к нижнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}.
+
{{jsxref("String.prototype.toLocaleUpperCase()")}}
+
Приводит символы в строке к верхнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}.
+
{{jsxref("String.prototype.toLowerCase()")}}
+
Возвращает строковое значение с символами в нижнем регистре.
+
{{jsxref("String.prototype.toSource()")}} {{non-standard_inline}}
+
Возвращает литерал объекта, представляющий указанный объект; вы можете использовать это значениедля создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("String.prototype.toString()")}}
+
Возвращает строковое представление указаного объекта. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("String.prototype.toUpperCase()")}}
+
Возвращает строковое значение с символами в верхнем регистре.
+
{{jsxref("String.prototype.trim()")}}
+
Обрезает пробельные символы в начале и в конце строки. Часть стандарта ECMAScript 5.
+
{{jsxref("String.prototype.trimLeft()")}} {{non-standard_inline}}
+
Обрезает пробельные символы с левой стороны строки.
+
{{jsxref("String.prototype.trimRight()")}} {{non-standard_inline}}
+
Обрезает пробельные символы с правой стороны строки.
+
{{jsxref("String.prototype.valueOf()")}}
+
Возвращает примитивное значение указанного объекта. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.
+
{{jsxref("String.prototype.@@iterator()", "String.prototype[@@iterator]()")}} {{experimental_inline}}
+
Возвращает новый объект итератора Iterator, который итерируется по кодовым точкам строки и возвращает каждую кодовую точку в виде строкового значения.
+
+ +

Методы-обёртки HTML

+ +

Эти методы имеют ограниченное применение, поскольку они представляют только ограниченное подмножество доступных тегов и атрибутов HTML.

+ +
+
{{jsxref("String.prototype.anchor()")}} {{deprecated_inline}}
+
<a name="имя"> (цель гипертекста)
+
{{jsxref("String.prototype.big()")}} {{deprecated_inline}}
+
{{HTMLElement("big")}}
+
{{jsxref("String.prototype.blink()")}} {{deprecated_inline}}
+
{{HTMLElement("blink")}}
+
{{jsxref("String.prototype.bold()")}} {{deprecated_inline}}
+
{{HTMLElement("b")}}
+
{{jsxref("String.prototype.fixed()")}} {{deprecated_inline}}
+
{{HTMLElement("tt")}}
+
{{jsxref("String.prototype.fontcolor()")}} {{deprecated_inline}}
+
<font color="цвет">
+
{{jsxref("String.prototype.fontsize()")}} {{deprecated_inline}}
+
<font size="размер">
+
{{jsxref("String.prototype.italics()")}} {{deprecated_inline}}
+
{{HTMLElement("i")}}
+
{{jsxref("String.prototype.link()")}} {{deprecated_inline}}
+
<a href="url"> (ссылка на URL)
+
{{jsxref("String.prototype.small()")}} {{deprecated_inline}}
+
{{HTMLElement("small")}}
+
{{jsxref("String.prototype.strike()")}} {{deprecated_inline}}
+
{{HTMLElement("strike")}}
+
{{jsxref("String.prototype.sub()")}} {{deprecated_inline}}}
+
{{HTMLElement("sub")}}
+
{{jsxref("String.prototype.sup()")}} {{deprecated_inline}}
+
{{HTMLElement("sup")}}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.5.3.1', 'String.prototype')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype', 'String.prototype')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/quote/index.html b/files/ru/web/javascript/reference/global_objects/string/quote/index.html new file mode 100644 index 0000000000..367f9f6eb7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/quote/index.html @@ -0,0 +1,124 @@ +--- +title: String.prototype.quote() +slug: Web/JavaScript/Reference/Global_Objects/String/quote +tags: + - JavaScript + - Method + - Obsolete + - Prototype + - Reference + - Référence(2) + - String +translation_of: Archive/Web/JavaScript/String.quote +--- +
{{obsolete_header("37")}}
+ +
{{JSRef("Global_Objects", "String")}} {{non-standard_header}}
+ +

Сводка

+ +

Нестандартный метод quote() возвращает копию строки, заменяя различные специальные символы в строке их управляющими последовательностями и заключая результат в двойные кавычки (").

+ +

Синтаксис

+ +
str.quote()
+ +

Примеры

+ +

В таблице ниже метод quote() заменяет любые специальные символы и заключает строку в двойные кавычки. Также обратите внимание на третью колонку, в которой функция {{jsxref("Global_Objects/eval", "eval()")}} снова вычисляет управляющие последовательности.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
strstr.quote()eval(str.quote())
Hello world!"Hello world!"Hello world!
Hello
+ world!
"Hello\n\tworld!"Hello
+ world!
" \ — '"\" \\ \u2014 '"" \ — '
Привет, мир!"\u041F\u0440\u0438\u0432\u0435\u0442, \u043C\u0438\u0440!"Привет, мир!
+ +

Спецификации

+ +

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/raw/index.html b/files/ru/web/javascript/reference/global_objects/string/raw/index.html new file mode 100644 index 0000000000..b6d9477108 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/raw/index.html @@ -0,0 +1,153 @@ +--- +title: String.raw() +slug: Web/JavaScript/Reference/Global_Objects/String/raw +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/raw +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Статический метод String.raw() является теговой функцией для шаблонных строк; подобно префиксу r в Python или префиксу @ в C# для строковых литералов, эта функция используется для получения необработанной строки из шаблона.

+ +

Синтаксис

+ +

+String.raw(callSite, ...substitutions)
+
+String.raw`templateString`
+
+ +

Параметры

+ +
+
callSite
+
Правильно сформированный объект вызова, например { raw: 'string' }.
+
...substitutions
+
Значения подстановок.
+
templateString
+
Шаблонная строка, возможно с подстановками (${...}).
+
+ +

Выбрасываемые исключения

+ +
+
{{jsxref("Global_Objects/TypeError", "TypeError")}}
+
Если первый аргумент не является правильно сформированным объектом вызова, выбрасывается исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}.
+
+ +

Описание

+ +

В большинстве случаев метод String.raw() используется вместе с шаблонными строками. Первый синтаксис, показанный выше, используется редко, поскольку движок JavaScript будет вызывать метод с соответствующими аргументами, подобно другим теговым функциям.

+ +

Метод String.raw() является единственной встроенной теговой функцией шаблонных строк, выступающей стандартной функцией по объединению их фрагментов. Вы и сами могли бы реализовать подобную функциональность на JavaScript.

+ +

Примеры

+ +

Пример: использование метода String.raw()

+ +
String.raw`Привет\n${2+3}!`;
+// 'Привет\n5!', символ после 'Привет' не является символом новой строки,
+// '\' и 'n' - это два символа.
+
+String.raw`Привет\u000A!`;
+// 'Привет\u000A!', а здесь мы получим символы
+//  \, u, 0, 0, 0, A, всего 6 символов.
+// Экранирующие символы не имеют особого значения и
+// обратные слеши будут присутствовать в выходной строке.
+// Вы можете убедиться в этом, проверив свойство .length строки.
+
+let name = 'Боб';
+String.raw`Привет\n${name}!`;
+// 'Привет\nБоб!', сработала подстановка.
+
+// Обычно вам не нужно вызывать метод String.raw() как функцию,
+// но никто не запрещает вам делать это:
+String.raw({ raw: 'тест' }, 0, 1, 2);
+// 'т0е1с2т'
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.raw', 'String.raw')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatGeckoDesktop("34")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("34")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/repeat/index.html b/files/ru/web/javascript/reference/global_objects/string/repeat/index.html new file mode 100644 index 0000000000..10a6507b6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/repeat/index.html @@ -0,0 +1,124 @@ +--- +title: String.prototype.repeat() +slug: Web/JavaScript/Reference/Global_Objects/String/repeat +tags: + - ECMAScript 2015 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat +--- +
{{JSRef}}
+ +
Метод repeat() конструирует и возвращает новую строку, содержащую указанное количество соединённых вместе копий строки, на которой он был вызван.
+ +

Синтаксис

+ +
str.repeat(count)
+ +

Параметры

+ +
+
count
+
Целое число от 0 до +∞: [0, +∞), определяющее число повторений строки во вновь создаваемой и возвращаемой строке.
+
+ +

Возвращаемое значение

+ +

Новая строка, содержащая указанное количество копий строки, для которой был вызван метод.

+ +

Исключения

+ + + +
+
+ +

Примеры

+ +
'абв'.repeat(-1);   // RangeError
+'абв'.repeat(0);    // ''
+'абв'.repeat(1);    // 'абв'
+'абв'.repeat(2);    // 'абвабв'
+'абв'.repeat(3.5);  // 'абвабвабв' (количество будет преобразовано в целое число)
+'абв'.repeat(1/0);  // RangeError
+
+({ toString: () => 'абв', repeat: String.prototype.repeat }).repeat(2);
+// 'абвабв' (метод repeat() является обобщённым методом)
+
+ +

Полифилл

+ +

Этот метод был добавлен к спецификации ECMAScript 2015 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:

+ +
if (!String.prototype.repeat) {
+  String.prototype.repeat = function(count) {
+    'use strict';
+    if (this == null) {
+      throw new TypeError('can\'t convert ' + this + ' to object');
+    }
+    var str = '' + this;
+    count = +count;
+    if (count != count) {
+      count = 0;
+    }
+    if (count < 0) {
+      throw new RangeError('repeat count must be non-negative');
+    }
+    if (count == Infinity) {
+      throw new RangeError('repeat count must be less than infinity');
+    }
+    count = Math.floor(count);
+    if (str.length == 0 || count == 0) {
+      return '';
+    }
+    // Обеспечение того, что count является 31-битным целым числом, позволяет нам значительно
+    // соптимизировать главную часть функции. Впрочем, большинство современных (на август
+    // 2014 года) браузеров не обрабатывают строки, длиннее 1 << 28 символов, так что:
+    if (str.length * count >= 1 << 28) {
+      throw new RangeError('repeat count must not overflow maximum string size');
+    }
+    var rpt = '';
+    for (var i = 0; i < count; i++) {
+      rpt += str;
+    }
+    return rpt;
+  }
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES2015', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.String.repeat")}}

diff --git a/files/ru/web/javascript/reference/global_objects/string/replace/index.html b/files/ru/web/javascript/reference/global_objects/string/replace/index.html new file mode 100644 index 0000000000..debc32cf40 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/replace/index.html @@ -0,0 +1,289 @@ +--- +title: String.prototype.replace() +slug: Web/JavaScript/Reference/Global_Objects/String/replace +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/replace +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод replace() возвращает новую строку с некоторыми или всеми сопоставлениями с шаблоном, заменёнными на заменитель. Шаблон может быть строкой или {{jsxref("Global_Objects/RegExp", "регулярным выражением", "", 1)}}, а заменитель может быть строкой или функцией, вызываемой при каждом сопоставлении.

+ +

Синтаксис

+ +
str.replace(regexp|substr, newSubStr|function[, flags])
+ +

Параметры

+ +
+
regexp
+
Объект регулярного выражения {{jsxref("Global_Objects/RegExp", "RegExp")}}. Сопоставление заменяется возвращаемым значением второго параметра.
+
substr
+
{{jsxref("Global_Objects/String", "Строка", "", 1)}}, заменяемая на newSubStr. Обратите внимание, будет заменено только первое вхождение искомой строки.
+
newSubStr
+
{{jsxref("Global_Objects/String", "Строка", "", 1)}}, заменяющая подстроку из первого параметра. Поддерживает несколько специальных шаблонов замены; смотрите ниже раздел Передача строки в качестве второго параметра.
+
function
+
Функция, вызываемая для создания новой подстроки (помещаемой вместо подстроки из первого параметра). Аргументы, передаваемые функции, описаны ниже в разделе Передача функции в качестве второго параметра.
+
flags {{non-standard_inline}}
+
+

Обратите внимание: аргумент flags не работает в ядре v8 (движок JavaScript в Chrome и NodeJs). Строка, задающая комбинацию флагов регулярного выражения. Параметр flags в методе String.prototype.replace() является нестандартным расширением. Вместо использования этого параметра используйте объект {{jsxref("Global_Objects/RegExp", "RegExp")}} с соответствующими флагами. Значение этого параметра, если он используется, должно быть строкой, состоящей из одного или более следующих символов, следующим образом влияющих на обработку регулярного выражения:

+ +
+
g
+
глобальное сопоставление
+
i
+
игнорировать регистр
+
m
+
сопоставление по нескольким строкам
+
y {{experimental_inline}}
+
«липкий» поиск, сопоставление начинается с текущей позиции в строке
+
+
+
+ +

Возвращаемое значение

+ +

Новая строка с некоторыми или всеми сопоставлениями шаблона, заменёнными на заменитель.

+ +

Описание

+ +

Этот метод не изменяет объект {{jsxref("Global_Objects/String", "String")}}, на котором он вызывается. Он просто возвращает новую строку.

+ +

Для выполнения глобального поиска и замены либо включите флаг g в регулярное выражение, либо, если первый параметр является строкой, включите флаг g в параметр flags.

+ +

Передача строки в качестве второго параметра

+ +

строка замены может включать следующие специальные шаблоны замены:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ШаблонЗамена
$$Вставляет символ доллара «$».
$&Вставляет сопоставившуюся подстроку.
$`Вставляет часть строки, предшествующую сопоставившейся подстроке.
$'Вставляет часть строки, следующую за сопоставившейся подстрокой.
$n или $nnСимволы n или nn являются десятичными цифрами, вставляет n-ную сопоставившуются подгруппу из объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} в первом параметре.
+ +

Передача функции в качестве второго параметра

+ +

В качестве второго параметра вы можете передать функцию. В этом случае функция будет выполнена после произошедшего сопоставления. Результат вызова функции (её возвращаемое значение) будет использоваться в качестве строки замены (обратите внимание: описанные выше специальные шаблоны замены в этом случае не применяются). Обратите внимание, что функция будет вызвана несколько раз для каждого полного сопоставления, если регулярное выражение в первом параметре является глобальным.

+ +

Функция принимает следующие аргументы:

+ + + + + + + + + + + + + + + + + + + + + + + + +
Возможное имяПолучаемое значение
matchСопоставившаяся подстрока (cоответствует шаблону замены $&, описанному выше).
p1, p2, ...n-ная сопоставившаяся подгруппа из объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} в первом параметре метода replace() (cоответствует шаблонам замены $1, $2 и так далее, описанным выше). Например, если в качестве шаблона передано регулярное выражение /(\a+)(\b+)/, параметр p1 будет значение сопоставления с подгруппой \a+, а параметр p2 — с подгруппой \b+.
offsetСмещение сопоставившейся подстроки внутри всей рассматриваемой строки (например, если вся строка равна 'abcd', а сопоставившаяся подстрока равна 'bc', то этот аргумент будет равен 1).
stringВся рассматриваемая строка.
+ +

Точное число аргументов будет зависеть от того, был ли первым аргументом объект {{jsxref("Global_Objects/RegExp", "RegExp")}} и, если был, сколько подгрупп в нём определено.

+ +

Следующий пример установит переменную newString в значение 'abc - 12345 - #$*%':

+ +
function replacer(match, p1, p2, p3, offset, string) {
+  // p1 - не цифры, p2 - цифры, p3 - не буквы и не цифры
+  return [p1, p2, p3].join(' - ');
+}
+var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
+
+ +

Примеры

+ +

Пример: использование флагов global и ignore с методом replace()

+ +

В следующем примере регулярное выражение включает флаги для глобального поиска и игнорирования регистра, которые позволяют методу replace() заменить все вхождения слова «яблоки» в строке на слово «апельсины».

+ +
var re = /яблоки/gi;
+var str = 'Яблоки круглые и яблоки сочные.';
+var newstr = str.replace(re, 'апельсины');
+console.log(newstr); // апельсины круглые и апельсины сочные.
+
+ +

Пример: передача регулярного выражения в метод replace()

+ +

В следующем примере в метод replace() передаётся регулярное выражение вместе с флагом игнорирования регистра.

+ +
// Ночь перед Рождеством, Xmas - сокращение для Christmas
+var str = 'Twas the night before Xmas...';
+var newstr = str.replace(/xmas/i, 'Christmas');
+console.log(newstr); // Twas the night before Christmas...
+
+ +

Пример выведет строку 'Twas the night before Christmas...'

+ +

Пример: смена местами слов в строке

+ +

Следующий скрипт меняет местами слова в строке. В качестве текста замены он использует шаблоны замены $1 и $2.

+ +
var re = /([А-ЯЁа-яё]+)\s([А-ЯЁа-яё]+)/;
+var str = 'Джон Смит';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr); // Смит, Джон
+
+ +

Пример выведет строку 'Смит, Джон'.

+ +

Пример: использование функции для изменения сопоставившихся символов

+ +

В этом примере все входящие в строку (латинские) буквы в верхнем регистре преобразуются в нижний регистр, а перед самой буквой вставляется дефис. Здесь важно то, что прежде чем элемент вставится в качестве замены, над ним нужно провести дополнительные преобразования.

+ +

Функция замены своим параметром принимает сопоставившийся кусок и перед возвратом использует его для преобразования регистра и соединения с дефисом.

+ +
function styleHyphenFormat(propertyName) {
+  function upperToHyphenLower(match) {
+    return '-' + match.toLowerCase();
+  }
+  return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
+}
+
+ +

Вызов styleHyphenFormat('borderTop') вернёт строку 'border-top'.

+ +

Поскольку мы хотим провести дополнительные преобразования результата сопоставления до того, как будет использована окончательная подстановка, мы должны использовать функцию. Это заставляет нас принудительно вычислить сопоставление перед использование метода {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}. Если бы мы попытались использовать сопоставление без функции, метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} не сработал бы.

+ +
var newString = propertyName.replace(/[A-Z]/g, '-' + '$&'.toLowerCase());  // не работает
+
+ +

Происходит это потому, что сначала часть '$&'.toLowerCase() вычисляется в строковый литерал (результат по-прежнему равен '$&'), а только потом его символы используются в качестве шаблона.

+ +

Пример: замена градусов по Фаренгейту на эквивалент в градусах по Цельсию

+ +

В следующем примере градусы по Фаренгейту заменяются на эквивалентные градусы по Цельсию. Градусы по Фаренгейту должны быть числом, оканчивающимся на букву F. Функция возвращает количество градусов по Цельсию, оканчивающиеся на букву C. Например, если входное число равняется 212F, функция вернёт 100C. Если число равняется 0F, функция вернёт -17.77777777777778C.

+ +

Регулярное выражение test сопоставляется с любым числом, оканчивающимся на букву F. Количество градусов по Фаренгейту передаётся в функцию через её второй параметр, p1. Функция переводит градусы по Фаренгейту, переданные в виде строки в функцию code>f2c(), в градусы по Цельсию. Затем функция f2c() возвращает количество градусов по Цельсию. Эта функция работает примерно так же, как и флаг s///e в Perl.

+ +
function f2c(x) {
+  function convert(str, p1, offset, s) {
+    return ((p1 - 32) * 5/9) + 'C';
+  }
+  var s = String(x);
+  var test = /(\d+(?:\.\d*)?)F\b/g;
+  return s.replace(test, convert);
+}
+
+ +

Пример: использование функции вместе с регулярным выражением для избавления от цикла for

+ +

Следующий пример принимает строку шаблона и преобразует её в массив объектов.

+ +

Входные данные:

+ +

Строка, состоящая из символов x, - и _

+ +
x-x_
+x---x---x---x---
+x-xxx-xx-x-
+x_x_x___x___x___
+
+ +

Выходные данные:

+ +

Массив объектов. Символ 'x' означает состояние 'on', символ '-' (дефис) означает состояние 'off', а символ '_' (нижнее подчёркивание) означает продолжительность состояния 'on'.

+ +
[
+  { on: true, length: 1 },
+  { on: false, length: 1 },
+  { on: true, length: 2 }
+  ...
+]
+
+ +

Код:

+ +
var str = 'x-x_';
+var retArr = [];
+str.replace(/(x_*)|(-)/g, function(match, p1, p2) {
+  if (p1) { retArr.push({ on: true, length: p1.length }); }
+  if (p2) { retArr.push({ on: false, length: 1 }); }
+});
+
+console.log(retArr);
+
+ +

Этот код сгенерирует массив из трёх объектов в описанном формате без использования цикла for.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2
{{SpecName('ES5.1', '#sec-15.5.4.11', 'String.prototype.replace')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype.replace', 'String.prototype.replace')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.String.replace")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html new file mode 100644 index 0000000000..f938fefb64 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html @@ -0,0 +1,167 @@ +--- +title: String.prototype.replaceAll() +slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll +translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll +--- +
{{JSRef}}
+ +

Метод replaceAll() возвращает новую строку со всеми совпадениями pattern , который меняется на replacementpattern может быть строкой или регулярным выражением, и replacement может быть строкой или функция возвращающая каждое совпадение.

+ +

Исходная строка остается без изменений.

+ +
{{EmbedInteractiveExample("pages/js/string-replaceall.html")}}
+ + + +

Syntax

+ +
const newStr = str.replaceAll(regexp|substr, newSubstr|function)
+
+ +
+

Когда вы используете `regexp` вы должны установить флаг глобального поиска ("g"), иначе вернется ошибка TypeError: "replaceAll must be called with a global RegExp".

+
+ +

Parameters

+ +
+
regexp (pattern)
+
Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на newSubstr или значени возвращенное указанной функцией function. A RegExp без глобального флага поиска ("g") вернет ошибку TypeError: "replaceAll must be called with a global RegExp".
+
substr
+
Подстрока, которая заменится newSubstr. Обрабатывается как буквенная строка, не интерпретируется как регулярное выражение.
+
newSubstr (replacement)
+
Новая строка, которая заменяет найденные подстроки указанные в regexp или substr парамерах. Поддерживается ряд специальных шаблонов замены; смотрите "Specifying a string as a parameter" блок ниже.
+
function (replacement)
+
Функция вызванная при создании новой строки которая используется для замены совпадений указанных в regexp or substr. Аргументы применяемы в этой функции описываются в "Specifying a function as a parameter" блок ниже.
+
+ +

Return value

+ +

Новая строка, в которой все совпадения замены на уазанную подстроку или специальный шаблон.

+ +

Описание

+ +

Этот метод не изменяет исходную строку. Он просто возвращает новую.

+ +

Указание строки в качестве параметра

+ +

Замененная строка может включатся в следующие специальные шаблоны:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PatternInserts
$$Вставляет "$".
$&Вставлет совпадения.
$`Вставляет часть строки которая находится перед совпадениями (строка соответствующая шаблону).
$'Вставляет часть строки которая следует после совпадения (строка соответствующая шаблону).
$nГде n положительное цело число меньше чем 100, вставляет  nth строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был {{jsxref("RegExp")}} object. Обратите внимание, что это 1-индексированный.
+ +

Указание функции в качестве параметра

+ +

Вы можете передать функцию вторым параметром. Вэтом случае, функция вызывается полсе нахождения совпадений. Результат функции может быть использованна как замещающая строка. (Внимание: Выше упомянутые специальные шаблоны замены в данном случае неприменимы.)

+ +

Функция может быть вызвана многократно для каждого замененного совпадения, если регудярное выражение указано с глобальным влагом("g").

+ +

Функция имеет следующие аргументы:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Possible nameSupplied value
matchНайденная построка. (Соответствуетt $& указанному выше)
p1, p2, ...nth количество строк найденых групповыми скобками указанные первым параметром в регулярном выражении. (Соответствует  $1, $2, см. выше) Для примера, если /(\a+)(\b+)/, то p1 это \a+, а p2 это\b+.
offsetСмещение совпадающей подстроки в пределах всей исследуемой строки. (Например, если вся строка была 'abcd', а соответствующая подстрока была 'bc', то этот аргумент будет равен 1.)
stringИсследуется вся цепочка.
+ +

(Точное количество аргументов зависит от того, является ли первый аргумент регулярным выражением — и, если да, то аргументов будет столько сколько указанно в скобках.)

+ +

Examples

+ +

Using replaceAll

+ +
'aabbcc'.replaceAll('b', '.');
+// 'aa..cc'
+ +

Non-global regex throws

+ +

Поиск с регулярными выражениями должен быть с ("g"). Это не работает:

+ +
'aabbcc'.replaceAll(/b/, '.');
+TypeError: replaceAll must be called with a global RegExp
+
+ +

Это работает:

+ +
'aabbcc'.replaceAll(/b/g, '.');
+"aa..cc"
+
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.String.replaceAll")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/search/index.html b/files/ru/web/javascript/reference/global_objects/string/search/index.html new file mode 100644 index 0000000000..7900ac98a0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/search/index.html @@ -0,0 +1,149 @@ +--- +title: String.prototype.search() +slug: Web/JavaScript/Reference/Global_Objects/String/search +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/search +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод search() выполняет поиск сопоставления между регулярным выражением и этим объектом {{jsxref("Global_Objects/String", "String")}}.

+ +

Синтаксис

+ +
str.search([regexp])
+ +

Параметры

+ +
+
regexp
+
Необязательный параметр. Объект регулярного выражения. Если будет передан не объект регулярного выражения, он будет неявно преобразован в объект {{jsxref("Global_Objects/RegExp", "RegExp")}} через вызов конструктора new RegExp(regexp).
+
+ +

Описание

+ +

При успехе метод search() возвращает индекс первого сопоставления с регулярным выражением внутри строки. В противном случае метод вернёт -1.

+ +

Если вы хотите узнать, находится ли шаблон в строке, используйте метод search() (он работает почти так же, как и метод {{jsxref("RegExp.prototype.test()", "test()")}} регулярного выражения, но вместо наличия подстроки возвращает её индекс); для получения дополнительной информации (за счёт более медленного выполнения) используйте метод {{jsxref("String.prototype.match()", "match()")}} (работает так же, как метод {{jsxref("RegExp.prototype.exec()", "exec()")}} регулярного выражения).

+ +

Примеры

+ + + +

В следующем примере в журнал попадает сообщение, зависящее от успешности или неуспешности прохождения проверки.

+ +
function testInput(re, str) {
+  var midstring;
+  if (str.search(re) != -1) {
+    midstring = ' содержит ';
+  } else {
+    midstring = ' не содержит ';
+  }
+  console.log(str + midstring + re);
+}
+
+var testString  = 'hey JuDe';
+var re = /[A-Z]/g;
+
+testInput(re, testString); // выведет: hey Jude содержит /[A-Z]/g
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.12', 'String.prototype.search')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype.search', 'String.prototype.search')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Примечания по Gecko

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/slice/index.html b/files/ru/web/javascript/reference/global_objects/string/slice/index.html new file mode 100644 index 0000000000..5b6f3895c4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/slice/index.html @@ -0,0 +1,173 @@ +--- +title: String.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/String/slice +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/slice +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод slice() извлекает часть строки и возвращает новую строку без изменения оригинальной строки.

+ +

{{EmbedInteractiveExample("pages/js/string-slice.html", "taller")}}

+ +

Синтаксис

+ +
str.slice(beginIndex[, endIndex])
+ +

Параметры

+ +
+
beginIndex
+
Индекс, с которого начинать извлечение (нумерация начинается с нуля). Если аргумент отрицателен, то трактуется как str.length + beginIndex (например, если beginIndex равен -3, то он трактуется как str.length - 3). Если beginIndex  не является числом при проверке {{jsxref('Number', 'Number(beginIndex)')}}, он трактуется как 0.
+
Если beginIndex больше или равен str.length, возвращается пустая строка.
+
endIndex
+
Индекс, перед которым заканчивать извлечение (нумерация начинается с нуля). Символ по этому индексу не будет включён.
+
Если endIndex опущен или является undefined или больше чем str.length, slice() извлечёт всё до конца строки. Если аргумент отрицателен, то трактуется как str.length + endIndex (например, если endIndex равен -3, то он трактуется как str.length - 3). Если аргумент не undefined и не является числом при проверке {{jsxref('Number', 'Number(endIndex)')}}, возвращается пустая строка.
+
Если endIndex указан и меньше startIndex, то возвращается пустая строка (например, slice(-1, -3) или slice(3, 1) вернут "").
+
+ +

Возвращаемое значение

+ +

Новая строка, содержащая извлеченную часть строки.

+ +

Описание

+ +

Метод slice() извлекает текст из одной строки и возвращает новую строку. Изменения текста в одной строке не влияют на другую строку.

+ +

Метод slice() извлекает все символы до индекса endIndex, не включая сам этот индекс. Вызов str.slice(1, 4) извлечёт символы со второго по четвёртый (символы под индексами 1, 2 и 3).

+ +

К примеру, вызов str.slice(2, -1) извлечёт символы с третьего по второй с конца строки.

+ +

Примеры

+ +

Пример: использование метода slice() для создания новой строки

+ +

В следующем примере метод slice() используется для создания новой строки.

+ +
let str1 = 'Приближается утро.';
+let str2 = str1.slice(1, 8);
+let str3 = str1.slice(4, -2);
+let str4 = str1.slice(12);
+let str5 = str1.slice(30);
+
+console.log(str2); // ВЫВОД: риближа
+console.log(str3); // ВЫВОД: лижается утр
+console.log(str4); // ВЫВОД:  утро.
+console.log(str5); // ВЫВОД: ""
+
+ +

Пример: использование метода slice() с отрицательными индексами

+ +

В следующем примере метод slice() используется вместе с отрицательными индексами.

+ +
let str = 'Приближается утро.';
+str.slice(-3);     // вернёт 'ро.'
+str.slice(-3, -1); // вернёт 'ро'
+str.slice(0, -1);  // вернёт 'Приближается утро'
+
+ +

В этом примере начальным индексом считается 11-й символ с конца строки, а конечным - 16-й с начала.

+ +
str.slice(-11, 16); // вернет 'ается утр'
+ +

Здесь начальным индексом считается 6-й символ от начала строки, а конечным - 7-й с конца.

+ +
str.slice(6, -7); // вернет 'жаетс'
+ +

В этом примере оба индекса считаются с конца строки: 5-й для начального индекса, 1-й для конечного.

+ +
str.slice(-5, -1); // вернет 'утро'
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.13', 'String.prototype.slice')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype.slice', 'String.prototype.slice')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/small/index.html b/files/ru/web/javascript/reference/global_objects/string/small/index.html new file mode 100644 index 0000000000..00fd79119f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/small/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.small() +slug: Web/JavaScript/Reference/Global_Objects/String/small +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/small +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод small() создаёт HTML-элемент {{HTMLElement("small")}}, заставляющий строку отображаться маленьким шрифтом.

+ +

Синтаксис

+
str.small()
+ +

Описание

+

Метод small() заключает строку в тег <small>: "<small>str</small>".

+ +

Примеры

+ +

Пример: использование метода small()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:

+
var worldString = 'Привет, мир';
+
+console.log(worldString.small());     // <small>Привет, мир</small>
+console.log(worldString.big());       // <big>Привет, мир</big>
+console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize>
+
+

При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута style элемента и управлять им более обобщённым способом, например:

+
document.getElementById('yourElemId').style.fontSize = '0.7em';
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.small', 'String.prototype.small')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/split/index.html b/files/ru/web/javascript/reference/global_objects/string/split/index.html new file mode 100644 index 0000000000..90f94de449 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/split/index.html @@ -0,0 +1,229 @@ +--- +title: String.prototype.split() +slug: Web/JavaScript/Reference/Global_Objects/String/split +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/split +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод split() разбивает объект {{jsxref("Global_Objects/String", "String")}} на массив строк путём разделения строки указанной подстрокой.

+ +

Синтаксис

+ +
str.split([separator[, limit]])
+ +

Параметры

+ +
+
separator
+
Необязательный параметр. Указывает символы, используемые в качестве разделителя внутри строки. Параметр separator может быть как строкой, так и {{jsxref("Global_Objects/RegExp", "регулярным выражением", "", 1)}}. Если параметр опущен, возвращённый массив будет содержать один элемент со всей строкой. Если параметр равен пустой строке, строка str будет преобразована в массив символов.
+
limit
+
Необязательный параметр. Целое число, определяющее ограничение на количество найденных подстрок. Метод split() всё равно разделяет строку на каждом сопоставлении с разделителем separator, но обрезает возвращаемый массив так, чтобы он содержал не более limit элементов.
+
+ +

Описание

+ +

Метод split() возвращает новый массив.

+ +

Если разделитель separator найден, он удаляется из строки, а подстроки возвращаются в массиве. Если разделитель опущен, массив будет содержать только один элемент, состоящий из всей строки. Если разделитель является пустой строкой, строка str будет преобразована в массив символов.

+ +

Если разделитель является регулярным выражением, содержащим подгруппы, то каждый раз при сопоставлении с разделителем, результаты (включая те, что не определены) захвата подгруппы будут помещаться внутрь выходного массива. Однако, не все браузеры поддерживают эту возможность.

+ +

{{Note("Если строка является пустой строкой, метод split() вернёт массив, состоящий из одной пустой строки, а не пустой массив.")}}

+ +

Примеры

+ +

Пример: использование метода split()

+ +

В следующем примере определяется функция, которая разбивает строку на массив строк, используя указанный разделитель. После разбиения строки, функция отображает сообщения, показывающие оригинальную строку (до разбиения), используемый разделитель, количество элементов в массиве и сами эти элементы.

+ +
function splitString(stringToSplit, separator) {
+  var arrayOfStrings = stringToSplit.split(separator);
+
+  console.log('Оригинальная строка: "' + stringToSplit + '"');
+  console.log('Разделитель: "' + separator + '"');
+  console.log('Массив содержит ' + arrayOfStrings.length + ' элементов: ' + arrayOfStrings.join(' / '));
+}
+
+// Строчка из «Бури» Шекспира. Перевод Миxаила Донского.
+var tempestString = 'И как хорош тот новый мир, где есть такие люди!';
+var monthString = 'Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек';
+
+var space = ' ';
+var comma = ',';
+
+splitString(tempestString, space);
+splitString(tempestString);
+splitString(monthString, comma);
+
+ +

Пример сгенерирует следующий вывод:

+ +
Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!"
+Разделитель: " "
+Массив содержит 10 элементов: И / как / хорош / тот / новый / мир, / где / есть / такие / люди!
+
+Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!"
+Разделитель: "undefined"
+Массив содержит 1 элементов: И как хорош тот новый мир, где есть такие люди!
+
+Оригинальная строка: "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек"
+Разделитель: ","
+Массив содержит 12 элементов: Янв / Фев / Мар / Апр / Май / Июн / Июл / Авг / Сен / Окт / Ноя / Дек
+
+ +

Пример: удаление пробелов из строки

+ +

В следующем примере метод split() ищет 0 или более пробелов, за которыми следует точка с запятой, за которой снова следуют 0 или более пробелов, и, если этот шаблон найден, удаляет пробелы из строки. Переменная nameList является массивом, возвращённым в результате работы метода split().

+ +
var names = 'Гарри Трамп ;Фрэд Барни; Хелен Ригби ; Билл Абель ;Крис Ханд ';
+
+console.log(names);
+
+var re = /\s*;\s*/;
+var nameList = names.split(re);
+
+console.log(nameList);
+
+ +

Пример напечатает две строки; на первой строке напечатана оригинальная строчка, а на второй — получившийся массив.

+ +
Гарри Трамп ;Фред Барни; Хелен Ригби ; Билл Абель ;Крис Ханд
+Гарри Трамп,Фред Барни,Хелен Ригби,Билл Абель,Крис Ханд
+
+ +

Пример: возврат ограниченного числа подстрок

+ +

В следующем примере метод split() ищет 0 или более пробелов в строке и возвращает первые три найденных подстроки.

+ +
var myString = 'Привет, мир. Как дела?';
+var splits = myString.split(' ', 3);
+
+console.log(splits);
+
+ +

Вывод скрипта будет следующим:

+ +
Привет,,мир.,Как
+
+ +

Пример: захват подгрупп

+ +

Если параметр separator содержит подгруппы, сопоставившиеся результаты также будут присутствовать в возвращённом массиве.

+ +
var myString = 'Привет 1 мир. Предложение номер 2.';
+var splits = myString.split(/(\d)/);
+
+console.log(splits);
+
+ +

Вывод скрипта будет следующим:

+ +
Привет ,1, мир. Предложение номер ,2,.
+
+ +

Пример: обращение строки при помощи метода split()

+ +
var str = 'фывапролд';
+var strReverse = str.split('').reverse().join(''); // 'длорпавыф'
+// split() возвращает массив, к которому применяются методы reverse() и join()
+
+ +

Бонус: используя оператор {{jsxref("Operators/Comparison_Operators", "===", "#Identity_.2F_strict_equality_(.3D.3D.3D)")}}, можно проверить, являлась ли строка палиндромом.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.5.4.14', 'String.prototype.split')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.prototype.split', 'String.prototype.split')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/startswith/index.html b/files/ru/web/javascript/reference/global_objects/string/startswith/index.html new file mode 100644 index 0000000000..d9228e2925 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/startswith/index.html @@ -0,0 +1,81 @@ +--- +title: String.prototype.startsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/startsWith +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод startsWith() помогает определить, начинается ли строка с символов указаных в скобках, возвращая, соответственно, true или false.

+ +

Синтаксис

+ +
str.startsWith(searchString[, position])
+ +

Параметры

+ +
+
searchString
+
Символы, искомые в начале данной строки.
+
position
+
Необязательный параметр. Позиция в строке, с которой начинать поиск  searchString; по умолчанию 0.
+
+ +

Описание

+ +

Этот метод позволяет определять, начинается ли строка с указанных в скобках символов.

+ +

Примеры

+ +

Пример: использование метода startsWith()

+ +
var str = 'Быть или не быть, вот в чём вопрос.';
+
+console.log(str.startsWith('Быть'));        // true
+console.log(str.startsWith('не быть'));     // false
+console.log(str.startsWith('не быть', 9));  // true
+
+ +

Полифилл

+ +

Этот метод был добавлен к спецификации ECMAScript 6 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:

+ +
if (!String.prototype.startsWith) {
+  Object.defineProperty(String.prototype, 'startsWith', {
+    enumerable: false,
+    configurable: false,
+    writable: false,
+    value: function(searchString, position) {
+      position = position || 0;
+      return this.indexOf(searchString, position) === position;
+    }
+  });
+}
+
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.String.startsWith")}}

+ +
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/strike/index.html b/files/ru/web/javascript/reference/global_objects/string/strike/index.html new file mode 100644 index 0000000000..5ecaf8cfb4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/strike/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.strike() +slug: Web/JavaScript/Reference/Global_Objects/String/strike +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/strike +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод strike() создаёт HTML-элемент {{HTMLElement("strike")}}, заставляющий строку отображаться зачёркнутым текстом.

+ +

Синтаксис

+
str.strike()
+ +

Описание

+

Метод strike() заключает строку в тег <strike>: "<strike>str</strike>".

+ +

Примеры

+ +

Пример: использование метода strike()

+

В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:

+
var worldString = 'Привет, мир';
+
+document.write(worldString.blink());
+document.write(worldString.bold());
+document.write(worldString.italics());
+document.write(worldString.strike());
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
<blink>Привет, мир</blink>
+<b>Привет, мир</b>
+<i>Привет, мир</i>
+<strike>Привет, мир</strike>
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.strike', 'String.prototype.strike')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/sub/index.html b/files/ru/web/javascript/reference/global_objects/string/sub/index.html new file mode 100644 index 0000000000..69b0c4483c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/sub/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.sub() +slug: Web/JavaScript/Reference/Global_Objects/String/sub +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/sub +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод sub() создаёт HTML-элемент {{HTMLElement("sub")}}, заставляющий строку отображаться подстрочным текстом (нижним индексом).

+ +

Синтаксис

+
str.sub()
+ +

Описание

+

Метод sub() заключает строку в тег <sub>: "<sub>str</sub>".

+ +

Примеры

+ +

Пример: использование методов sub() и sup()

+

В следующем примере для форматирования строки используются методы sub() и {{jsxref("String.prototype.sup()", "sup()")}}:

+
var superText = 'надстрочный';
+var subText = 'подстрочный';
+
+document.write('Вот так выглядит ' + superText.sup() + ' текст.');
+document.write('Вот так выглядит ' + subText.sub() + ' текст.');
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
Вот так выглядит <sup>надстрочный</sup> текст.
+Вот так выглядит <sub>подстрочный</sub> текст.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.sub', 'String.prototype.sub')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/substr/index.html b/files/ru/web/javascript/reference/global_objects/string/substr/index.html new file mode 100644 index 0000000000..cfc0191ea7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/substr/index.html @@ -0,0 +1,116 @@ +--- +title: String.prototype.substr() +slug: Web/JavaScript/Reference/Global_Objects/String/substr +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substr +--- +
+
{{JSRef}}
+ +
+ +
Внимание: так как String.prototype.substr(…) не полностью упразднена (а лишь "удалена из стандартов по вебу"), она считается унаследованной функцией, использование которой лучше избегать там, где это возможно. Она не является частью ядра языка JavaScript и может быть удалена в будущем. Если есть возможность, используйте метод substring().
+ +

Метод substr() возвращает указанное количество символов из строки, начиная с указанной позиции.

+{{EmbedInteractiveExample("pages/js/string-substr.html")}} + + + +

Синтаксис

+ +
str.substr(start[, length])
+ +

Параметры

+ +
+
start
+
Позиция, с которой начинать извлекать символы. Если передано отрицательное число, она трактуется как strLength - start, где strLength равна длине строки (например, если параметр start равен -3, то он трактуется как strLength - 3.)
+
length
+
Необязательный параметр. Количество извлекаемых символов.
+
+ +

Возвращаемое значение

+ +

Новая строка, содержащая часть исходной, обрезанной по переданным параметрам.

+ +

Описание

+ +

Параметр start является индексом символа. Индекс первого символа равен 0, а последнего символа — на один меньше длины строки. Метод substr() начинает извлекать символы начиная с позиции start и собирая length символов (если он не достигнет раньше конца строки, в этом случае будет возвращено меньшее количество символов).

+ +

Если параметр start является положительным и он больше, либо равен длине строки, метод substr() вернёт пустую строку.

+ +

Если параметр start является отрицательным, метод substr() использует его как индекс символа, начиная с конца строки. Если параметр start отрицателен и по модулю больше длины строки, метод substr() будет использовать 0 в качестве начального индекса. Обратите внимание: описанная обработка отрицательных значений аргумента start не поддерживается JScript от Microsoft.

+ +

Если параметр length равен нулю или отрицателен, метод substr() вернёт пустую строку. Если параметр length опущен, метод substr() извлечёт все символы до конца строки.

+ +

Примеры

+ +

Использование метода substr()

+ +
var str = 'абвгдеёжзи';
+
+console.log('(1, 2): '   + str.substr(1, 2));   // '(1, 2): бв'
+console.log('(-3, 2): '  + str.substr(-3, 2));  // '(-3, 2): жз'
+console.log('(-3): '     + str.substr(-3));     // '(-3): жзи'
+console.log('(1): '      + str.substr(1));      // '(1): бвгдеёжзи'
+console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): аб'
+console.log('(20, 2): '  + str.substr(20, 2));  // '(20, 2): '
+
+ +

Полифилл

+ +

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

+ +
// only run when the substr() function is broken
+if ('ab'.substr(-1) != 'b') {
+  /**
+   *  Get the substring of a string
+   *  @param  {integer}  start   where to start the substring
+   *  @param  {integer}  length  how many characters to return
+   *  @return {string}
+   */
+  String.prototype.substr = function(substr) {
+    return function(start, length) {
+      // call the original method
+      return substr.call(this,
+      	// did we get a negative start, calculate how much it is from the beginning of the string
+        // adjust the start parameter for negative value
+        start < 0 ? this.length + start : start,
+        length)
+    }
+  }(String.prototype.substr);
+}
+
+ +

Спецификации

+ + + + + + + + + + +
Спецификация
{{SpecName('ESDraft', '#sec-string.prototype.substr', 'String.prototype.substr')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.String.substr")}}

+ +

Смотрите также

+ + +
diff --git a/files/ru/web/javascript/reference/global_objects/string/substring/index.html b/files/ru/web/javascript/reference/global_objects/string/substring/index.html new file mode 100644 index 0000000000..9efb4f84a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/substring/index.html @@ -0,0 +1,194 @@ +--- +title: String.prototype.substring() +slug: Web/JavaScript/Reference/Global_Objects/String/substring +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substring +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод substring() возвращает подстроку строки между двумя индексами, или от одного индекса и до конца строки.

+ +

Синтаксис

+ +
str.substring(indexA[, indexB])
+ +

Параметры

+ +
+
indexA
+
Целое число от 0 до длины строки, определяющее смещение в строке первого символа, который будет включён в результирующую подстроку.
+
indexB
+
Необязательный параметр. Целое число от 0 до длины строки, определяющее смещение в строке первого символа, который не будет включён в результирующую подстроку.
+
+ +

Описание

+ +

Метод substring() извлекает символы, начиная с индекса indexA до, но не включая, индекс indexB. В частности:

+ + + +

Если аргумент indexA будет больше аргумента indexB, то метод substring() сработает так, как если бы аргументы были поменяны местами; например, str.substring(1, 0) == str.substring(0, 1).

+ +

Примеры

+ +

Пример: использование метода substring()

+ +

В следующем примере метод substring() используется для отображения символов из строки 'Mozilla':

+ +
var anyString = 'Mozilla';
+
+// Отобразит 'Moz'
+console.log(anyString.substring(0, 3));
+console.log(anyString.substring(3, 0));
+
+// Отобразит 'lla'
+console.log(anyString.substring(4, 7));
+console.log(anyString.substring(7, 4));
+
+// Отобразит 'Mozill'
+console.log(anyString.substring(0, 6));
+
+// Отобразит 'Mozilla'
+console.log(anyString.substring(0, 7));
+console.log(anyString.substring(0, 10));
+
+ +

Пример: использование метода substring() вместе со свойством length

+ +

Следующий пример использует метод substring() и свойство {{jsxref("String.length", "length")}} для извлечения последних символов из строки. Этот метод может оказаться легче для запоминания, особенно если учесть, что вам не нужно знать начальный и конечный индексы, как это было в примере выше.

+ +
// Отобразит 'illa' - последние 4 символа
+var anyString = 'Mozilla';
+var anyString4 = anyString.substring(anyString.length - 4);
+console.log(anyString4);
+
+// Отобразит 'zilla' - последние 5 символов
+var anyString = 'Mozilla';
+var anyString5 = anyString.substring(anyString.length - 5);
+console.log(anyString5);
+
+ +

Пример: замена подстроки в строке

+ +

Следующий пример демонстрирует замену подстроки в строке. Он заменит как отдельные символы, так и целые подстроки. Вызов функции в конце примера изменит строку 'Дивный новый мир' на строку 'Дивный новый веб'.

+ +
// Заменяет oldS на newS в строке fullS
+function replaceString(oldS, newS, fullS) {
+  for (var i = 0; i < fullS.length; ++i) {
+    if (fullS.substring(i, i + oldS.length) == oldS) {
+      fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length);
+    }
+  }
+  return fullS;
+}
+
+replaceString('мир', 'веб', 'Дивный новый мир');
+
+ +

Обратите внимание, что функция может скатиться в беcконечный цикл, если строка oldS сама является подстрокой для newS — например, если вы попытаетесь заменить слово «мир» на слово «другоймир». Лучше использоваться следующий метод для замены строк:

+ +
function replaceString(oldS, newS, fullS) {
+  return fullS.split(oldS).join(newS);
+}
+
+ +

Код выше следует рассматривать всего лишь как пример работы с подстроками. Если вам нужно заменить подстроки, скорее всего вы захотите использовать метод {{jsxref("String.prototype.replace()")}}.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартРеализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.5.4.15', 'String.prototype.substring')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.substring', 'String.prototype.substring')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/sup/index.html b/files/ru/web/javascript/reference/global_objects/string/sup/index.html new file mode 100644 index 0000000000..092b08a314 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/sup/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.sup() +slug: Web/JavaScript/Reference/Global_Objects/String/sup +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/sup +--- +
{{JSRef("Global_Objects", "String")}} {{deprecated_header}}
+ +

Сводка

+

Метод sup() создаёт HTML-элемент {{HTMLElement("sup")}}, заставляющий строку отображаться надстрочным текстом (верхним индексом).

+ +

Синтаксис

+
str.sup()
+ +

Описание

+

Метод sup() заключает строку в тег <sup>: "<sup>str</sup>".

+ +

Примеры

+ +

Пример: использование методов sub() и sup()

+

В следующем примере для форматирования строки используются методы {{jsxref("String.prototype.sub()", "sub()")}} и sup():

+
var superText = 'надстрочный';
+var subText = 'подстрочный';
+
+document.write('Вот так выглядит ' + superText.sup() + ' текст.');
+document.write('Вот так выглядит ' + subText.sub() + ' текст.');
+
+

Этот пример генерирует такой же вывод, как и следующий HTML:

+
Вот так выглядит <sup>надстрочный</sup> текст.
+Вот так выглядит <sub>подстрочный</sub> текст.
+
+ +

Спецификации

+ + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-string.prototype.sup', 'String.prototype.sup')}}{{Spec2('ES6')}}Изначальное определение. Реализована в JavaScript 1.0.
+ Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html new file mode 100644 index 0000000000..16950a2077 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html @@ -0,0 +1,110 @@ +--- +title: String.prototype.toLocaleLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод toLocaleLowerCase() возвращает значение строки, на которой он был вызван, преобразованное в нижний регистр согласно правилам преобразования регистра локали.

+ +

Синтаксис

+
str.toLocaleLowerCase()
+ +

Описание

+

Метод toLocaleLowerCase() возвращает значение строки, преобразованное в нижний регистр согласно правилам преобразования регистра локали. Метод toLocaleLowerCase() не изменяет значение самой строки. В большинстве случаев он возвращает тот же результат, что и метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}, но для некоторых локалей, например, турецкой, в которой правила преобразования регистра отличаются от правил по умолчанию, принятых в Юникоде, он может вернуть другой результат.

+ +

Примеры

+ +

Пример: использование метода toLocaleLowerCase()

+
console.log('АЛФАВИТ'.toLocaleLowerCase()); // 'алфавит'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.17', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html new file mode 100644 index 0000000000..290852f30e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html @@ -0,0 +1,110 @@ +--- +title: String.prototype.toLocaleUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод toLocaleUpperCase() возвращает значение строки, на которой он был вызван, преобразованное в верхний регистр согласно правилам преобразования регистра локали.

+ +

Синтаксис

+
str.toLocaleUpperCase()
+ +

Описание

+

Метод toLocaleUpperCase() возвращает значение строки, преобразованное в верхний регистр согласно правилам преобразования регистра локали. Метод toLocaleUpperCase() не изменяет значение самой строки. В большинстве случаев он возвращает тот же результат, что и метод {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}, но для некоторых локалей, например, турецкой, в которой правила преобразования регистра отличаются от правил по умолчанию, принятых в Юникоде, он может вернуть другой результат.

+ +

Примеры

+ +

Пример: использование метода toLocaleUpperCase()

+
console.log('алфавит'.toLocaleUpperCase()); // 'АЛФАВИТ'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.4.19', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html new file mode 100644 index 0000000000..c79c41ad6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.toLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод toLowerCase() возвращает значение строки, на которой он был вызван, преобразованное в нижний регистр.

+ +

Синтаксис

+
str.toLowerCase()
+ +

Описание

+

Метод toLowerCase() возвращает значение строки, преобразованное в нижний регистр. Метод toLowerCase() не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода toLowerCase()

+
console.log('АЛФАВИТ'.toLowerCase()); // 'алфавит'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.5.4.16', 'String.prototype.toLowerCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tolowercase', 'String.prototype.toLowerCase')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/tosource/index.html b/files/ru/web/javascript/reference/global_objects/string/tosource/index.html new file mode 100644 index 0000000000..3570fd5b48 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tosource/index.html @@ -0,0 +1,91 @@ +--- +title: String.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/String/toSource +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource +--- +
{{JSRef("Global_Objects", "String")}} {{non-standard_header}}
+ +

Сводка

+

Метод toSource() возвращает строковое представление исходного кода объекта.

+ +

Синтаксис

+
String.toSource()
+str.toSource()
+
+ +

Описание

+

Метод toSource() возвращает следующие значения:

+ +

Этот метод обычно вызывается внутренними механизмаим движка JavaScript, а не явно в коде.

+ +

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/tostring/index.html b/files/ru/web/javascript/reference/global_objects/string/tostring/index.html new file mode 100644 index 0000000000..6987aa12ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tostring/index.html @@ -0,0 +1,111 @@ +--- +title: String.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/String/toString +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toString +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод toString() возвращает строку, представляющую указанный объект.

+ +

Синтаксис

+
str.toString()
+ +

Описание

+

Объект {{jsxref("Global_Objects/String", "String")}} переопределяет метод toString(), унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/String", "String")}} метод toString() возвращает строку, представляющую объект и делает тоже самое, что и метод {{jsxref("String.prototype.valueOf()")}}.

+ +

Примеры

+ +

Пример: использование метода toString()

+

В следующем примере выводится строковое значение объекта {{jsxref("Global_Objects/String", "String")}}:

+
var x = new String('Привет, мир');
+
+console.log(x.toString()); // Отобразит 'Привет, мир'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.5.4.2', 'String.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.tostring', 'String.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html b/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html new file mode 100644 index 0000000000..96354d60e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.toUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+

Метод toUpperCase() возвращает значение строки, на которой он был вызван, преобразованное в верхний регистр.

+ +

Синтаксис

+
str.toUpperCase()
+ +

Описание

+

Метод toUpperCase() возвращает значение строки, преобразованное в верхний регистр. Метод toUpperCase() не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода toUpperCase()

+
console.log('алфавит'.toUpperCase()); // 'АЛФАВИТ'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.5.4.18', 'String.prototype.toUpperCase')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.touppercase', 'String.prototype.toUpperCase')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/trim/index.html b/files/ru/web/javascript/reference/global_objects/string/trim/index.html new file mode 100644 index 0000000000..e7f2037942 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trim/index.html @@ -0,0 +1,135 @@ +--- +title: String.prototype.trim() +slug: Web/JavaScript/Reference/Global_Objects/String/Trim +tags: + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод trim() удаляет пробельные символы с начала и конца строки. Пробельными символами в этом контексте считаются все собственно пробельные символы (пробел, табуляция, неразрывный пробел и прочие) и все символы конца строки (LF, CR и прочие).

+ +

Синтаксис

+ +
str.trim()
+ +

Описание

+ +

Метод trim() возвращает строку с вырезанными пробельными символами с её концов. Метод trim() не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода trim()

+ +

Следующий пример покажет строку 'foo':

+ +
var orig = '   foo  ';
+console.log(orig.trim()); // 'foo'
+
+// Другой пример, в котором .trim() убирает пробельные символы только с одной стороны.
+
+var orig = 'foo    ';
+console.log(orig.trim()); // 'foo'
+
+ +

Полифилл

+ +

Запуск следующего кода до любого другого создаст метод trim(), если он ещё не реализуется браузером.

+ +
if (!String.prototype.trim) {
+  (function() {
+    // Вырезаем BOM и неразрывный пробел
+    String.prototype.trim = function() {
+      return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+    };
+  })();
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES5.1', '#sec-15.5.4.20', 'String.prototype.trim')}}{{Spec2('ES5.1')}}Изначальное определение. Реализована в JavaScript 1.8.1.
{{SpecName('ES6', '#sec-string.prototype.trim', 'String.prototype.trim')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html b/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html new file mode 100644 index 0000000000..f60326e795 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html @@ -0,0 +1,93 @@ +--- +title: String.prototype.trimLeft() +slug: Web/JavaScript/Reference/Global_Objects/String/TrimLeft +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimStart +--- +
{{JSRef("Global_Objects", "String")}} {{non-standard_header}}
+ +

Сводка

+

Метод trimLeft() удаляет пробельные символы с левого конца строки.

+ +

Синтаксис

+
str.trimLeft()
+ +

Описание

+

Метод trimLeft() возвращает строку с вырезанными пробельными символами с её левого конца. Метод trimLeft() не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода trimLeft()

+

Следующий пример покажет строку 'foo ':

+
var str = '   foo  ';
+
+console.log(str.length); // 8
+
+str = str.trimLeft();
+console.log(str.length); // 5
+console.log(str);        // 'foo  '
+
+ +

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.8.1.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/trimright/index.html b/files/ru/web/javascript/reference/global_objects/string/trimright/index.html new file mode 100644 index 0000000000..4a7bd8e907 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trimright/index.html @@ -0,0 +1,93 @@ +--- +title: String.prototype.trimRight() +slug: Web/JavaScript/Reference/Global_Objects/String/TrimRight +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd +--- +
{{JSRef("Global_Objects", "String")}} {{non-standard_header}}
+ +

Сводка

+

Метод trimRight() удаляет пробельные символы с правого конца строки.

+ +

Синтаксис

+
str.trimRight()
+ +

Описание

+

Метод trimRight() возвращает строку с вырезанными пробельными символами с её правого конца. Метод trimRight() не изменяет значение самой строки.

+ +

Примеры

+ +

Пример: использование метода trimRight()

+

Следующий пример покажет строку ' foo':

+
var str = '   foo  ';
+
+console.log(str.length); // 8
+
+str = str.trimRight();
+console.log(str.length); // 5
+console.log(str);        // '   foo'
+
+ +

Спецификации

+

Не является частью какого-либо стандарта. Реализована в JavaScript 1.8.1.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/string/valueof/index.html b/files/ru/web/javascript/reference/global_objects/string/valueof/index.html new file mode 100644 index 0000000000..26eba20671 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/valueof/index.html @@ -0,0 +1,120 @@ +--- +title: String.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/String/valueOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Сводка

+ +

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/String", "String")}}.

+ +

Синтаксис

+ +
str.valueOf()
+ +

Описание

+ +

Метод valueOf() возвращает примитивное значение объекта {{jsxref("Global_Objects/String", "String")}} в виде строкового типа данных. Это значение эквивалентно значению вызова метода {{jsxref("String.prototype.toString()")}}.

+ +

Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.

+ +

Примеры

+ +

Пример: использование метода valueOf()

+ +
var x = new String('Привет, мир');
+console.log(x.valueOf()); // Отобразит 'Привет, мир'
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.5.4.3', 'String.prototype.valueOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype.valueof', 'String.prototype.valueOf')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html b/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html new file mode 100644 index 0000000000..680100f800 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html @@ -0,0 +1,66 @@ +--- +title: 'Symbol.prototype[@@toPrimitive]' +slug: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive +tags: + - ECMAScript 2015 + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive +--- +
{{JSRef}}
+ +
+ +

Метод [@@toPrimitive]()  преобразует объект Symbol в примитивное значение.

+ +

Синтаксис

+ +
Symbol()[Symbol.toPrimitive](hint)
+
+ +

Возвращаемое значение

+ +

Примитивное значение указанного объекта Symbol {{jsxref("Symbol")}}.

+ +

Описание

+ +

Метод [@@toPrimitive]() возвращает примитивное значение объекта Symbol как тип данных Symbol. Аргумент hint не используется.

+ +

JavaScript вызывает метод[@@toPrimitive] () для преобразования объекта в примитив. JavaScript автоматически вызывает метод, когда на месте объекта ожидается примитивное значение.

+ +

Спефикации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКоментарий
{{SpecName('ES2015', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Symbol.@@toPrimitive")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/for/index.html b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html new file mode 100644 index 0000000000..5b4a6ee85c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html @@ -0,0 +1,140 @@ +--- +title: Symbol.for() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/for +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for +--- +
{{JSRef}}
+ +

Метод Symbol.for(key) ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создается новый разделяемый символ для данного ключа в глобальном реестре символов.

+ +

Синтаксис

+ +
Symbol.for(key);
+ +

Параметры

+ +
+
key
+
Строка, обязательный. Идентификатор символа (также используется в качестве описания символа).
+
+ +

Описание

+ +

В противоположность вызову Symbol(), функция Symbol.for() создаёт символ, доступный в глобальном списке реестра символов. Symbol.for() не создаёт новый символ при каждом вызове, вместо этого, метод сначала проверяет, существует ли символ с заданным идентификатором в реестре — и возвращает его, если тот присутствует. Если символ с заданным ключом не найден, Symbol.for() создаст новый глобальный символ.

+ +

Глобальный реестр

+ +

Глобальный реестр символов — это список со следующей структурой записей и пустой при инициализации:

+ + + + + + + + + + + + + + + + + +
Элемент глобального реестра символов
ПолеЗначение
[[key]]Строка, используемая в качестве идентификатора.
[[symbol]]Символ, хранящийся глобально.
+ +

Примеры

+ +
Symbol.for("foo"); // создаёт новый глобальный символ
+Symbol.for("foo"); // возвращает символ, созданный прежде
+
+// Одинаковый глобальный символ, но не локальный
+Symbol.for("bar") === Symbol.for("bar"); // true
+Symbol("bar") === Symbol("bar"); // false
+
+// Идентификатор также используется в качестве описания
+var sym = Symbol.for("mario");
+sym.toString(); // "Symbol(mario)"
+
+ +

Чтобы предотвратить конфликт имён ваших глобальных символов и глобальных символов из других библиотек, может оказаться неплохой идеей использование префиксов:

+ +
Symbol.for("mdn.foo");
+Symbol.for("mdn.bar");
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.for', 'Symbol.for')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{ CompatChrome(40) }}{{ CompatGeckoDesktop("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html new file mode 100644 index 0000000000..48c2d59173 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html @@ -0,0 +1,71 @@ +--- +title: Symbol.hasInstance +slug: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +tags: + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +--- +
{{JSRef}}
+ +

Symbol.hasInstance — известный символ, который используется для определения является ли объект экземпляром конструктора. Этот символ используется для изменения поведения оператора {{jsxref("Operators/instanceof", "instanceof")}}.

+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Примеры

+ +

Поведение instanceof может быть изменено, например, следующим образом:

+ +
class MyArray {
+  static [Symbol.hasInstance](instance) {
+    return Array.isArray(instance);
+  }
+}
+console.log([] instanceof MyArray); // true
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Symbol.hasInstance")}}

+ +

 

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/index.html b/files/ru/web/javascript/reference/global_objects/symbol/index.html new file mode 100644 index 0000000000..9dbecb81cb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/index.html @@ -0,0 +1,227 @@ +--- +title: Symbol +slug: Web/JavaScript/Reference/Global_Objects/Symbol +tags: + - API + - ECMAScript6 + - JavaScript + - Symbol + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +
{{JSRef}}
+ +

Сводка

+ +

Символ (анг. Symbol) — это уникальный и неизменяемый тип данных, который может быть использован как идентификатор для свойств объектов. Символьный объект (анг. symbol object) — это объект-обёртка (англ. wrapper) для {{Glossary("Primitive", "примитивного")}} символьного типа.

+ +

Синтаксис

+ +
Symbol([описание])
+ +

Параметры

+ +
+
описание {{optional_inline}}
+
Необязательный, строка. Описание символа, которое может быть использовано во время отладки, но не для доступа к самому символу.
+
+ +

Описание

+ +

Чтобы создать новый символьный примитив, достаточно написать Symbol(), указав по желанию строку в качестве описания этого символа:

+ +
var sym1 = Symbol();
+var sym2 = Symbol("foo");
+var sym3 = Symbol("foo");
+
+ +

Код выше создает три новых символа. Заметьте, что Symbol("foo") не выполняет приведение (англ. coercion) строки "foo" к символу. Это выражение создает каждый раз новый символ:

+ +
Symbol("foo") === Symbol("foo"); // false
+ +

Код ниже с оператором {{jsxref("Operators/new", "new")}} бросит исключение {{jsxref("TypeError")}}:

+ +
var sym = new Symbol(); // TypeError
+ +

Это удерживает разработчиков от создания явного объекта-обёртки Symbol вместо нового символьного значения. Создание явных объектов-обёрток для примитивных типов доступно (например, new Boolean, new String, new Number).

+ +

Если вам действительно необходимо обернуть символ в объект, вы можете использовать функцию Object():

+ +
var sym = Symbol("foo");
+typeof sym;     // "symbol"
+var symObj = Object(sym);
+typeof symObj;  // "object"
+
+ +

Разделяемые символы в глобальном символьном реестре

+ +

Приведенный выше синтаксис, использующий функцию Symbol(), не создаст глобальный символ, который был бы доступен в любом месте вашего кода. Для создания символов, доступных во всех файлах и в окружении (глобальной области), используйте методы {{jsxref("Symbol.for()")}} и {{jsxref("Symbol.keyFor()")}}, чтобы задать или получить символ из глобального символьного реестра.

+ +

Поиск символьных свойств у объектов

+ +

Метод {{jsxref("Object.getOwnPropertySymbols()")}} возвращает массив символов и позволяет получить символьные свойства конкретного объекта. Следует заметить, что при инициализации объекты не получают символьных свойств, так что этот массив будет пуст, пока вы не зададите ему какое-либо символьное свойство.

+ +

Свойства

+ +
+
Symbol.length
+
Содержит длину, всегда равную 0 (нулю).
+
{{jsxref("Symbol.prototype")}}
+
Содержит прототип конструктора Symbol.
+
+ +

Известные символы

+ +

В добавок к вашим собственным символам, JavaScript имеет несколько встроенных символов, представляющих внутренние механизмы языка, которые не были доступны разработчикам в версиях ECMAScript 5 и более ранних. Эти символы доступны посредством следующих свойств:

+ +
+
+

Итерационные символы

+
+
{{jsxref("Symbol.iterator")}}
+
Метод, возвращающий итератор по умолчанию для объекта. Используется конструкцией {{jsxref("Statements/for...of","for...of")}}.
+
+

Символы регулярных выражений

+
+
{{jsxref("Symbol.match")}}
+
Метод для сопоставления объекта со строкой, также используемый для определения возможности объекта выступать в качестве регулярного выражения. Используется функцией {{jsxref("String.prototype.match()")}}.
+
{{jsxref("Symbol.replace")}}
+
Метод, заменяющий совпавшие подстроки в строке. Используется функцией {{jsxref("String.prototype.replace()")}}.
+
{{jsxref("Symbol.search")}}
+
Метод, возвращающий индекс вхождения подстроки, соответствующей регулярному выражению. Используется функцией {{jsxref("String.prototype.search()")}}.
+
{{jsxref("Symbol.split")}}
+
Метод, разбивающий строку на части в местах, соответствующих регулярному выражению. Используется функцией {{jsxref("String.prototype.split()")}}. 
+
+

Другие символы

+
+
{{jsxref("Symbol.hasInstance")}}
+
Метод, определяющий, распознает ли конструктор некоторый объект как свой экземпляр. Используется оператором {{jsxref("Operators/instanceof", "instanceof")}}.
+
{{jsxref("Symbol.isConcatSpreadable")}}
+
Булево значение, показывающее, должен ли объект быть сведен к плоскому представлению (англ. flatten) в виде массива его элементов функцией {{jsxref("Array.prototype.concat()")}}.
+
{{jsxref("Symbol.unscopables")}}
+
Массив строковых имен свойств. Позволяет скрыть свойства от инструкции with (прежде всего для обратной совместимости).
+
{{jsxref("Symbol.species")}}
+
Метод, определяющий конструктор для порождённых объектов.
+
{{jsxref("Symbol.toPrimitive")}}
+
Метод, преобразующий объект в примитив (примитивное значение).
+
{{jsxref("Symbol.toStringTag")}}
+
Строковое значение, используемое в качестве описания объекта по умолчанию. Используется функцией {{jsxref("Object.prototype.toString()")}}
+
+ +

Методы

+ +
+
{{jsxref("Symbol.for()", "Symbol.for(key)")}}
+
Ищет существующие символы по заданному ключу и возвращает его, если он найден. В противном случае создается новый символ для данного ключа в глобальном реестре символов.
+
{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}
+
Получает по разделямому символу его ключ из глобального реестра символов.
+
+ +

Прототип Symbol

+ +

Все символы наследуют от {{jsxref("Symbol.prototype")}}.

+ +

Свойства

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Properties')}}

+ +

Методы

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Methods')}}

+ +

Примеры

+ +

Использование оператора typeof с символами

+ +

Оператор {{jsxref("Operators/typeof", "typeof")}} позволяет идентифицировать символ.

+ +
typeof Symbol() === 'symbol'
+typeof Symbol('foo') === 'symbol'
+typeof Symbol.iterator === 'symbol'
+
+ +

Преобразование типов с символами

+ +

Следующее необходимо помнить при преобразовании типа символов.

+ + + +

Символы и конструкция for...in

+ +

Символы не перечисляются при итерации {{jsxref("Statements/for...in","for...in")}}. В дополнение к этому, {{jsxref("Object.getOwnPropertyNames()")}} не вернет символьные свойства объекта. Тем не менее, их можно получить с помощью {{jsxref("Object.getOwnPropertySymbols()")}}.

+ +
var obj = {};
+
+obj[Symbol("a")] = "a";
+obj[Symbol.for("b")] = "b";
+obj["c"] = "c";
+obj.d = "d";
+
+for (var i in obj) {
+   console.log(i); // выведет "c" и "d"
+}
+ +

Символы и JSON.stringify()

+ +

JSON.stringify() игнорирует свойства с ключами Symbol:

+ +
JSON.stringify({[Symbol("foo")]: "foo"});
+// '{}'
+ +

Подробности см. {{jsxref("JSON.stringify()")}}.

+ +

Объекты-обёртки для Symbol в качестве имен свойств

+ +

Когда объект-обёртка символа используется в качестве имени свойства, этот объект сводится к символу, который он оборачивает:

+ +
var sym = Symbol("foo");
+var obj = {[sym]: 1};
+obj[sym];            // 1
+obj[Object(sym)];    // снова 1
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol-objects', 'Symbol')}}{{Spec2('ES6')}}Изначальное определение
{{SpecName('ESDraft', '#sec-symbol-objects', 'Symbol')}}{{Spec2('ESDraft')}}
+ +

Поддержка браузерами

+ + + + + +

{{Compat("javascript.builtins.Symbol")}}

+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html b/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html new file mode 100644 index 0000000000..68ce170adc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html @@ -0,0 +1,148 @@ +--- +title: Symbol.isConcatSpreadable +slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +tags: + - ECMScript 2015 + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +--- +
{{JSRef}}
+ +

 Symbol.isConcatSpreadable - это известный символ, который используется для  определения, должен ли объект редуцироваться к сумме своих элементов при использовании метода {{jsxref("Array.prototype.concat()")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

@@isConcatSpreadable-символ (Symbol.isConcatSpreadable) можно определить как собственное или унаследованное свойство с булевым значением. Оно контролирует поведение массивов и массивоподобных объектов:

+ + + +

Примеры

+ +

Массивы

+ +

По умолчанию, {{jsxref("Array.prototype.concat()")}}  возвращает массив, объединяющий  элементы исходных массивов:

+ +
var alpha = ['a', 'b', 'c'],
+    numeric = [1, 2, 3];
+
+var alphaNumeric = alpha.concat(numeric);
+
+console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3]
+
+ +

Если значение Symbol.isConcatSpreadable  =  false, то можно отменить поведение по умолчанию:

+ +
var alpha = ['a', 'b', 'c'],
+    numeric = [1, 2, 3];
+
+numeric[Symbol.isConcatSpreadable] = false;
+var alphaNumeric = alpha.concat(numeric);
+
+console.log(alphaNumeric); // Result: ['a', 'b', 'c', [1, 2, 3] ]
+
+ +

Массивоподобные объекты

+ +

Для массивоподобных объектов поведением по умолчанию будет сохранение своей структуры. Чтобы вызвать его разложение до суммы  элементов  в итоговом массиве, нужно задать значение true для Symbol.isConcatSpreadable:

+ +
var x = [1, 2, 3];
+
+var fakeArray = {
+  [Symbol.isConcatSpreadable]: true,
+  length: 2,
+  0: 'hello',
+  1: 'world'
+}
+
+x.concat(fakeArray); // [1, 2, 3, "hello", "world"]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}{{Spec2('ESDraft')}}No change.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome(48)}}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(48) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(48) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html new file mode 100644 index 0000000000..4e7ceb90f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html @@ -0,0 +1,135 @@ +--- +title: Symbol.iterator +slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +--- +
{{JSRef}}
+ +

Symbol.iterator — известный символ, задающий итератор объекта, используемый по умолчанию. Применяется в конструкции for...of.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+ +

Каждый раз, когда объект должен быть проитерирован (как, например, в начале цикла for..of), метод @@iterator вызывается без аргументов, а возвращённый итератор используется непосредственно для получения значений.

+ +

Некоторые встроенные типы имеют стандартное итерационное поведение, в то время как другие типы (как {{jsxref("Object")}}) таким свойством не обладают. Метод @@iterator имеют следующие встроенные типы:

+ + + +

Смотрите также Протоколы перебора для получения дополнительных сведений.

+ +

Примеры

+ +

Пользовательские итерируемые объекты

+ +

Мы можем создавать собственные итерируемые объекты, подобно следующему коду:

+ +
var myIterable = {}
+myIterable[Symbol.iterator] = function* () {
+    yield 1;
+    yield 2;
+    yield 3;
+};
+[...myIterable] // [1, 2, 3]
+
+ +

Плохо оформленные итераторы

+ +

Если метод @@iterator объекта не возвращает итератор, то это плохо оформленный итерируемый объект, его использование, скорее всего, приведёт к возникновению исключений или неправильному поведению:

+ +
var nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () => 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.iterator', 'Symbol.iterator')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome(43)}}{{ CompatGeckoDesktop(36) }}{{CompatNo}}{{CompatOpera(30)}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile(36) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html b/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html new file mode 100644 index 0000000000..3e250ce039 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html @@ -0,0 +1,87 @@ +--- +title: Symbol.keyFor() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor +tags: + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor +--- +
{{JSRef}}
+ +
 Метод Symbol.keyFor(sym) получает ключ для заданного символа из глобального реестра символов.
+ +
 
+ +

{{EmbedInteractiveExample("pages/js/symbol-keyfor.html")}}

+ + + +

Синтакс

+ +
Symbol.keyFor(sym);
+ +

Параметры

+ +
+
sym
+
Символ, обязательный. Символ, ключ которого требуется найти
+
+ +

Возвращаемое значение

+ +

Строка с ключом заданного символа, если он есть в глобальном реестре символов, либо {{jsxref("undefined")}}, если его там нет.

+ +

Примеры

+ +
var globalSym = Symbol.for("foo"); // Создаёт новый глобальный символ
+Symbol.keyFor(globalSym); // "foo"
+
+var localSym = Symbol();
+Symbol.keyFor(localSym); // undefined
+
+// Известные символы не является символами,
+// которые находятся в глобальном реестре символов
+Symbol.keyFor(Symbol.iterator) // undefined
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.keyfor', 'Symbol.keyFor')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.keyfor', 'Symbol.keyFor')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Symbol.keyFor")}}

+ +

 

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/match/index.html b/files/ru/web/javascript/reference/global_objects/symbol/match/index.html new file mode 100644 index 0000000000..135fbcc2ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/match/index.html @@ -0,0 +1,113 @@ +--- +title: Symbol.match +slug: Web/JavaScript/Reference/Global_Objects/Symbol/match +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/match +--- +
{{JSRef}}
+ +

Symbol.match — известный символ, определяющий соответствие строки регулярному выражению. Этот метод вызывается функцией {{jsxref("String.prototype.match()")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Данный метод также используется для того, чтобы определить, обладает ли объект поведением регулярного выражения. Например, методы {{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}} и {{jsxref("String.prototype.includes()")}} проверяют, является ли первый аргумент регулярным выражением, и бросают {{jsxref("TypeError")}}, если это так. Соответственно, если символ match установлен в false (или имеет {{Glossary("Falsy", "ложное")}} значение) — это говорит о том, что объект не предназначен для использования в качестве регулярного выражения.

+ +

Примеры

+ +

Блокировка проверки isRegExp

+ +

Следующий код выбросит {{jsxref("TypeError")}}:

+ +
"/bar/".startsWith(/bar/); // Бросает TypeError, так как /bar/ является
+                           // регулярным выражением и Symbol.match не изменён.
+ +

Несмотря на это, если вы зададите свойству Symbol.match значение false, проверка isRegExp (которая использует свойство match) покажет, что объект не является регулярным выражением — как следствие, методы startsWith и endsWith не станут бросать TypeError.

+ +
var re = /foo/;
+re[Symbol.match] = false;
+"/foo/".startsWith(re); // true
+"/baz/".endsWith(re);   // false
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.match', 'Symbol.match')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{ CompatGeckoDesktop(40) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile(40) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html b/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html new file mode 100644 index 0000000000..9152cc6dd8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html @@ -0,0 +1,106 @@ +--- +title: Symbol.prototype +slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +
{{JSRef}}
+ +

Свойство Symbol.prototype указывает на прототип конструктора {{jsxref("Symbol")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Экземпляры типа {{jsxref("Symbol")}} наследуют {{jsxref("Symbol.prototype")}}. Вы можете использовать прототип конструктора, чтобы добавить свойства и методы ко всем экземплярам типа Symbol.

+ +

Свойства

+ +
+
Symbol.prototype.constructor
+
Указывает на функцию, создавшую прототип экземпляра. По умолчанию это функция {{jsxref("Symbol")}}.
+
+ +

Методы

+ +
+
{{jsxref("Symbol.prototype.toSource()")}} {{Non-standard_inline}}
+
Возвращает строку, содержащую исходный код объекта {{jsxref("Global_Objects/Symbol", "Symbol")}}. Перегружает метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Symbol.prototype.toString()")}}
+
Возвращает строку, содержащую описание символа. Перегружает метод {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Symbol.prototype.valueOf()")}}
+
Возвращает примитивное значение объекта {{jsxref("Symbol")}}. Перегружает метод {{jsxref("Object.prototype.valueOf()")}}.
+
+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.prototype', 'Symbol.prototype')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{ CompatGeckoDesktop("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
diff --git a/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html b/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html new file mode 100644 index 0000000000..abfb4b1f08 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html @@ -0,0 +1,99 @@ +--- +title: Symbol.replace +slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/replace +--- +
{{JSRef}}
+ +

Symbol.replace — известный символ, задающий метод для замены подстрок в строке. Эта функция вызывается методом {{jsxref("String.prototype.replace()")}}.

+ +

Смотрите также {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} и {{jsxref("String.prototype.replace()")}} для получения дополнительных сведений.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-symbol.replace', 'Symbol.replace')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.replace', 'Symbol.replace')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatChrome(50)}}{{CompatVersionUnknown}}{{ CompatGeckoDesktop(49) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{ CompatGeckoMobile(49) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/search/index.html b/files/ru/web/javascript/reference/global_objects/symbol/search/index.html new file mode 100644 index 0000000000..2f484e317f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/search/index.html @@ -0,0 +1,54 @@ +--- +title: Symbol.search +slug: Web/JavaScript/Reference/Global_Objects/Symbol/search +tags: + - ECMASript 2015 + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/search +--- +
{{JSRef}}
+ +

Широко известный символ Symbol.search указывает метод, который вернёт индекс внутри строки, соответствующей регулярному выражению. Эта функция вызывается методом {{jsxref("String.prototype.search()")}}.

+ +

Для получения дополнительной информации см. {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} и {{jsxref("String.prototype.search()")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-symbol.search', 'Symbol.search')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.search', 'Symbol.search')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Symbol.search")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/species/index.html b/files/ru/web/javascript/reference/global_objects/symbol/species/index.html new file mode 100644 index 0000000000..de03682229 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/species/index.html @@ -0,0 +1,116 @@ +--- +title: Symbol.species +slug: Web/JavaScript/Reference/Global_Objects/Symbol/species +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species +--- +
{{JSRef}}
+ +

Symbol.species известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Свойство Symbol.species, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.

+ +

Примеры

+ +

Вам может понадобиться возвращать объекты типа {{jsxref("Array")}} в методах вашего производного класса MyArray. Например, при использовании метода вроде {{jsxref("Array.map", "map()")}}, использующего конструктор по умолчанию, вам может потребоваться возвращать объект родительского типа Array, вместо MyArray. Символ species позволит вам это сделать:

+ +
class MyArray extends Array {
+  // Перегружаем species для использования родительского конструктора Array
+  static get [Symbol.species]() { return Array; }
+}
+var a = new MyArray(1,2,3);
+var mapped = a.map(x => x * x);
+
+console.log(mapped instanceof MyArray); // false
+console.log(mapped instanceof Array);   // true
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.species', 'Symbol.species')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка51{{ CompatGeckoDesktop(41) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}5{{ CompatGeckoMobile(41) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/split/index.html b/files/ru/web/javascript/reference/global_objects/symbol/split/index.html new file mode 100644 index 0000000000..e9c98051b4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/split/index.html @@ -0,0 +1,53 @@ +--- +title: Symbol.split +slug: Web/JavaScript/Reference/Global_Objects/Symbol/split +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/split +--- +
{{JSRef}}
+ +

Symbol.split общеизвестный символ определяет метод, который делит строки в индексах, соответствующих регулярному выражению. Эта функция вызывается методом {{jsxref("String.prototype.split()")}}.

+ +

Для подробной информации, смотрите {{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}} и {{jsxref("String.prototype.split()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-split.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.split', 'Symbol.split')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.split', 'Symbol.split')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Symbol.split")}}

+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html new file mode 100644 index 0000000000..fa512ba32f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html @@ -0,0 +1,92 @@ +--- +title: Symbol.toPrimitive +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +tags: + - '@@toPrimitive' + - JavaScript + - toPrimitive +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +--- +
{{JSRef}}
+ +

Symbol.toPrimitive является символом (symbol), который описывает свойство объекта как функцию, которая вызывается при преобразовании объекта в соответсвующее примитивное значение.

+ +

{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}

+ + + +

 

+ +

Описание

+ +

С помощью свойства Symbol.toPrimitive (которое описывается как функция), объект может быть приведен к примитивному типу. Функция вызывается со строковым аргументом hint, который передает желаемый тип примитива. Значением аргумента hint может быть одно из следующих значений "number", "string", и "default".

+ +

Примеры

+ +

Описанные ниже примеры показывают как с помощью свойства Symbol.toPrimitive можно привести объект к примитивному типу.

+ +
// Объект без свойства Symbol.toPrimitive
+var obj1 = {};
+console.log(+obj1);     // NaN
+console.log(`${obj1}`); // "[object Object]"
+console.log(obj1 + ''); // "[object Object]"
+
+// Объект со свойством Symbol.toPrimitive
+var obj2 = {
+  [Symbol.toPrimitive](hint) {
+    if (hint == 'number') {
+      return 10;
+    }
+    if (hint == 'string') {
+      return 'hello';
+    }
+    return true;
+  }
+};
+console.log(+obj2);     // 10        -- желаемый тип (hint) - "number"
+console.log(`${obj2}`); // "hello"   -- желаемый тип (hint) - "string"
+console.log(obj2 + ''); // "true"    -- желаемый тип (hint) - "default"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}{{Spec2('ESDraft')}} 
+ +

Поддержка браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Symbol.toPrimitive")}}

+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html b/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html new file mode 100644 index 0000000000..89cfa3bda8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html @@ -0,0 +1,89 @@ +--- +title: Symbol.toStringTag +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +--- +
{{JSRef}}
+ +
Известный символ Symbol.toStringTag - это строковое значение свойства, которое используется при создании строки описания объекта по умолчанию. Доступ к нему осуществляется через {{jsxref("Object.prototype.toString()")}} метод.
+ +
+ +
{{EmbedInteractiveExample("pages/js/symbol-tostringtag.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Многие Javascript типы имеют теги по умолчанию: 

+ +
Object.prototype.toString.call('foo');     // "[object String]"
+Object.prototype.toString.call([1, 2]);    // "[object Array]"
+Object.prototype.toString.call(3);         // "[object Number]"
+Object.prototype.toString.call(true);      // "[object Boolean]"
+Object.prototype.toString.call(undefined); // "[object Undefined]"
+Object.prototype.toString.call(null);      // "[object Null]"
+// ... and more
+
+ +

Другие имеют встроенный символ toStringTag:

+ +
Object.prototype.toString.call(new Map());       // "[object Map]"
+Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
+Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
+// ... and more
+
+ +

При создании собственного класса JavaScript по умолчанию использует тег "Object":

+ +
class ValidatorClass {}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
+
+ +

С помощью toStringTag можно установить свой собственный тег:

+ +
class ValidatorClass {
+  get [Symbol.toStringTag]() {
+    return 'Validator';
+  }
+}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}{{Spec2('ESDraft')}}
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Symbol.toStringTag")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html b/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html new file mode 100644 index 0000000000..1cb2a967b3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html @@ -0,0 +1,89 @@ +--- +title: Symbol.unscopables +slug: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +tags: + - ECMAScript6 + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +--- +
{{JSRef}}
+ +

Широко известный символ Symbol.unscopables используется для указания значения объекта, чьи собственные и наследуемые имена свойств исключаются из привязок связанного объекта оператора with.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Символ @@unscopables (Symbol.unscopables)  может быть определён к любому объекту, чтобы исключить имена свойств из-за того, что они отображаются как лексические переменные с привязкой окружения with. Обратите внимание: если использовать "Строгий режим", оператор with будет недоступен и вероятнее всего также не понадобится этот символ.

+ +

Если Вы зададите свойству знаечние true в объекте unscopables  сделает его "unscopable" и, следовательно, оно не будет задействовано в области лексических переменных. Придав свойству значение false, Вы сделаете его scopable и, как следствие, оно будет задействовано в области лексических переменных.

+ +

Примеры

+ +

Приведённый код отлично работает в ES5 и ниже. Однако в ECMAScript 2015 и более поздних версиях был введён метод  {{jsxref("Array.prototype.keys()")}}. Это означает, что внутри окружения with, "ключи" будут методом, а не пременной. Вот где теперь встроенные свойства символа {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} вступают в игру и препятствуют тому, чтобы некоторые из методов Array были включены в оператор with.

+ +
var keys = [];
+
+with (Array.prototype) {
+  keys.push('что-то');
+}
+
+Object.keys(Array.prototype[Symbol.unscopables]);
+// ["copyWithin", "entries", "fill", "find", "findIndex",
+//  "includes", "keys", "values"]
+
+ +

Вы также можете задать unscopables для собственных объектов.

+ +
var obj = {
+  foo: 1,
+  bar: 2
+};
+
+obj[Symbol.unscopables] = {
+  foo: false,
+  bar: true
+};
+
+with (obj) {
+  console.log(foo); // 1
+  console.log(bar); // ReferenceError: bar is not defined
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-symbol.unscopables', 'Symbol.unscopables')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-symbol.unscopables', 'Symbol.unscopables')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ + + +

{{Compat("javascript.builtins.Symbol.unscopables")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html b/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html new file mode 100644 index 0000000000..f5ed1d1060 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html @@ -0,0 +1,94 @@ +--- +title: Symbol.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf +--- +
{{JSRef}}
+ +

Метод valueOf() возвращает примитивное значение символьного объекта.

+ +

Синтаксис

+ +
Symbol().valueOf();
+
+ +

Описание

+ +

Метод valueOf объекта {{jsxref("Symbol")}} возвращает примитивное значение символьного объекта как экземпляр типа Symbol.

+ +

JavaScript вызывает метод valueOf для конвертации объекта в примитивное значение. Вам нечасто потребуется вызывать метод valueOf самостоятельно; JavaScript автоматически вызывает его, когда натыкается на объект там, где ожидался примитив.

+ +

Спецификации

+ + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES6', '#sec-symbol.prototype.valueof', 'Symbol.prototype.valueOf')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Поддержка браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{ CompatGeckoDesktop("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("36.0") }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html b/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html new file mode 100644 index 0000000000..d398a0bc22 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html @@ -0,0 +1,174 @@ +--- +title: SyntaxError +slug: Web/JavaScript/Reference/Global_Objects/SyntaxError +tags: + - Error + - JavaScript + - Object + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+ +

Объект SyntaxError представляет ошибку, возникающую при попытке интерпретировать синтаксически неправильный код.

+ +

Синтаксис

+ +
new SyntaxError([message[, fileName[, lineNumber]]])
+ +

Параметры

+ +
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+ +

Исключение SyntaxError выбрасывается, когда движок JavaScript при разборе кода обнаруживает токены или токен, которые, согласно синтаксису, не должны здесь находиться.

+ +

Свойства

+ +
+
{{jsxref("SyntaxError.prototype")}}
+
Позволяет добавлять свойства в объект SyntaxError.
+
+ +

Методы

+ +

Глобальный объект SyntaxError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта SyntaxError

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: перехват исключения SyntaxError

+ +
try {
+  eval('hoo bar');
+} catch (e) {
+  console.log(e instanceof SyntaxError); // true
+  console.log(e.message);                // "missing ; before statement" - перед инструкцией отсутствует символ ;
+  console.log(e.name);                   // "SyntaxError"
+  console.log(e.fileName);               // "Scratchpad/1"
+  console.log(e.lineNumber);             // 1
+  console.log(e.columnNumber);           // 4
+  console.log(e.stack);                  // "@Scratchpad/1:2:3\n"
+}
+
+ +

Пример: возбуждение исключения SyntaxError

+ +
try {
+  throw new SyntaxError('Привет', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof SyntaxError); // true
+  console.log(e.message);                // "Привет"
+  console.log(e.name);                   // "SyntaxError"
+  console.log(e.fileName);               // "someFile.js"
+  console.log(e.lineNumber);             // 10
+  console.log(e.columnNumber);           // 0
+  console.log(e.stack);                  // "@Scratchpad/2:11:9\n"
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.4', 'SyntaxError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html new file mode 100644 index 0000000000..b558ae482e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: SyntaxError.prototype +slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - SyntaxError +translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство SyntaxError.prototype представляет прототип конструктора объекта {{jsxref("SyntaxError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("SyntaxError")}} наследуются от объекта SyntaxError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
SyntaxError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "SyntaxError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("SyntaxError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "SyntaxError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "SyntaxError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "SyntaxError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "SyntaxError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "SyntaxError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("SyntaxError")}} не содержит собственных методов, экземпляры {{jsxref("SyntaxError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html new file mode 100644 index 0000000000..de71600f4c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html @@ -0,0 +1,130 @@ +--- +title: 'get TypedArray[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species +tags: + - JavaScript + - Property + - TypedArray +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species +--- +
{{JSRef}}
+ +

TypedArray[@@species] - это способ доступа, с помощью которого можно получить конструктор типизированного массива.

+ +

Синтаксис

+ +
TypedArray[Symbol.species]
+
+где TypedArray это один из:
+
+Int8Array
+Uint8Array
+Uint8ClampedArray
+Int16Array
+Uint16Array
+Int32Array
+Uint32Array
+Float32Array
+Float64Array
+
+ +

Описание

+ +

Свойство species возвращает конструктор "по умолчанию" для объектов типизированного массива. Конструкторы подкласса могут его переопределить.

+ +

Примеры

+ +

Свойство species возвращает функцию-конструктор "по умолчанию", которая является одним из конструкторов данного типизированного массива:

+ +
Int8Array[Symbol.species];    // function Int8Array()
+Uint8Array[Symbol.species];   // function Uint8Array()
+Float32Array[Symbol.species]; // function Float32Array()
+
+ +

В производном объекте-массиве (например, вы разработали свой массив MyTypedArray), MyTypedArray определяет свой конструктор. Однако, вы можете захотеть его переопределить, например, возвращать родительский объект из вашего производного класса:

+ +
class MyTypedArray extends Uint8Array {
+  //Переопределение вида MyTypedArray на родительский Uint8Array
+  static get [Symbol.species]() { return Uint8Array; }
+}
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусОписание
{{SpecName('ES6', '#sec-get-%typedarray%-@@species', 'get %TypedArray% [ @@species ]')}}{{Spec2('ES6')}}Изначальное определение
{{SpecName('ESDraft', '#sec-get-%typedarray%-@@species', 'get %TypedArray% [ @@species ]')}}{{Spec2('ESDraft')}} 
+ +

Совместимость браузеров

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatGeckoDesktop("48")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("48")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html new file mode 100644 index 0000000000..e877c6b856 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html @@ -0,0 +1,119 @@ +--- +title: TypedArray.BYTES_PER_ELEMENT +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT +tags: + - JavaScript + - TypedArray +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT +--- +
{{JSRef}}
+ +

Свойство TypedArray.BYTES_PER_ELEMENT содержит размер в байтах каждого элемента типизированного массива.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Синтаксис

+ +
TypedArray.BYTES_PER_ELEMENT;
+ +

Описание

+ +

Объекты TypedArray отличаются друг от друга числом байтов на каждый элемент и способом интерпретации байтов. Константа BYTES_PER_ELEMENT содержит число байтов, который имеет каждый из элементов в данном массиве.

+ +

Примеры

+ +
Int8Array.BYTES_PER_ELEMENT;         // 1
+Uint8Array.BYTES_PER_ELEMENT;        // 1
+Uint8ClampedArray.BYTES_PER_ELEMENT; // 1
+Int16Array.BYTES_PER_ELEMENT;        // 2
+Uint16Array.BYTES_PER_ELEMENT;       // 2
+Int32Array.BYTES_PER_ELEMENT;        // 4
+Uint32Array.BYTES_PER_ELEMENT;       // 4
+Float32Array.BYTES_PER_ELEMENT;      // 4
+Float64Array.BYTES_PER_ELEMENT;      // 8
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусОписание
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Заменено в ECMAScript 6.
{{SpecName('ES6', '#sec-typedarray.bytes_per_element', 'TypedArray.BYTES_PER_ELEMENT')}}{{Spec2('ES6')}}Изначальное определение дано в ECMA-стандарте.
{{SpecName('ESDraft', '#sec-typedarray.bytes_per_element', 'TypedArray.BYTES_PER_ELEMENT')}}{{Spec2('ESDraft')}} 
+ +

Совместимость браузеров

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка7.0{{ CompatGeckoDesktop("2") }}1011.65.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile("2") }}1011.64.2
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/index.html new file mode 100644 index 0000000000..e2a200783a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/index.html @@ -0,0 +1,258 @@ +--- +title: TypedArray +slug: Web/JavaScript/Reference/Global_Objects/TypedArray +tags: + - JavaScript + - TypedArray + - TypedArrays + - Типизированные массивы +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +
{{JSRef}}
+ +

Объект TypedArray (типизированный массив) это массивоподобное представление нижележащего буфера с бинарными данными (ArrayBuffer). Нет ни глобального свойства TypedArray, ни открытого конструктора TypedArray. Но существует ряд глобальных элементов, которые являются конструкторами типизированных массивов для конкретно заданных типов данных. Они приведены ниже. Далее вы найдёте общие свойства и функции, которые можно использовать с любыми типизированными массивами.

+ +

Синтаксис

+ +
new TypedArray(); // новое в ES2017
+new TypedArray(length);
+new TypedArray(typedArray);
+new TypedArray(object);
+new TypedArray(buffer [, byteOffset [, length]]);
+
+где TypedArray() это одно из следующих значений:
+
+Int8Array(), Uint8Array(), Uint8ClampedArray(), Int16Array(), Uint16Array(), Int32Array(), Uint32Array(), Float32Array(), Float64Array()
+
+ +

Параметры

+ +
+
length
+
При вызове в памяти создаётся буфер длины  lengthBYTES_PER_ELEMENT  байт, содержащий нули
+
typedArray
+
Когда вызывается с аргументом typedArray, который может быть объектом любого из типов типизированных массивов (например, Int32Array), тогда переданный массив typedArray копируется в новый массив. Каждое значение из typedArray конвертируется в соответствующий конструктору тип прямо перед копированием. Длина нового объекта typedArray будет такой же как и длина переданного в параметре typedArray
+
object
+
Новый массив создаётся так, как если бы была вызвана функция TypedArray.from()
+
buffer, byteOffset, length
+
Когда происходит вызов с параметрами buffer и опциональными параметрами byteOffset и length, то будет создан новый типизированный массив, который будет отражать buffer типа {{jsxref("ArrayBuffer")}}. Параметры byteOffset и length определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (byteOffset и length) опущены, то будет использован весь буфер buffer; если опущен только length, то будет выведен весь остаток буфера после смещения начала отсчета элементов, заданного параметром byteOffset.
+
+ +

Описание

+ +

ECMAScript 2015 определяет конструктор объекта TypedArray, который является прототипом всех TypedArray-конструкторов. Этот конструктор не открыт явным образом: какое-либо глобальное свойство %TypedArray% или TypedArray отсутствует.  Он доступен только через Object.getPrototypeOf(...) (например, Int8Array.prototype). Все TypedArrays конструкторы наследуют общие свойства от конструктора %TypedArray%. Кроме того, все прототипы типизированных массивов (TypedArray.prototype) имеют своим прототипом %TypedArray%.prototype.

+ +

Сам по себе конструктор %TypedArray% не имеет пользы. Его вызов напрямую или через оператор new  выдаст ошибку TypeError, кроме случая, когда он используется во время создания объектов в JS-движке, поддерживающего подклассы.  В настоящее время такие движки неизвестны, поэтому %TypedArray% используется только для дополнения функциональности (затычка) браузеров в конструкторах TypedArray.

+ +

Когда создаётся экземпляр TypedArray (например, Int8Array), то буферный массив создаётся в памяти, в случае если объект ArrayBuffer передаётся как аргумент конструктора, то вместо создания буфера используется он. Адрес буфера сохраняется во внутреннем свойстве экземпляра, и все методы из %TypedArray%.prototype, например сеттеры и геттеры, оперируют с буфером, по этому адресу.

+ +

Доступ к свойствам

+ +

Получить доступ к элементам массива можно используя стандартный синтаксис по индексу (например, arr[12]). Однако, получение и установка индексируемых свойств по цепи прототипов не будет происходить даже в случае, когда вы пытаетесь использовать индексы извне массива. Индексируемые свойства обращаются к элементам буфера {{jsxref("ArrayBuffer")}} и не имеют отношения к объектным свойствам. Также можно использовать именованные свойства как и в обычных объектах.

+ +
//Установка и получение используя стандартный синтаксис массивов
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+
+//Отсутствует обращение к свойству прототипа (элемент №20 должен бы иметь значение "foo")
+Int8Array.prototype[20] = "foo";
+(new Int8Array(32))[20]; // 0
+//Отсутствует даже в случае обращения к индексу извне текущего массива
+Int8Array.prototype[20] = "foo";
+(new Int8Array(8))[20]; // undefined
+// также в случае отрицательных индексов
+Int8Array.prototype[-1] = "foo";
+(new Int8Array(8))[-1]; // undefined
+
+// Допустимы именованные свойства
+Int8Array.prototype.foo = "bar";
+(new Int8Array(32)).foo; // "bar"
+ +

Объекты TypedArray

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ТипДиапазон значенийРазмер (байты)ОписаниеТип Web IDLЭквивалентный тип языка C
{{jsxref("Int8Array")}}-128 до 12718-битное целое со знаком с дополнением до двухbyteint8_t
{{jsxref("Uint8Array")}}0 до 25518-битное беззнаковое целоеoctetuint8_t
{{jsxref("Uint8ClampedArray")}}0 до 25518-битное беззнаковое целое (фиксированное от 0 до 255)octetuint8_t
{{jsxref("Int16Array")}}-32768 до 32767216-битное целое со знаком с дополнением до двухshortint16_t
{{jsxref("Uint16Array")}}0 до 65535216-битное беззнаковое целоеunsigned shortuint16_t
{{jsxref("Int32Array")}}-2147483648 до 2147483647432-битное целое со знаком с дополнением до двухlongint32_t
{{jsxref("Uint32Array")}}0 до 4294967295432-битное беззнаковое целоеunsigned longuint32_t
{{jsxref("Float32Array")}}1.2x10-38 to 3.4x1038432-битное число с плавающей точкой IEEE-стандарта (7 значащих цифр, нпример 1.123456)unrestricted floatfloat
{{jsxref("Float64Array")}}5.0x10-324 to 1.8x10308864-битное число с плавающей точкой IEEE-стандарта (16 значащих цифр, например, 1.123...15)unrestricted doubledouble
+ +

Свойства

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}
+
Возвращает размер элемента для разных типизированных массивов.
+
TypedArray.length
+
Свойство "Длина", значение которого 0.
+
{{jsxref("TypedArray.name")}}
+
Возвращает строковое имя конструктора. Например, "Int8Array".
+
{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}
+
Конструктор. Используется для создания производных объектов.
+
{{jsxref("TypedArray.prototype")}}
+
Прототип для TypedArray-объектов.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.from()")}}
+
Создаёт типизированный массив из массивоподобного или перечислимого объекта. Смотрите {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of()")}}
+
Создаёт новый типизированный массив с переменным числом аргументов, из которых создастся массив. Смотрите {{jsxref("Array.of()")}}.
+
+ +

Прототип TypedArray

+ +

Все TypedArrays-массивы наследуют от {{jsxref("TypedArray.prototype")}}.

+ +

Свойства

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Properties')}}

+ +

Методы

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Methods')}}

+ +

Полифилы (дополнители) методов

+ +

Многие методы, используемые в TypedArray, могут быть подменены, используя методы, присутствующие среди стандартных в прототипе Arrays. Следующий кусок Javascript-кода демонстрирует, как вы можете дополнить недостающие методы Typed Array.

+ +
var typedArrayTypes = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array,
+          Uint16Array, ​​​Int32Array, Uint32Array, ​​​Float32Array, Float64Array];
+
+for (var k in typedArrayTypes)
+    for (var v in Array.prototype)
+        if (Array.prototype.hasOwnProperty(v) &&
+          !typedArrayTypes[k].prototype.hasOwnProperty(v))
+            typedArrayTypes[k].prototype[v] = Array.prototype[v];
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусПримечание
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Определяет работу TypedArray и ArrayBufferView. Заменен в ECMAScript 6.
{{SpecName('ES6', '#sec-typedarray-objects', 'TypedArray Objects')}}{{Spec2('ES6')}}Первоначальное определение в стандарте ECMA. Определяет поведение индекных и именованных свойств. Указывает, что необходимо использовать оператор new.
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}{{Spec2('ESDraft')}}Спецификация ECMAScript 2017 изменила конструктор TypedArray, так что используется операция ToIndex, и позволены конструкторы без аргументов.
+ +

Совместимость браузеров

+ + + +

{{Compat("javascript.builtins.TypedArray")}}

+ +

Совместимость

+ +

Начиная с ECMAScript 2015, конструкторы TypedArray требуют использования оператора {{jsxref("Operators/new", "new")}}. Вызов конструктора TypedArray как функции без new, отныне выбросит ошибку {{jsxref("TypeError")}}.

+ +
var dv = Int8Array([1, 2, 3]);
+// TypeError: вызов встроенного конструктора Int8Array
+// без new запрещён
+ +
var dv = new Int8Array([1, 2, 3]);
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html new file mode 100644 index 0000000000..ba3118f74d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html @@ -0,0 +1,133 @@ +--- +title: TypedArray.prototype.join() +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/join +tags: + - JavaScript + - Prototype + - TypedArray + - Массив +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/join +--- +
{{JSRef}}
+ +

Метод join() объединяет все элементы массива в строку. Метод работает по тому же алгоритму, что и  {{jsxref("Array.prototype.join()")}}. TypedArray это один из типизированных массивов: типы массивов.

+ +

Синтаксис

+ +
typedarray.join([separator = ',']);
+ +

Параметры

+ +
+
разделитель
+
Необязательный параметр. Определяет строку, разделяющую элементы массива. Разделитель приводится к строке в случае необходимости. Если он опущен, элементы массива разделяются запятой (",").
+
+ +

Возвращаемое значение

+ +

Строка, соединяющая все элементы массива.

+ +

Примеры

+ +
var uint8 = new Uint8Array([1,2,3]);
+uint8.join();      // '1,2,3'
+uint8.join(' / '); // '1 / 2 / 3'
+uint8.join('');    // '123'
+
+ +

{{Glossary('Polifill', 'Полифил')}}

+ +

Поскольку теперь нет глобального объекта с именем TypedArray, то полифиллинг доджен быть выполнен "по требованию".

+ +
// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join
+if (!Uint8Array.prototype.join) {
+  Object.defineProperty(Uint8Array.prototype, 'join', {
+    value: Array.prototype.join
+  });
+}
+
+ +

Если вам нужна поддержка устаревшего JavaScript-дфижка, который не поддерживает свойство Object.defineProperty, то лучше не создавать полифилы новых методов Array.prototype, так как вы не сможете сделать их неперечислимыми.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-%typedarray%.prototype.join', 'TypedArray.prototype.join')}}{{Spec2('ES2015')}}Первоначальное определение.
{{SpecName('ESDraft', '#sec-%typedarray%.prototype.join', 'TypedArray.prototype.join')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("37")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html new file mode 100644 index 0000000000..09ab9b3215 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html @@ -0,0 +1,128 @@ +--- +title: TypedArray.prototype +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +tags: + - TypedArray + - Типизированный массив +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +
{{JSRef}}
+ +

Свойство TypedArray.prototype является прототипом для {{jsxref("TypedArray")}}-конструкторов.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Экземпляры {{jsxref("TypedArray")}} наследуются от {{jsxref("TypedArray.prototype")}}. Вы можете использовать объект прототипа конструктора для добавления в свойств и методов во все экземпляры TypedArray, где TypedArray это один из типизированных массивов.

+ +

Также смотрите описание TypedArray для детальной информации о наследниках.

+ +

Свойства

+ +
+
TypedArray.prototype.constructor
+
Возвращает функцию, которая создала прототип экземпляра. Это единственное, что для объектов типизированных массивов функционирует по умолчанию.
+
{{jsxref("TypedArray.prototype.buffer")}} {{readonlyInline}}
+
Возвращает {{jsxref("ArrayBuffer")}}, на который ссылается типизированный массив. Значение фиксировано с времени создания и доступно только для чтения.
+
{{jsxref("TypedArray.prototype.byteLength")}} {{readonlyInline}}
+
Возвращает длину (в байтах) типизированного массива (с начала {{jsxref("ArrayBuffer")}}). Значение фиксировано с времени создания и доступно только для чтения.
+
{{jsxref("TypedArray.prototype.byteOffset")}} {{readonlyInline}}
+
Возвращает смещение (в байтах) типизированного массива от его {{jsxref("ArrayBuffer")}}. Значение фиксировано с времени создания и доступно только для чтения.
+
{{jsxref("TypedArray.prototype.length")}} {{readonlyInline}}
+
Возвращает число элементов типизированного массива. Значение фиксировано с времени создания и доступно только для чтения.
+
+ +

Методы

+ +
+
{{jsxref("TypedArray.prototype.copyWithin()")}}
+
Копирует последовательность элементов массива внутри него. Подробнее {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.prototype.entries()")}}
+
Возвращает новый объект итератора Array Iterator, содержащий пары ключ / значение для каждого индекса массива. Подробнее {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.prototype.every()")}}
+
Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции. Подробнее {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.prototype.fill()")}}
+
Заполняет все элементы массива от начального индекта до конечного индекса указанным значением. Подробнее {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.prototype.filter()")}}
+
Создаёт новый массив с теми элементами текущего массива, с которыми фильтрующая функция вернёт true. Подробнее {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.prototype.find()")}}
+
Возвращает значение элемента массива, если элемент удовлетворяет условию проверяющей функции, иначе возвращается undefined. Подробнее {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.prototype.findIndex()")}}
+
Возвращает индекс элемента массива, если элемент удовлетворяет условию проверяющей функции, иначе возвращается -1. Подробнее {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.prototype.forEach()")}}
+
Выполняет указанную функцию один раз для каждого элемента в массиве. Подробнее {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.prototype.includes()")}} {{experimental_inline}}
+
Определяет, содержит ли массив определённый элемент, возвращая в зависимости от этого true или false. Подробнее {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.prototype.indexOf()")}}
+
Возвращает первый (меньший) индекс элемента, значение которого равно указанному значению или -1, если такого индекса нет. Подробнее {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.prototype.join()")}}
+
Объединяет все элементы массива в строку . Подробнее {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.prototype.keys()")}}
+
Возвращает новый итератор массива Array Iterator, содержащий ключи каждого индекса в массиве. Подробнее {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.prototype.lastIndexOf()")}}
+
Возвращает последний (больший) индекс элемента, значение которого равно заданному значению или -1, если такого индекса нет. Подробнее {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.prototype.map()")}}
+
Создаёт новый массив с результатом вызова указанной функции для каждого элемента массива. Подробнее {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Ранний нестандартный вариант от {{jsxref("TypedArray.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.prototype.reduce()")}}
+
Применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению. Подробнее {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.prototype.reduceRight()")}}
+
Применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению. Подробнее {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.prototype.reverse()")}}
+
Обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым. Подробнее {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.prototype.set()")}}
+
Сохраняет несколько значений в типизированном массиве, получая входные значения из указанного массива.
+
{{jsxref("TypedArray.prototype.slice()")}}
+
Возвращает часть массива в новый объект массива. Подробнее {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.prototype.some()")}}
+
Возвращает true, если хоть какой-нибудь элемент массива удовлетворяет условию, заданному в передаваемой функции. Подробнее {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.prototype.sort()")}}
+
На месте сортирует элементы массива и возвращает отсортированный массив. Подробнее {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.prototype.subarray()")}}
+
Возвращает новый TypedArray-объект, начиная с указанного стартового и кончая указанным конечным индексом элемента массива.
+
{{jsxref("TypedArray.prototype.values()")}}
+
Возвращает новый объект итератора массива Array Iterator, содержащий значения для каждого индекса в массиве. Подробнее {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.prototype.toLocaleString()")}}
+
Возвращает локализованное строковое представление элементов массива. Подробнее {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.prototype.toString()")}}
+
Возвращает строковое представление указанного массива и его элементов . Подробнее {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}
+
Возвращает новый объект итератора массива Array Iterator, содержащий значения для каждого индекса массива.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусОписание
{{SpecName('ES6', '#sec-properties-of-the-%typedarrayprototype%-object', 'TypedArray prototype')}}{{Spec2('ES6')}}Первоначальное определение
{{SpecName('ESDraft', '#sec-properties-of-the-%typedarrayprototype%-object', 'TypedArray prototype')}}{{Spec2('ESDraft')}} 
+ +

Совместимость браузеров

+ + + +

{{Compat("javascript.builtins.TypedArray.prototype")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html new file mode 100644 index 0000000000..2a26b9b4cb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html @@ -0,0 +1,140 @@ +--- +title: TypedArray.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/set +tags: + - Типизированные массивы + - Типизированный массив + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/set +--- +
{{JSRef}}
+ +

Метод set() сохраняет значения в типизированном массиве, читая значения из предоставленного массива.

+ +

Синтаксис

+ +
typedarr.set(array [,offset])
+typedarr.set(typedarray [,offset])
+
+ +

Параметры

+ +
+
array
+
Массив, из которого необходимо скопировать значения. Все значения из исходного массива копируются в текущий массив, за исключением случая, когда длина исходного массива плюс сдвиг превышают длину текущего массива, в таких ситуациях возникает исключение.
+
typedarray
+
Если исходный массив является типизированным массивом, то оба массива могут ссылаться на один и тот же {{jsxref("ArrayBuffer")}}, т.е. быть разными представлениями (view) одного и того же ArrayBuffer; браузер скопирует исходный диапазон буфера в диапазон назначения даже в случае перекрытия диапазонов.
+
offset {{ optional_inline() }}
+
Сдвиг для текущего массива, с которого будет производиться запись исходного массива. Если значение опущено, то используется 0 (в таких ситуациях, исходный массив перезапишет значения в текущем массиве начиная с индекса 0).
+
+ +

Возвращаемое значение

+ +

{{jsxref("undefined")}}.

+ +

Исключения

+ +
+
{{jsxref("RangeError")}}
+
Возникает, в случае, когда с текущим сдвигом елементы будут сохраняться за пределы типизированного массива.
+
+ +

Примеры

+ +

Использование метода set

+ +
var buffer = new ArrayBuffer(8);
+var uint8 = new Uint8Array(buffer);
+
+uint8.set([1,2,3], 3);
+
+console.log(uint8); // Uint8Array [ 0, 0, 0, 1, 2, 3, 0, 0 ]
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Заменено в ECMAScript 6.
{{SpecName('ES6', '#sec-%typedarray%.prototype.set-array-offset', 'TypedArray.prototype.set')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-%typedarray%.prototype.set-array-offset', 'TypedArray.prototype.set')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка7.0{{CompatGeckoDesktop("2")}}1011.65.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка4.0{{CompatVersionUnknown}}{{CompatGeckoMobile("2")}}1011.64.2
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typeerror/index.html b/files/ru/web/javascript/reference/global_objects/typeerror/index.html new file mode 100644 index 0000000000..3fa1ac526e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typeerror/index.html @@ -0,0 +1,131 @@ +--- +title: TypeError +slug: Web/JavaScript/Reference/Global_Objects/TypeError +tags: + - Error + - JavaScript + - Object + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Global_Objects/TypeError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+ +

Объект TypeError представляет ошибку, возникающую, когда значение имеет не ожидаемый тип.

+ +

Синтаксис

+ +
new TypeError([message[, fileName[, lineNumber]]])
+ +

Параметры

+ +
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+ +

Исключение TypeError выбрасывается, когда операнд или аргумент, переданный в функцию, не совместим с типом, ожидаемым оператором или функцией.

+ +

Свойства

+ +
+
{{jsxref("TypeError.prototype")}}
+
Позволяет добавлять свойства в объект TypeError.
+
+ +

Методы

+ +

Глобальный объект TypeError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта TypeError

+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: перехват исключения TypeError

+ +
try {
+  null.f();
+} catch (e) {
+  console.log(e instanceof TypeError); // true
+  console.log(e.message);              // "null has no properties" - null не имеет свойств
+  console.log(e.name);                 // "TypeError"
+  console.log(e.fileName);             // "Scratchpad/1"
+  console.log(e.lineNumber);           // 2
+  console.log(e.columnNumber);         // 2
+  console.log(e.stack);                // "@Scratchpad/2:2:3\n"
+}
+
+ +

Пример: возбуждение исключения TypeError

+ +
try {
+  throw new TypeError('Привет', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof TypeError); // true
+  console.log(e.message);              // "Привет"
+  console.log(e.name);                 // "TypeError"
+  console.log(e.fileName);             // "someFile.js"
+  console.log(e.lineNumber);           // 10
+  console.log(e.columnNumber);         // 0
+  console.log(e.stack);                // "@Scratchpad/2:2:9\n"
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.5', 'TypeError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}{{Spec2('ESDraft')}}     
+ +

Совместимость с браузерами

+ +
{{Compat("javascript.builtins.TypeError")}}
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html new file mode 100644 index 0000000000..adb4f5f0b6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: TypeError.prototype +slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - TypeError +translation_of: Web/JavaScript/Reference/Global_Objects/TypeError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство TypeError.prototype представляет прототип конструктора объекта {{jsxref("TypeError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("TypeError")}} наследуются от объекта TypeError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
TypeError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "TypeError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("TypeError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "TypeError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "TypeError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "TypeError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "TypeError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "TypeError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("TypeError")}} не содержит собственных методов, экземпляры {{jsxref("TypeError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/uint16array/index.html b/files/ru/web/javascript/reference/global_objects/uint16array/index.html new file mode 100644 index 0000000000..7e140010fc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint16array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint16Array +slug: Web/JavaScript/Reference/Global_Objects/Uint16Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint16Array +--- +
{{JSRef}}
+ +

Объект Uint16Array представляет типизированный массив 16-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Uint16Array , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Syntax

+ +
new Uint16Array(); // new in ES2017
+new Uint16Array(length);
+new Uint16Array(typedArray);
+new Uint16Array(object);
+new Uint16Array(buffer [, byteOffset [, length]]);
+ +

For more information about the constructor syntax and the parameters, see TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint16Array.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size. 2 in the case of an Uint16Array.
+
Uint16Array.length
+
Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint16Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Uint16Array.name")}}
+
Returns the string value of the constructor name. In the case of the Uint16Array type: "Uint16Array".
+
{{jsxref("TypedArray.prototype", "Uint16Array.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Uint16Array.from()")}}
+
Creates a new Uint16Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Uint16Array.of()")}}
+
Creates a new Uint16Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Uint16Array prototype

+ +

All Uint16Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Uint16Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Uint16Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Uint16Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Uint16Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Uint16Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Uint16Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Uint16Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Uint16Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Uint16Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Uint16Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Uint16Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Uint16Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Uint16Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Uint16Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Uint16Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Uint16Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Uint16Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Uint16Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Uint16Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Uint16Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Uint16Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Uint16Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Uint16Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Uint16Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Uint16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint16Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Uint16Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Uint16Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Uint16Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Uint16Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Uint16Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Uint16Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Uint16Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Uint16Array.prototype.subarray()")}}
+
Returns a new Uint16Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Uint16Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Uint16Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Uint16Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Uint16Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create a Uint16Array:

+ +
// From a length
+var uint16 = new Uint16Array(2);
+uint16[0] = 42;
+console.log(uint16[0]); // 42
+console.log(uint16.length); // 2
+console.log(uint16.BYTES_PER_ELEMENT); // 2
+
+// From an array
+var arr = new Uint16Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint16Array([21, 31]);
+var y = new Uint16Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint16Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint16 = new Uint16Array(iterable);
+// Uint16Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Uint16Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Uint16Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Uint16Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Uint16Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Uint16Array([1, 2, 3]);
+// TypeError: calling a builtin Uint16Array constructor
+// without new is forbidden
+ +
var dv = new Uint16Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/uint32array/index.html b/files/ru/web/javascript/reference/global_objects/uint32array/index.html new file mode 100644 index 0000000000..dffb14d480 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint32array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint32Array +slug: Web/JavaScript/Reference/Global_Objects/Uint32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint32Array +--- +
{{JSRef}}
+ +

Объект Uint32Array представляет типизированный массив 32-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Uint32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Syntax

+ +
new Uint32Array(); // new in ES2017
+new Uint32Array(length);
+new Uint32Array(typedArray);
+new Uint32Array(object);
+new Uint32Array(buffer [, byteOffset [, length]]);
+ +

For more information about the constructor syntax and the parameters, see TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint32Array.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size. 4 in the case of an Uint32Array.
+
Uint32Array.length
+
Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint32Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Uint32Array.name")}}
+
Returns the string value of the constructor name. In the case of the Uint32Array type: "Uint32Array".
+
{{jsxref("TypedArray.prototype", "Uint32Array.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Uint32Array.from()")}}
+
Creates a new Uint32Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Uint32Array.of()")}}
+
Creates a new Uint32Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Uint32Array prototype

+ +

All Uint32Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Uint32Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Uint32Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Uint32Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Uint32Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Uint32Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Uint32Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Uint32Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Uint32Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Uint32Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the Uint32Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Uint32Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Uint32Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Uint32Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Uint32Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Uint32Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Uint32Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Uint32Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Uint32Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Uint32Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Uint32Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Uint32Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Uint32Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Uint32Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Uint32Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Uint32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint32Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Uint32Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Uint32Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Uint32Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Uint32Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Uint32Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Uint32Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Uint32Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Uint32Array.prototype.subarray()")}}
+
Returns a new Uint32Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Uint32Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Uint32Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Uint32Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Uint32Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create a Uint32Array:

+ +
// From a length
+var uint32 = new Uint32Array(2);
+uint32[0] = 42;
+console.log(uint32[0]); // 42
+console.log(uint32.length); // 2
+console.log(uint32.BYTES_PER_ELEMENT); // 4
+
+// From an array
+var arr = new Uint32Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint32Array([21, 31]);
+var y = new Uint32Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Uint32Array(buffer, 0, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint32 = new Uint32Array(iterable);
+// Uint32Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Uint32Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Uint32Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Uint32Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Uint32Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Uint32Array([1, 2, 3]);
+// TypeError: calling a builtin Uint32Array constructor
+// without new is forbidden
+ +
var dv = new Uint32Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/uint8array/index.html b/files/ru/web/javascript/reference/global_objects/uint8array/index.html new file mode 100644 index 0000000000..8992a49394 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint8array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint8Array +slug: Web/JavaScript/Reference/Global_Objects/Uint8Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array +--- +
{{JSRef}}
+ +

Объект Uint8Array представляет типизированный массив 8-разрядных целых беззнаковых значений. Содержимое инициализируется значением 0. Создав экземпляр Uint8Array, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).

+ +

Syntax

+ +
new Uint8Array(); // new in ES2017
+new Uint8Array(length);
+new Uint8Array(typedArray);
+new Uint8Array(object);
+new Uint8Array(buffer [, byteOffset [, length]]);
+ +

For more information about the constructor syntax and the parameters, see TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8Array.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size. 1 in the case of an Uint8Array.
+
Uint8Array.length
+
Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Uint8Array.name")}}
+
Returns the string value of the constructor name. In the case of the Uint8Array type: "Uint8Array".
+
{{jsxref("TypedArray.prototype", "Uint8Array.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Uint8Array.from()")}}
+
Creates a new Uint8Array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Uint8Array.of()")}}
+
Creates a new Uint8Array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Uint8Array prototype

+ +

All Uint8Array objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Uint8Array.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Uint8Array constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Uint8Array.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Uint8Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Uint8Array.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Uint8Array. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Uint8Array.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Uint8Array from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements held in the Uint8Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Uint8Array.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Uint8Array.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Uint8Array.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Uint8Array.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Uint8Array.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Uint8Array.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Uint8Array.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Uint8Array.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Uint8Array.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Uint8Array.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Uint8Array.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Uint8Array.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Uint8Array.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Uint8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Uint8Array.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Uint8Array.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Uint8Array.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Uint8Array.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Uint8Array.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Uint8Array.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Uint8Array.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Uint8Array.prototype.subarray()")}}
+
Returns a new Uint8Array from the given start and end element index.
+
{{jsxref("TypedArray.values", "Uint8Array.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Uint8Array.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Uint8Array.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Uint8Array.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +

Different ways to create a Uint8Array:

+ +
// From a length
+var uint8 = new Uint8Array(2);
+uint8[0] = 42;
+console.log(uint8[0]); // 42
+console.log(uint8.length); // 2
+console.log(uint8.BYTES_PER_ELEMENT); // 1
+
+// From an array
+var arr = new Uint8Array([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint8Array([21, 31]);
+var y = new Uint8Array(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint8Array(buffer, 1, 4);
+
+// From an iterable
+var iterable = function*(){ yield* [1,2,3]; }();
+var uint8 = new Uint8Array(iterable);
+// Uint8Array[1, 2, 3]
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 6.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 changed the Uint8Array constructor to use the ToIndex operation and allows constructors with no arguments.
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Uint8Array")}}

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, Uint8Array constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Uint8Array constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Uint8Array([1, 2, 3]);
+// TypeError: calling a builtin Uint8Array constructor
+// without new is forbidden
+ +
var dv = new Uint8Array([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html b/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html new file mode 100644 index 0000000000..e686cc5806 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html @@ -0,0 +1,256 @@ +--- +title: Uint8ClampedArray +slug: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray +translation_of: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray +--- +
{{JSRef}}
+ +

Типизированный массив Uint8ClampedArray —  это массив,  служащий для хранения 8-битных безнаковых чисел, обрезаемых до диапазона от 0 до 255. Если значение меньше 0, то оно будет приведено к 0 , и к 255, если оно больше 255. Числа с плавающей точкой округляются с помощью математического округления. Массив инициализуруется нулями. После того как значение установлено, Вы можете ссылаться на него с помощью методов объекта или через стандартный синтаксис массивов (то есть, брать значения с помощью квадратных скобок). 

+ +

Syntax

+ +
new Uint8ClampedArray(length);
+new Uint8ClampedArray(typedArray);
+new Uint8ClampedArray(object);
+new Uint8ClampedArray(buffer [, byteOffset [, length]]);
+ +

Для более подробной информации, смотрите TypedArray.

+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8ClampedArray.BYTES_PER_ELEMENT")}}
+
Возвращает размер элемента в байтах. Для Uint8ClampedArray оно равно 1.
+
Uint8ClampedArray.length
+
Static length property whose value is 3. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint8ClampedArray.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Uint8ClampedArray.name")}}
+
Returns the string value of the constructor name. In the case of the Uint8ClampedArray type: "Uint8ClampedArray".
+
{{jsxref("TypedArray.prototype", "Uint8ClampedArray.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from", "Uint8ClampedArray.from()")}}
+
Creates a new Uint8ClampedArray from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Uint8ClampedArray.of()")}}
+
Creates a new Uint8ClampedArray with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

Uint8ClampedArray prototype

+ +

All Uint8ClampedArray objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Properties

+ +
+
Uint8ClampedArray.prototype.constructor
+
Returns the function that created an instance's prototype. This is the Uint8ClampedArray constructor by default.
+
{{jsxref("TypedArray.prototype.buffer", "Uint8ClampedArray.prototype.buffer")}} {{readonlyInline}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Uint8ClampedArray Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Uint8ClampedArray.prototype.byteLength")}} {{readonlyInline}}
+
Returns the length (in bytes) of the Uint8ClampedArray from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteOffset", "Uint8ClampedArray.prototype.byteOffset")}} {{readonlyInline}}
+
Returns the offset (in bytes) of the Uint8ClampedArray from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.length", "Uint8ClampedArray.prototype.length")}} {{readonlyInline}}
+
Returns the number of elements hold in the UintClamped8Array. Fixed at construction time and thus read only.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.copyWithin", "Uint8ClampedArray.prototype.copyWithin()")}}
+
Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Uint8ClampedArray.prototype.entries()")}}
+
Returns a new Array Iterator object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Uint8ClampedArray.prototype.every()")}}
+
Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Uint8ClampedArray.prototype.fill()")}}
+
Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Uint8ClampedArray.prototype.filter()")}}
+
Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Uint8ClampedArray.prototype.find()")}}
+
Returns the found value in the array, if an element in the array satisfies the provided testing function or undefined if not found. See also {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Uint8ClampedArray.prototype.findIndex()")}}
+
Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Uint8ClampedArray.prototype.forEach()")}}
+
Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Uint8ClampedArray.prototype.includes()")}} {{experimental_inline}}
+
Determines whether a typed array includes a certain element, returning true or false as appropriate. See also {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Uint8ClampedArray.prototype.indexOf()")}}
+
Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Uint8ClampedArray.prototype.join()")}}
+
Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Uint8ClampedArray.prototype.keys()")}}
+
Returns a new Array Iterator that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Uint8ClampedArray.prototype.lastIndexOf()")}}
+
Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Uint8ClampedArray.prototype.map()")}}
+
Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Uint8ClampedArray.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint8ClampedArray.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Uint8ClampedArray.prototype.reduce()")}}
+
Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Uint8ClampedArray.prototype.reduceRight()")}}
+
Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Uint8ClampedArray.prototype.reverse()")}}
+
Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Uint8ClampedArray.prototype.set()")}}
+
Stores multiple values in the typed array, reading input values from a specified array.
+
{{jsxref("TypedArray.slice", "Uint8ClampedArray.prototype.slice()")}}
+
Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Uint8ClampedArray.prototype.some()")}}
+
Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Uint8ClampedArray.prototype.sort()")}}
+
Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Uint8ClampedArray.prototype.subarray()")}}
+
Returns a new Uint8ClampedArray from the given start and end element index.
+
{{jsxref("TypedArray.values", "Uint8ClampedArray.prototype.values()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Uint8ClampedArray.prototype.toLocaleString()")}}
+
Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Uint8ClampedArray.prototype.toString()")}}
+
Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Uint8ClampedArray.prototype[@@iterator]()")}}
+
Returns a new Array Iterator object that contains the values for each index in the array.
+
+ +

Examples

+ +
// From a length
+var uintc8 = new Uint8ClampedArray(2);
+uintc8[0] = 42;
+uintc8[1] = 1337;
+console.log(uintc8[0]); // 42
+console.log(uintc8[1]); // 255 (clamped)
+console.log(uintc8.length); // 2
+console.log(uintc8.BYTES_PER_ELEMENT); // 1
+
+// From an array
+var arr = new Uint8ClampedArray([21,31]);
+console.log(arr[1]); // 31
+
+// From another TypedArray
+var x = new Uint8ClampedArray([21, 31]);
+var y = new Uint8ClampedArray(x);
+console.log(y[0]); // 21
+
+// From an ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Uint8ClampedArray(buffer, 1, 4);
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Superseded by ECMAScript 6.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support7.0{{ CompatGeckoDesktop(2) }}11 (as of KB2929437)11.65.1
new is required{{CompatUnknown}}{{ CompatGeckoDesktop(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile(2) }}{{CompatVersionUnknown}}11.64.2
new is required{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile(44) }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Compatibility notes

+ +

Starting with ECMAScript 2015 (ES6), Uint8ClampedArray constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a Uint8ClampedArray constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = Uint8ClampedArray([1, 2, 3]);
+// TypeError: calling a builtin Uint8ClampedArray constructor
+// without new is forbidden
+ +
var dv = new Uint8ClampedArray([1, 2, 3]);
+ +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/undefined/index.html b/files/ru/web/javascript/reference/global_objects/undefined/index.html new file mode 100644 index 0000000000..adb250f4f8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/undefined/index.html @@ -0,0 +1,143 @@ +--- +title: undefined +slug: Web/JavaScript/Reference/Global_Objects/undefined +tags: + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +
{{jsSidebar("Objects")}}
+ +

Сводка

+ +

Значение глобального свойства undefined представляет значение {{Glossary("Undefined", "undefined")}}. Это одно из {{Glossary("Primitive", "примитивных значений")}} JavaScript.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +
+ +

{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}

+ + + +

Синтаксис

+ +
undefined
+ +

Описание

+ +

undefined является свойством глобального объекта, то есть, это переменная в глобальной области видимости. Начальным значением undefined является примитивное значение undefined.

+ +

В современных браузерах (JavaScript 1.8.5 / Firefox 4+), undefined является ненастраиваемым и незаписываемым свойством, в соответствии со спецификацией ECMAScript 5. Даже когда это не так, избегайте его переопределения.

+ +

Переменная, не имеющая присвоенного значения, обладает типом undefined. Также undefined возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращает undefined, если она не {{jsxref("Statements/return", "возвращает", "", 1)}} какого-либо значения.

+ +

Поскольку undefined не является {{jsxref("Reserved_Words", "зарезервированным словом", "", 1)}}, он может использоваться в качестве идентификатора (имени переменной) в любой области видимости, за исключением глобальной.

+ +
// печатает 'foo string'
+(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();
+
+// печатает 'foo string'
+(function(undefined){ console.log(undefined, typeof undefined); })('foo');
+
+ +

Примеры

+ +

Пример: строгое сравнение и undefined

+ +

Вы можете использовать undefined и операторы строгого равенства или неравенства для определения того, имеет ли переменная значение. В следующем коде переменная x не определена и инструкция if вычисляется в true.

+ +
var x;
+if (x === undefined) {
+  // эти инструкции будут выполнены
+}
+else {
+  // эти инструкции не будут выполнены
+}
+
+ +
+

Обратите внимание: здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, поскольку x == undefined также проверяет, является ли x равным null, в то время как оператор идентичности этого не делает. {{jsxref("Global_Objects/null", "null")}} не эквивалентен undefined. Для более подробной информации смотрите {{jsxref("Operators/Comparison_Operators", "операторы сравнения", "", 1)}}.

+
+ +

Пример: оператор typeof и undefined

+ +

В качестве альтернативы можно использовать оператор {{jsxref("Operators/typeof", "typeof")}}:

+ +
var x;
+if (typeof x === 'undefined') {
+  // эти инструкции будут выполнены
+}
+
+ +

Одной из причин использования оператора {{jsxref("Operators/typeof", "typeof")}} может быть та, что он не выбрасывает ошибку, если переменная не была определена.

+ +
// переменная x не была определена ранее
+if (typeof x === 'undefined') { // вычислится в true без ошибок
+  // эти инструкции будут выполнены
+}
+
+if (x === undefined) { // выкинет ReferenceError
+
+}
+
+ +

Однако, уловки такого рода должны избегаться. JavaScript является языком со статической областью видимости, так что узнать, была ли переменная определена, можно путём просмотра, была ли она определена в охватывающем контексте. Единственным исключением являет глобальная область видимости, но глобальная область видимости привязана к глобальному объекту, так что проверка существования переменной в глобальном контексте может быть осуществлена путём проверки существования свойства глобального объекта (например, используя оператор {{jsxref("Operators/in", "in")}}).

+ +

Пример: оператор void и undefined

+ +

Третьей альтернативой является оператор {{jsxref("Operators/void", "void")}}.

+ +
var x;
+if (x === void 0) {
+  // эти инструкции будут выполнены
+}
+
+// переменная y не была определена ранее
+if (y === void 0) {
+  // выкинет ReferenceError (в отличие от оператора `typeof`)
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}}
+ +

Совместимость с браузерами

+ +

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

+ +

{{Compat("javascript.builtins.undefined")}}

+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/unescape/index.html b/files/ru/web/javascript/reference/global_objects/unescape/index.html new file mode 100644 index 0000000000..503782b5d0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/unescape/index.html @@ -0,0 +1,126 @@ +--- +title: unescape() +slug: Web/JavaScript/Reference/Global_Objects/unescape +translation_of: Web/JavaScript/Reference/Global_Objects/unescape +--- +
+
+
{{jsSidebar("Objects")}} {{deprecated_header()}}
+
+
+ +

Описание

+ +

Устаревший метод unescape(str) создает новую строку в которой шестнадцатиричная последовательность симоволов вида %xx заменяется эквивалентами из кодировки ASCII. Знаки, закодированные в формате %uxxxx (знаки Юникода), заменяются знаками Юникода в шестнадцатеричной кодировке xxxx.

+ +

Последовательность может быть результатом работы функции вроде {{jsxref("Global_Objects/escape", "escape")}}. Т.к. {{jsxref("Global_Objects/decodeURIComponent", "unescape")}} является устаревшей, используйте {{jsxref("Global_Objects/decodeURI", "decodeURI")}} или {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} вместо неё.

+ +
Обратите внимание: Не рекомендуется использовать unescape чтобы декодировать URI, используйте decodeURI вместо него.
+ +

Синтаксис

+ +
unescape(str)
+ +

Parameters

+ +
+
str
+
Строка которую необходимо преобразовать
+
+ +

Описание

+ +

Функция unescape это свойство глабального объекта.

+ +

Примеры

+ +
unescape("abc123");     // "abc123"
+unescape("%E4%F6%FC");  // "äöü"
+unescape("%u0107");     // "ć"
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition.StandardНачальное определние.
{{SpecName('ES5.1', '#sec-B.2.2', 'unescape')}}{{Spec2('ES5.1')}}Определено в (информативно) Compatibility Annex B
{{SpecName('ES6', '#sec-unescape-string', 'unescape')}}{{Spec2('ES6')}}Определено в (нормативно) Annex B for Additional ECMAScript Features for Web Browsers
+ +

Совместимость браузеров

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Смотрите так же

+ + diff --git a/files/ru/web/javascript/reference/global_objects/uneval/index.html b/files/ru/web/javascript/reference/global_objects/uneval/index.html new file mode 100644 index 0000000000..21cd4e9958 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uneval/index.html @@ -0,0 +1,73 @@ +--- +title: uneval() +slug: Web/JavaScript/Reference/Global_Objects/uneval +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/uneval +--- +

{{jsSidebar("Objects")}}{{Non-standard_header}}

+ +
Сводка
+ +

uneval() метод создает строковое представление исходного кода объекта.

+ +

Синтаксис

+ +
uneval(object)
+ +

Параметры

+ +
+
object
+
JavaScript-выражение или оператор.
+
+ +
Примечание: Вы не получите корректное JSON-представление объекта.
+ +

Описание

+ +

uneval() является функцией высшего порядка и не связана с любым объектом.

+ +

Примеры

+ +
var a = 1;
+uneval(a); // возвращает строку, содержащую 1
+
+var b = "1";
+uneval(b) // возвращает строку, содержащую "1"
+
+uneval(function foo(){}); // возвращает "(function foo(){})"
+
+
+var a = uneval(function foo(){return 'привет'});
+var foo = eval(a);
+foo(); // возвращает "привет"
+
+ +

Технические характеристики

+ +

Не является частью какой-либо спецификации.

+ +

Совместимость браузеров

+ +

 

+ + + +

{{Compat("javascript.builtins.uneval")}}

+ +

 

+ +
 
+ +

См. также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/urierror/index.html b/files/ru/web/javascript/reference/global_objects/urierror/index.html new file mode 100644 index 0000000000..c93ab67453 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/urierror/index.html @@ -0,0 +1,163 @@ +--- +title: URIError +slug: Web/JavaScript/Reference/Global_Objects/URIError +tags: + - Error + - JavaScript + - Object + - Reference + - URIError +translation_of: Web/JavaScript/Reference/Global_Objects/URIError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Объект URIError представляет ошибку, возникающую при неправильном использовании глобальных функций обработки URI.

+ +

Синтаксис

+
new URIError([message[, fileName[, lineNumber]]])
+ +

Параметры

+
+
message
+
Необязательный параметр. Человеко-читаемое описание ошибки.
+
fileName {{non-standard_inline}}
+
Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.
+
lineNumber {{non-standard_inline}}
+
Необязательный параметр. Номер строки кода, вызвавшей исключение.
+
+ +

Описание

+

Исключение URIError выбрасывается при передаче некорректного URI в глобальные функции обработки URI.

+ +

Свойства

+
+
{{jsxref("URIError.prototype")}}
+
Позволяет добавлять свойства в объект URIError.
+
+ +

Методы

+

Глобальный объект URIError не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта URIError

+ +

Свойства

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype', 'Properties')}}
+ +

Методы

+
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: перехват исключения URIError

+
try {
+  decodeURIComponent('%');
+} catch (e) {
+  console.log(e instanceof URIError); // true
+  console.log(e.message);             // "malformed URI sequence" - неверный формат последовательности URI
+  console.log(e.name);                // "URIError"
+  console.log(e.fileName);            // "Scratchpad/1"
+  console.log(e.lineNumber);          // 2
+  console.log(e.columnNumber);        // 2
+  console.log(e.stack);               // "@Scratchpad/2:2:3\n"
+}
+
+ +

Пример: возбуждение исключения URIError

+
try {
+  throw new URIError('Привет', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof URIError); // true
+  console.log(e.message);             // "Привет"
+  console.log(e.name);                // "URIError"
+  console.log(e.fileName);            // "someFile.js"
+  console.log(e.lineNumber);          // 10
+  console.log(e.columnNumber);        // 0
+  console.log(e.stack);               // "@Scratchpad/2:2:9\n"
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.6.6', 'URIError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html new file mode 100644 index 0000000000..5e149071db --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: URIError.prototype +slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - URIError +translation_of: Web/JavaScript/Reference/Global_Objects/URIError +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство URIError.prototype представляет прототип конструктора объекта {{jsxref("URIError")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Описание

+

Все экземпляры {{jsxref("URIError")}} наследуются от объекта URIError.prototype. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.

+ +

Свойства

+
+
URIError.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра.
+
{{jsxref("Error.prototype.message", "URIError.prototype.message")}}
+
Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("URIError")}} должен предоставлять своё собственное свойство message, в SpiderMonkey он наследует свойство {{jsxref("Error.prototype.message")}}.
+
{{jsxref("Error.prototype.name", "URIError.prototype.name")}}
+
Название ошибки. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "URIError.prototype.fileName")}}
+
Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "URIError.prototype.lineNumber")}}
+
Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "URIError.prototype.columnNumber")}}
+
Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "URIError.prototype.stack")}}
+
Стек вызовов. Унаследовано от {{jsxref("Error")}}.
+
+ +

Методы

+

Хотя объект прототипа {{jsxref("URIError")}} не содержит собственных методов, экземпляры {{jsxref("URIError")}} наследуют некоторые методы из цепочки прототипов.

+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}{{Spec2('ES5.1')}}Определено как NativeError.prototype.
{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}{{Spec2('ES6')}}Определено как NativeError.prototype.
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html new file mode 100644 index 0000000000..260264b01d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html @@ -0,0 +1,91 @@ +--- +title: WeakMap.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +--- +
{{JSRef}} {{obsolete_header}}
+ +

Метод clear() удаляет все элементы из объекта WeakMap, но он больше не является частью ECMAScript и его реализаций.

+ +

Синтаксис

+ +
wm.clear();
+ +

Примеры

+ +

Использование метода clear

+ +
var wm = new WeakMap();
+var obj = {};
+
+wm.set(obj, "foo");
+wm.set(window, "bar");
+
+wm.has(obj); // true
+wm.has(window); // true
+
+wm.clear();
+
+wm.has(obj)  // false
+wm.has(window)  // false
+
+ +

Спецификации

+ +

Не входит ни в одну текущую спецификацию или черновик. Этот метод был частью черновика ECMAScript 6, до 28 ревизии (версия от 14 октября, 2014), но был удален в последующих версиях черновика. В финальном стандарте его не будет.

+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support3620-4511237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}20-45{{CompatNo}}{{CompatNo}}8
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html new file mode 100644 index 0000000000..76e4b078dc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -0,0 +1,114 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +
{{JSRef}}
+ +

Метод delete() удаляет элемент из объекта WeakMap.

+ +

Синтаксис

+ +
wm.delete(key);
+ +

Параетры

+ +
+
key
+
Обязателен. Ключ элемента, который будет уделен из объекта WeakMap.
+
+ +

Возвращаемое значение

+ +

Возвращает true если элемент из объекта WeakMap удалён успешно.

+ +

Примеры

+ +

Использование метода delete

+ +
var wm = new WeakMap();
+wm.set(window, "foo");
+
+wm.delete(window); // Возвращает true. Успешно удалён.
+
+wm.has(window);    // Возвращает false. Объекта window больше нет в WeakMap.
+
+ +

Спецификация

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Firefox-specific notes

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html new file mode 100644 index 0000000000..3617aa5f82 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html @@ -0,0 +1,115 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/get +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +
{{JSRef}}
+ +

Метод get() возвращает элемент из объекта WeakMap,

+ +

Синтаксис

+ +
wm.get(key);
+ +

Параметры

+ +
+
key
+
Обязателен. Ключ элемента, который будет возвращён из объекта WeakMap.
+
+ +

Возвращаемое значение

+ +

Возвращает элемент по указанному ключу или undefined, если ключ не может быть найден в объекте WeakMap.

+ +

Примеры

+ +

Использование метода get

+ +
var wm = new WeakMap();
+wm.set(window, "foo");
+
+wm.get(window); // Возвращает "foo".
+wm.get("baz");  // Возвращает undefined.
+
+ +

Спецификация

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Firefox-specific notes

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html new file mode 100644 index 0000000000..18eede2abb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html @@ -0,0 +1,118 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/has +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +
{{JSRef}}
+ +

Метод has() возвращает булевое значение, которое указывает на то существует элемент с таким ключом в объекте WeakMap или нет.

+ +

Синтаксис

+ +
wm.has(key);
+ +

Параметры

+ +
+
key
+
Обязателен. Ключ элемента, существование которого необходимо проверить в объекте WeakMap.
+
+ +

Возвращаемое значение

+ +
+
Boolean
+
Возвращает true если элемент с указанным ключом существует в объекте WeakMap, если нет — false.
+
+ +

Примеры

+ +

Использование метода has

+ +
var wm = new WeakMap();
+wm.set(window, "foo");
+
+wm.has(window); // возвращает true
+wm.has("baz");  // возвращает false
+
+ +

Спецификация

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ES6')}}Изначальное определение.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Firefox-specific notes

+ + + +

See also

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..1bf1b3c017 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,158 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Global_Objects/WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef("Global_Objects", "WeakMap")}}
+ +

Сводка

+ +

Объект WeakMap — коллекция пар ключ-значение. В качестве ключей могут быть использованы только объекты, а значения могут быть произвольных типов.

+ +

Синтаксис

+ +
new WeakMap([iterable])
+
+ +

Параметры

+ +
+
iterable
+
Может быть массивом или любым другим итерируемым объектом, элементы которого являются парами ключ-значение (массивы из двух элементов). Каждая пара ключ-значение будет добавлена во вновь созданный экземпляр WeakMap. Null обрабатывается как undefined.
+
+ +

Описание

+ +

Ключами WeakMap могут быть только объекты. {{Glossary("Primitive", "Примитивы")}} в качестве ключей не допускаются (т.е. {{jsxref("Symbol")}} не может быть ключом WeakMap).

+ +

Почему WeakMap?

+ +

Опытный JavaScript разработчик заметит, что map API можно реализовать на JavaScript c помощью двух массивов (один для ключей, второй для значений) и четырех общих API методов. Установка элементов в этот map должна будет одновременно запушить ключи и значения. В результате индексы ключа и значения будут корректными. Получение значений с map потребует итерирование ключей, чтобы найти совпадение, а затем использование индекса этого соответствия для извлечения соответствующего значения из массива значений.

+ +

У такой реализации было бы два главных неудобства. Первым является O(n) поиск (где n — количество ключей в map), так как обе операции требуют итерирование списка ключей для нахождения совпадения. Вторым – проблема утечки памяти. В словарях, написанных вручную, массив с ключами будет хранить ссылки на объекты-ключи, не давая им быть помеченными сборщиком мусора. В нативных WeakMap, ссылки на объекты-ключи хранятся «слабо», что означает то, что они не предотвратят сборку мусора в том случае, если других ссылок на объект не будет.

+ +

WeakMaps имеют “weak” («слабые») обращения к ключам объекта, а следовательно непрепятствие сборщику мусора, когда мы больше не имеем объекта-ключа. WeakMaps могут быть особенно полезными конструкциями при сопоставлении ключей с информацией о ключе, который ценен, только если ключ не был собран сборщиком мусора (Garbage collector).

+ +

Из-за того, что ссылки являются слабыми, ключи WeakMap не перечисляемы (то есть нет метода, который возвращает список ключей). Иначе список бы зависел от состояния сбора мусора, представляя индетерминизм. Если вы хотите иметь список ключей, вам следует поддерживать его самостоятельно.

+ +

Свойства

+ +
+
WeakMap.length
+
Значение свойства length всегда равно 0.
+
{{jsxref("WeakMap.prototype")}}
+
Представляет прототип конструктора WeakMap. Позволяет добавлять свойства всем объектам типа WeakMap.
+
+ +

Экземпляры WeakMap

+ +

Все экземпляры WeakMap унаследованы от {{jsxref("WeakMap.prototype")}}.

+ +

Свойства

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Properties')}}

+ +

Методы

+ +

{{page('ru/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Methods')}}

+ +

Примеры

+ +

Использование объекта WeakMap

+ +
const wm1 = new WeakMap(),
+    wm2 = new WeakMap(),
+    wm3 = new WeakMap();
+const o1 = {},
+    o2 = function(){},
+    o3 = window,
+    o4 = [1, 2, 3];
+
+wm1.set(o1, 37);
+wm1.set(o2, 'azerty');
+wm2.set(o1, o2);        // значением может быть что угодно, включая объект или функцию
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2);      // ключами и значениями могут быть объекты. Даже WeakMap-ами
+
+wm1.get(o2); // 'azerty'
+wm2.get(o2); // undefined, нет значения для o2 в wm2
+wm2.get(o3); // undefined, это установленное значение
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (даже если значение равно 'undefined')
+
+wm3.set(o1, 37);
+wm3.get(o1);     // 37
+
+wm1.has(o1);     // true
+wm1.delete(o1);
+wm1.has(o1);     // false
+
+ +

Пример: Реализация класса WeakMap-like классов с методом .clear()

+ +
class ClearableWeakMap {
+    constructor(init) {
+        this._wm = new WeakMap(init)
+    }
+    clear() {
+        this._wm = new WeakMap()
+    }
+    delete(k) {
+        return this._wm.delete(k)
+    }
+    get(k) {
+        return this._wm.get(k)
+    }
+    has(k) {
+        return this._wm.has(k)
+    }
+    set(k, v) {
+        this._wm.set(k, v)
+        return this
+    }
+}
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ESDraft')}}
+ +

+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.WeakMap")}}

+ +

Смотрите также

+ +

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html new file mode 100644 index 0000000000..3a955a427f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html @@ -0,0 +1,74 @@ +--- +title: WeakMap.prototype +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef}}
+ +

WeakMap.prototype свойство указыкает на прототип {{jsxref("WeakMap")}} конструктора.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

{{jsxref("WeakMap")}} экзепляры унаследывают {{jsxref("WeakMap.prototype")}}. Вы можите использовать прототип конструктора объекта для добавления нових свойств и/или методов всем экзепляра класса WeakMap.

+ +

WeakMap.prototype является простым объектом:

+ +
Object.prototype.toString.call(WeakMap.prototype); // "[object Object]"
+ +

Свойства

+ +
+
WeakMap.prototype.constructor
+
Возвращает функцию, создавшую экземпляр. {{jsxref("WeakMap")}} function by default.
+
+ +

Методы

+ +
+
{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(key)")}}
+
Удаление значение по ключу. WeakMap.prototype.has(key) вернет false после.
+
{{jsxref("WeakMap.get", "WeakMap.prototype.get(key)")}}
+
Возвращает значение по ключу, or undefined такового нет.
+
{{jsxref("WeakMap.has", "WeakMap.prototype.has(key)")}}
+
Вернет логическое значение, связанное с существованием ключа.
+
{{jsxref("WeakMap.set", "WeakMap.prototype.set(key, value)")}}
+
Устанавливает значение по ключу, после возвращает самого себя.
+
{{jsxref("WeakMap.prototype.clear()")}} {{obsolete_inline}}
+
Удаляет все ключи-значения из WeakMap объекта. Заметьте, что это возможно, только есть WeakMap-like объект имеет.clear() метод путем инкапсулирования WeakMap объекта, раннее неимевшего его (смотри пример на странице {{jsxref("WeakMap")}})
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ESDraft')}} 
+ +

Совместимость

+ + + +

{{Compat("javascript.builtins.WeakMap.prototype")}}

+ +

Рекомендуем

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html new file mode 100644 index 0000000000..f8dad8a44f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html @@ -0,0 +1,120 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/set +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +
{{JSRef}}
+ +

Метод set() добавляет новый элемент с указанными ключом и значением в объект WeakMap.

+ +

Синтаксис

+ +
wm.set(key, value);
+ +

Параметры

+ +
+
key
+
Обязателен. Ключ добавляемого в WeakMap объект элемента.
+
value
+
Обязателен. Значение добавляемого в WeakMap объект элемента.
+
+ +

Возвращаемое значение

+ +

Объект WeakMap.

+ +

Примеры

+ +

Использование метода set

+ +
var wm = new WeakMap();
+var obj = {};
+
+// Добавляет новый элемент в объект WeakMap
+wm.set(obj, "foo").set(window, "bar"); // chainable
+
+// Обновляет элемент в объекте WeakMap
+wm.set(obj, "baz");
+
+ +

Спецификация

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ES6')}}Initial definition.
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop("6.0")}}11237.1
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Firefox-specific notes

+ + + +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakset/add/index.html b/files/ru/web/javascript/reference/global_objects/weakset/add/index.html new file mode 100644 index 0000000000..3534fb4d59 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/add/index.html @@ -0,0 +1,77 @@ +--- +title: WeakSet.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/add +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/add +--- +
{{JSRef("Global_Objects", "WeakSet")}}
+ +

Метод add() добавляет новый объект в конец объекта WeakSet.

+ +

Синтаксис

+ +
ws.add(value);
+
+ +

Параметры

+ +
+
value
+
Обязателен. Объект, добавляемый в WeakSet.
+
+ +

Примеры

+ +

Использование метода add

+ +
var ws = new WeakSet();
+
+ws.add(window); // добавляет объект window в WeakSet
+
+ws.has(window); // true
+
+// Weakset принимает в качестве параметров только объекты
+ws.add(1);
+// результат в Chrome: "TypeError: Invalid value used in weak set"
+// результат в Firefox: "TypeError: 1 is not a non-null object" 
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.WeakSet.add")}}

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html b/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html new file mode 100644 index 0000000000..2ebed17dde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html @@ -0,0 +1,123 @@ +--- +title: WeakSet.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +--- +
{{JSRef("Global_Objects", "WeakSet")}}
+ +

Метод delete() удаляет указанный элемент из объекта WeakSet.

+ +

Синтаксис

+ +
ws.delete(value);
+ +

Параметры

+ +
+
value
+
Обязателен. Объект, удаляемый из  WeakSet.
+
+ +

Возвращаемое значение

+ +

Если объект был успешно удалён, возвращается true, иначе false.

+ +

Примеры

+ +

Использование метода delete 

+ +
var ws = new WeakSet();
+var obj = {};
+
+ws.add(window);
+
+ws.delete(obj);    // Вернёт false. Удаляемый объект не найден в WeakSet.
+ws.delete(window); // Вернёт true.  Объект успешно удалён.
+
+ws.has(window);    // Вернёт false. Объект window был удалён из WeakSet.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop(34)}}{{CompatNo}}23{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakset/has/index.html b/files/ru/web/javascript/reference/global_objects/weakset/has/index.html new file mode 100644 index 0000000000..abd00581e2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/has/index.html @@ -0,0 +1,124 @@ +--- +title: WeakSet.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/has +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/has +--- +
{{JSRef("Global_Objects", "WeakSet")}}
+ +

Метод has() определяет, содержит ли WeakSet определённый элемент, возвращая в зависимости от этого true или false. 

+ +

Синтаксис

+ +
ws.has(value);
+ +

Параметры

+ +
+
value
+
Обязателен. Искомый объект.
+
+ +

Возвращаемое значение

+ +
+
Boolean
+
Если объект был найден в WeakSet вернёт true, иначе false.
+
+ +

Примеры

+ +

Использование метода has 

+ +
var ws = new WeakSet();
+var obj = {};
+ws.add(window);
+
+mySet.has(window);  // вернёт true
+mySet.has(obj);     // вернёт false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{CompatGeckoDesktop(34)}}{{CompatNo}}23{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakset/index.html b/files/ru/web/javascript/reference/global_objects/weakset/index.html new file mode 100644 index 0000000000..b4660283a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/index.html @@ -0,0 +1,109 @@ +--- +title: WeakSet +slug: Web/JavaScript/Reference/Global_Objects/WeakSet +tags: + - ECMAScript6 + - JavaScript + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +
{{JSRef()}}
+ +

Объект WeakSet - коллекция, элементами которой могут быть только объекты. Ссылки на эти объекты в WeakSet являются слабыми. Каждый объект может быть добавлен в WeakSet только один раз.

+ +

Синтаксис

+ +
 new WeakSet([iterable]);
+ +

Параметры

+ +
+
iterable
+
При передаче итерируемого объекта, все его элементы будут добавлены в новый WeakSet. Null обрабатывается как undefined.
+
+ +

Описание

+ +

Объекты WeakSet представляют собой коллекции объектов. Каждый объект в WeakSet встречается только один раз, что обеспечивает его уникальность в рамках коллекции WeakSet.

+ +

Главным отличия от объекта {{jsxref("Set")}}:

+ + + +

Свойства

+ +
+
WeakSet.length
+
Значение свойства length всегда равно 0.
+
{{jsxref("WeakSet.prototype")}}
+
Представляет прототип конструктора WeakSet. Позволяет добавлять свойства  всем объектам типа WeakSet.
+
+ +

Экземпляры WeakSet 

+ +

Все экземпляры класса WeakSet унаследованы от {{jsxref("WeakSet.prototype")}}.

+ +

Свойства

+ +

{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Properties')}}

+ +

Методы

+ +

{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Methods')}}

+ +

Примеры

+ +

Использование объекта WeakSet 

+ +
var ws = new WeakSet();
+var obj = {};
+var foo = {};
+
+ws.add(window);
+ws.add(obj);
+
+ws.has(window); // true
+ws.has(foo);    // false, foo не добавлен в WeakSet
+
+ws.delete(window); // удаляет window из WeakSet
+ws.has(window);    // false, window был удалён
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{Compat("javascript.builtins.WeakSet")}}

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html b/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html new file mode 100644 index 0000000000..d7ae6c0270 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html @@ -0,0 +1,141 @@ +--- +title: WeakSet.prototype +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +tags: + - ECMAScript6 + - JavaScript + - Property + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +
{{JSRef("Global_Objects", "WeakSet")}}
+ +

Свойство WeakSet.prototype представляет прототип для конструктора {{jsxref("WeakSet")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Описание

+ +

Экземпляры {{jsxref("WeakSet")}} наследуются от {{jsxref("WeakSet.prototype")}}. Вы можете изменять прототип конструктора объекта для применения изменений ко всем экземплярам класса WeakSet.

+ +

WeakSet.prototype сам по себе является обычным объектом:

+ +
Object.prototype.toString.call(WeakSet.prototype); // "[object Object]"
+ +

Свойства

+ +
+
WeakSet.prototype.constructor
+
Возвращает функцию, создающую экземпляр прототипа. По умолчанию, это функция {{jsxref("WeakSet")}}.
+
+ +

Методы

+ +
+
{{jsxref("WeakSet.add", "WeakSet.prototype.add(value)")}}
+
Добавляет объект value в WeakSet. 
+
{{jsxref("WeakSet.delete", "WeakSet.prototype.delete(value)")}}
+
Удаляет из WeakSet элемент value. После удаления вызов WeakSet.prototype.has(value) возвращает false. 
+
{{jsxref("WeakSet.has", "WeakSet.prototype.has(value)")}}
+
Определяет, содержит WeakSet объект value или нет, возвращая, соответственно, true или false. 
+
{{jsxref("WeakSet.prototype.clear()")}} {{obsolete_inline}}
+
Удаляет все элементы из объекта WeakSet.
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-weakset.prototype', 'WeakSet.prototype')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-weakset.prototype', 'WeakSet.prototype')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support36{{ CompatGeckoDesktop(34) }}{{CompatNo}}23{{CompatNo}}
Ordinary object{{CompatUnknown}}{{CompatGeckoDesktop("40")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChrome for AndroidAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}{{CompatNo}}
Ordinary object{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("40")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html new file mode 100644 index 0000000000..ba600573a9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html @@ -0,0 +1,83 @@ +--- +title: WebAssembly.compile() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile +--- +
{{JSRef}}
+ +

Функция WebAssembly.compile() компилирует {{jsxref("WebAssembly.Module")}} из двоичного кода WebAssembly. Эта функция полезна, если необходимо компилировать модуль до того, как его можно создать (в противном случае следует использовать функцию {{jsxref("WebAssembly.instantiate()")}}.

+ +

Синтаксис

+ +
Promise<WebAssembly.Module> WebAssembly.compile(bufferSource);
+ +

Параметры

+ +
+
bufferSource
+
Типированный массив typed array или ArrayBuffer, содержащий двоичный код модуля .wasm, который вы хотите скомпилировать.
+
+ +

Возвращаемое значение

+ +

Обещание, (Promise), которое разрешает объект {{jsxref("WebAssembly.Module")}}, представляющий скомпилированный модуль.

+ +

Исключения

+ + + +

Примеры

+ +

В следующем примере выполняется компиляция загруженного simple.wasm байт-кода с использованием функции compile(), а затем отправляется его worker-работнику, использующему postMessage().

+ +
var worker = new Worker("wasm_worker.js");
+
+fetch('simple.wasm').then(response =>
+  response.arrayBuffer()
+).then(bytes =>
+  WebAssembly.compile(bytes)
+).then(mod =>
+  worker.postMessage(mod)
+);
+ +
+

Заметка: Вероятно, вы захотите использовать {{jsxref("WebAssembly.compileStreaming()")}} в большинстве случаев, поскольку он более эффективен, чем compile().

+
+ +

Характеристики

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКоммент
{{SpecName('WebAssembly JS', '#webassemblycompile', 'compile()')}}{{Spec2('WebAssembly JS')}}Первоначальное определение проекта.
+ +

Совместимость с браузером

+ +
+ + +

{{Compat("javascript.builtins.WebAssembly.compile")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html new file mode 100644 index 0000000000..106519cdf2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html @@ -0,0 +1,79 @@ +--- +title: WebAssembly.compileStreaming() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming +--- +
{{JSRef}}
+ +

Функция WebAssembly.compileStreaming() компилирует {{jsxref("WebAssembly.Module")}} непосредственно из потокового исходника. Эта функция полезна, если необходимо скомпилировать модуль до того, как его можно создать (в противном случае следует использовать функцию {{jsxref("WebAssembly.instantiateStreaming()")}}.

+ +

Синтаксис

+ +
Promise<WebAssembly.Module> WebAssembly.compileStreaming(source);
+ +

Parameters

+ +
+
source
+
Обещание, или {{domxref("Response")}},  которое будет выполнено с одним, представляющим основной источник модулем .wasm, который вы хотите передать и скомпилировать.
+
+ +

Возвращаемое значение

+ +

Обещание, ( Promise), которое разрешает объект {{jsxref("WebAssembly.Module")}}, представляющий скомпилированный модуль.

+ +

Исключения

+ + + +

Примеры

+ +

Следующий пример (см. Нашу демонстрацию compile-streaming.html на GitHub и view it live) напрямую передает модуль .wasm из исходника, затем компилирует его в объект {{jsxref("WebAssembly.Module")}}.
+ Поскольку функция compileStreaming() принимает обещание для объекта {{domxref("Response")}}, вы можете напрямую передать ему вызов {{domxref("WindowOrWorkerGlobalScope.fetch()")}}, и он передаст ответ в выполняемую функцию.

+ +
var importObject = { imports: { imported_func: arg => console.log(arg) } };
+
+WebAssembly.compileStreaming(fetch('simple.wasm'))
+.then(module => WebAssembly.instantiate(module, importObject))
+.then(instance => instance.exports.exported_func());
+ +

Затем создается полученный экземпляр модуля с помощью {{jsxref("WebAssembly.instantiate()")}} и вызывается экспортированная функция.

+ +

Характеристики

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКоммент
{{SpecName('WebAssembly Embedding', '#webassemblycompilestreaming', 'compileStreaming()')}}{{Spec2('WebAssembly Embedding')}}Первоначальное определение 
+ проекта.
+ +

Совместимость с браузером

+ +
+ + +

{{Compat("javascript.builtins.WebAssembly.compileStreaming")}}

+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/index.html new file mode 100644 index 0000000000..daff5d4ee7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/index.html @@ -0,0 +1,161 @@ +--- +title: WebAssembly +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly +--- +
{{JSRef}}{{SeeCompatTable}}
+ +

Объект JavaScript WebAssembly действует как пространство имен для всего WebAssembly-связанного функционала.

+ +

В отличие от большинства других глобальных объектов, WebAssembly не является конструктором (это не объект функции). Можно сравнить его с {{jsxref("Math")}}, который так же является пространством имен констант и функций, или  {{jsxref("Intl")}}, который является пространством имен для конструкторов интернационализации и других языково-чувствительных функций.

+ +

Описание

+ +

Основное использование WebAssembly следующее:

+ + + +

Методы

+ +
+
{{jsxref("WebAssembly.instantiate()")}}
+
Основное API для компиляции и создания экземпляра кода WebAssembly, возвращающее Module и его первый Instance.
+
{{jsxref("WebAssembly.compile()")}}
+
Компилирует {{jsxref("WebAssembly.Module")}} из бинарного кода WebAssembly, оставляя создание экземпляра отдельным шагом.
+
{{jsxref("WebAssembly.validate()")}}
+
Проверяет представленный типизированный массив бинарного кода WebAssembly, возвращая в зависимости от того были ли байты кода WebAssembly валидны (true) или (false).
+
+ +

Конструкторы

+ +
+
{{jsxref("WebAssembly.Module()")}}
+
Создает новый объект WebAssembly Module.
+
{{jsxref("WebAssembly.Instance()")}}
+
Создает новый объект WebAssembly Instance.
+
{{jsxref("WebAssembly.Memory()")}}
+
Создает новый объект WebAssembly Memory.
+
{{jsxref("WebAssembly.Table()")}}
+
Создает новый объект WebAssembly Table.
+
{{jsxref("WebAssembly.CompileError()")}}
+
Создает новый объект WebAssembly CompileError.
+
{{jsxref("WebAssembly.LinkError()")}}
+
Создает новый объект WebAssembly LinkError.
+
{{jsxref("WebAssembly.RuntimeError()")}}
+
Создает новый объект WebAssembly RuntimeError.
+
+ +

Примеры

+ +

После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаем экземпляр модуля с помощью функции {{jsxref("WebAssembly.instantiate()")}}, импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (result), содержащий скомпилированные Module и объекты Instance. Мы можем вызвать Exported WebAssembly function, которая была экспортирована через Instance.

+ +
var importObject = {
+  imports: {
+    imported_func: function(arg) {
+      console.log(arg);
+    }
+  }
+};
+
+fetch('simple.wasm').then(response =>
+  response.arrayBuffer()
+).then(bytes =>
+  WebAssembly.instantiate(bytes, importObject)
+).then(result =>
+  result.instance.exports.exported_func()
+);
+ +
+

Note: Смотрите пример index.html на GitHub (view it live also), который использует наши fetchAndInstantiate() библиотечные функции.

+
+ +

Спецификации

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКоммент
{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}}{{Spec2('WebAssembly JS')}}Первоначальное определение проекта.
+ +

Поддержка браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support5715[2]{{CompatGeckoDesktop(52)}}[1]{{CompatNo}}4411
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureChrome for AndroidAndroid WebviewEdge MobileFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support5757{{CompatNo}}{{CompatGeckoMobile(52)}}[1]{{CompatNo}}{{CompatNo}}11
+
+ +

[1] WebAssembly включен в Firefox 52+, хотя не валиден в Firefox 52 Extended Support Release (ESR.)

+ +

[2] В настоящее время поддерживается флаг «Экспериментальные функции JavaScript».  Для более подробной информации смотрите этот blog post.

+ +

Смотри также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html new file mode 100644 index 0000000000..c453aeaf46 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html @@ -0,0 +1,104 @@ +--- +title: WebAssembly.Table +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +--- +
{{JSRef}}
+ +

Объект WebAssembly.Table() - это JavaScript обертка — структура похожая на массив, представляюшая таблицу функций WebAssembly. Таблица, созданная через JavaScript или в коде WebAssembly, будет доступна и может быть изменена как из JavaScript, так и из WebAssembly.

+ +
+

Обратите внимание: Таблицы сейчас хранят только ссылки на функции, но это может быть расширено в будущем.

+
+ +

Конструктор

+ +
+
WebAssembly.Table()
+
Создает новый объект Table.
+
+ +

Экземпляры Table

+ +

Все экземпляры Table наследуются от прототипа конструктора Table(), следовательно изменения прототипа затронут все экземпляры Table.

+ +

Свойства экземпляра

+ +
+
Table.prototype.constructor
+
Возвращает функцию которая создала этот объект. По умолчанию это конструктор {{jsxref("WebAssembly.Table()")}}.
+
{{jsxref("WebAssembly/Table/length","Table.prototype.length")}}
+
Возвращает длину таблицы (количество елементов в таблице).
+
+ +

Instance methods

+ +
+
{{jsxref("WebAssembly/Table/get","Table.prototype.get(index)")}}
+
Возвращает указанное значение из таблицы.
+
{{jsxref("WebAssembly/Table/grow","Table.prototype.grow(count)")}}
+
Увеличивает размер таблицы на указанное количество элементов.
+
{{jsxref("WebAssembly/Table/set","Table.prototype.set(index, value)")}}
+
Сохраняет указанное значение в таблицу под указанным индексом.
+
+ +

Примеры

+ +

Следующий пример (смотри исходный код и живую версию table2.html) создает новый экземпляр WebAssembly Table с 2 элементами. После этого выводит длину таблицы и содержимое первых двух елементов (полученных через {{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} чтобы показать что длина равняется 2 и елементы равны {{jsxref("null")}}.

+ +
var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"});
+console.log(tbl.length);  // "2"
+console.log(tbl.get(0));  // "null"
+console.log(tbl.get(1));  // "null"
+ +

После этого мы создаем обьект импорта содержащий таблицу:

+ +
var importObj = {
+  js: {
+    tbl: tbl
+  }
+};
+ +

После этого, мы создаем экземпляр модуля wasm (table2.wasm) используя метод {{jsxref("WebAssembly.instantiateStreaming()")}}.  Модуль table2.wasm содержит две функции, одна возвращает 42, а вторая - 83) и сохраняет эти функции под индексами 0 и 1 в импортированную таблицу (смотри текстовую версию).  Таким образом, после создания wasm-модуля, таблица имеет туже длину, но елементы таблицы стали функциями экспортированными из WebAssembly которые можно вызывать из JS.

+ +
WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject)
+.then(function(obj) {
+  console.log(tbl.length);
+  console.log(tbl.get(0)());
+  console.log(tbl.get(1)());
+});
+ +

Заметьте что понадобилось добавить второй оператор вызова функции чтобы вызвать функцию возвращенную из талицы (т.е. get(0)() вместо get(0)) .

+ +

Этот пример показывает что мы создаем и работаем с таблицей из JavaScript, но экземпляр таблицы также виден и доступен внутри модуля wasm.

+ +

Спецификации

+ + + + + + + + + + + + +
Specification
{{SpecName('WebAssembly JS', '#tables', 'Table')}}
+ +

Совместимость с браузерами

+ +
+ + +

{{Compat("javascript.builtins.WebAssembly.Table")}}

+
+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf