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 | 122 ++++ .../global_objects/array/@@unscopables/index.html | 75 +++ .../global_objects/array/concat/index.html | 159 ++++++ .../global_objects/array/contains/index.html | 106 ++++ .../global_objects/array/copywithin/index.html | 203 +++++++ .../global_objects/array/entries/index.html | 117 ++++ .../global_objects/array/every/index.html | 176 ++++++ .../reference/global_objects/array/fill/index.html | 125 ++++ .../global_objects/array/filtro/index.html | 227 ++++++++ .../reference/global_objects/array/find/index.html | 157 +++++ .../global_objects/array/findindex/index.html | 127 ++++ .../reference/global_objects/array/flat/index.html | 121 ++++ .../global_objects/array/flatmap/index.html | 126 ++++ .../global_objects/array/foreach/index.html | 212 +++++++ .../reference/global_objects/array/from/index.html | 205 +++++++ .../reference/global_objects/array/index.html | 511 +++++++++++++++++ .../global_objects/array/indexof/index.html | 186 ++++++ .../global_objects/array/isarray/index.html | 141 +++++ .../reference/global_objects/array/join/index.html | 108 ++++ .../reference/global_objects/array/keys/index.html | 115 ++++ .../global_objects/array/lastindexof/index.html | 184 ++++++ .../global_objects/array/length/index.html | 128 +++++ .../reference/global_objects/array/map/index.html | 255 +++++++++ .../global_objects/array/observe/index.html | 128 +++++ .../reference/global_objects/array/of/index.html | 108 ++++ .../reference/global_objects/array/pop/index.html | 81 +++ .../global_objects/array/prototype/index.html | 206 +++++++ .../reference/global_objects/array/push/index.html | 184 ++++++ .../global_objects/array/reduce/index.html | 513 +++++++++++++++++ .../global_objects/array/reduceright/index.html | 258 +++++++++ .../global_objects/array/reverse/index.html | 121 ++++ .../global_objects/array/shift/index.html | 104 ++++ .../global_objects/array/slice/index.html | 224 ++++++++ .../reference/global_objects/array/some/index.html | 134 +++++ .../reference/global_objects/array/sort/index.html | 232 ++++++++ .../global_objects/array/splice/index.html | 173 ++++++ .../global_objects/array/tolocalestring/index.html | 140 +++++ .../global_objects/array/tosource/index.html | 113 ++++ .../global_objects/array/tostring/index.html | 115 ++++ .../global_objects/array/unobserve/index.html | 129 +++++ .../global_objects/array/unshift/index.html | 90 +++ .../global_objects/array/values/index.html | 121 ++++ .../global_objects/arraybuffer/index.html | 148 +++++ .../global_objects/asyncfunction/index.html | 173 ++++++ .../global_objects/atomics/add/index.html | 132 +++++ .../reference/global_objects/atomics/index.html | 155 +++++ .../reference/global_objects/bigint/index.html | 240 ++++++++ .../global_objects/bigint/prototype/index.html | 61 ++ .../reference/global_objects/boolean/index.html | 194 +++++++ .../global_objects/boolean/prototype/index.html | 111 ++++ .../global_objects/boolean/tosource/index.html | 96 ++++ .../global_objects/boolean/tostring/index.html | 128 +++++ .../global_objects/boolean/valueof/index.html | 115 ++++ .../reference/global_objects/dataview/index.html | 168 ++++++ .../global_objects/date/@@toprimitive/index.html | 77 +++ .../global_objects/date/getdate/index.html | 127 ++++ .../global_objects/date/getday/index.html | 127 ++++ .../global_objects/date/getfullyear/index.html | 127 ++++ .../global_objects/date/gethours/index.html | 126 ++++ .../global_objects/date/getmilliseconds/index.html | 117 ++++ .../global_objects/date/getminutes/index.html | 121 ++++ .../global_objects/date/getmonth/index.html | 121 ++++ .../global_objects/date/getseconds/index.html | 121 ++++ .../global_objects/date/gettime/index.html | 137 +++++ .../date/gettimezoneoffset/index.html | 107 ++++ .../global_objects/date/getutcdate/index.html | 118 ++++ .../global_objects/date/getutcday/index.html | 117 ++++ .../global_objects/date/getutcfullyear/index.html | 81 +++ .../global_objects/date/getutchours/index.html | 63 ++ .../date/getutcmilliseconds/index.html | 77 +++ .../global_objects/date/getutcminutes/index.html | 62 ++ .../global_objects/date/getutcmonth/index.html | 77 +++ .../global_objects/date/getutcseconds/index.html | 75 +++ .../global_objects/date/getyear/index.html | 169 ++++++ .../reference/global_objects/date/index.html | 271 +++++++++ .../reference/global_objects/date/now/index.html | 126 ++++ .../reference/global_objects/date/parse/index.html | 214 +++++++ .../global_objects/date/setdate/index.html | 80 +++ .../global_objects/date/setfullyear/index.html | 80 +++ .../global_objects/date/sethours/index.html | 85 +++ .../global_objects/date/setmilliseconds/index.html | 74 +++ .../global_objects/date/setminutes/index.html | 84 +++ .../global_objects/date/setmonth/index.html | 87 +++ .../global_objects/date/setseconds/index.html | 82 +++ .../global_objects/date/settime/index.html | 95 +++ .../global_objects/date/setutcdate/index.html | 74 +++ .../global_objects/date/setutcfullyear/index.html | 80 +++ .../global_objects/date/setutchours/index.html | 82 +++ .../date/setutcmilliseconds/index.html | 74 +++ .../global_objects/date/setutcminutes/index.html | 80 +++ .../global_objects/date/setutcmonth/index.html | 78 +++ .../global_objects/date/setutcseconds/index.html | 78 +++ .../global_objects/date/setyear/index.html | 79 +++ .../global_objects/date/todatestring/index.html | 127 ++++ .../global_objects/date/togmtstring/index.html | 70 +++ .../global_objects/date/toisostring/index.html | 97 ++++ .../global_objects/date/tojson/index.html | 75 +++ .../date/tolocaledatestring/index.html | 239 ++++++++ .../global_objects/date/tolocalestring/index.html | 202 +++++++ .../date/tolocaletimestring/index.html | 180 ++++++ .../global_objects/date/tosource/index.html | 53 ++ .../global_objects/date/tostring/index.html | 114 ++++ .../global_objects/date/totimestring/index.html | 72 +++ .../global_objects/date/toutcstring/index.html | 113 ++++ .../reference/global_objects/date/utc/index.html | 145 +++++ .../global_objects/date/valueof/index.html | 69 +++ .../reference/global_objects/decodeuri/index.html | 99 ++++ .../global_objects/decodeuricomponent/index.html | 118 ++++ .../reference/global_objects/encodeuri/index.html | 122 ++++ .../global_objects/encodeuricomponent/index.html | 159 ++++++ .../reference/global_objects/error/index.html | 229 ++++++++ .../global_objects/error/tosource/index.html | 58 ++ .../global_objects/error/tostring/index.html | 100 ++++ .../reference/global_objects/escape/index.html | 127 ++++ .../reference/global_objects/eval/index.html | 255 +++++++++ .../reference/global_objects/evalerror/index.html | 163 ++++++ .../global_objects/float32array/index.html | 200 +++++++ .../global_objects/float64array/index.html | 160 ++++++ .../global_objects/function/apply/index.html | 249 ++++++++ .../global_objects/function/arguments/index.html | 130 +++++ .../global_objects/function/arity/index.html | 78 +++ .../global_objects/function/bind/index.html | 309 ++++++++++ .../global_objects/function/call/index.html | 194 +++++++ .../global_objects/function/caller/index.html | 129 +++++ .../global_objects/function/displayname/index.html | 80 +++ .../reference/global_objects/function/index.html | 234 ++++++++ .../global_objects/function/isgenerator/index.html | 55 ++ .../global_objects/function/length/index.html | 134 +++++ .../global_objects/function/name/index.html | 222 +++++++ .../global_objects/function/prototype/index.html | 94 +++ .../global_objects/function/tosource/index.html | 57 ++ .../global_objects/function/tostring/index.html | 239 ++++++++ .../reference/global_objects/generator/index.html | 178 ++++++ .../reference/global_objects/globalthis/index.html | 80 +++ .../javascript/reference/global_objects/index.html | 174 ++++++ .../reference/global_objects/infinity/index.html | 114 ++++ .../reference/global_objects/int16array/index.html | 208 +++++++ .../global_objects/internalerror/index.html | 92 +++ .../global_objects/intl/datetimeformat/index.html | 188 ++++++ .../reference/global_objects/intl/index.html | 168 ++++++ .../global_objects/intl/numberformat/index.html | 242 ++++++++ .../intl/numberformat/prototype/index.html | 125 ++++ .../intl/relativetimeformat/index.html | 171 ++++++ .../reference/global_objects/isfinite/index.html | 128 +++++ .../reference/global_objects/isnan/index.html | 109 ++++ .../reference/global_objects/iterador/index.html | 184 ++++++ .../reference/global_objects/json/index.html | 241 ++++++++ .../reference/global_objects/json/parse/index.html | 123 ++++ .../global_objects/json/stringify/index.html | 253 ++++++++ .../reference/global_objects/map/clear/index.html | 119 ++++ .../reference/global_objects/map/delete/index.html | 120 ++++ .../global_objects/map/entries/index.html | 120 ++++ .../global_objects/map/foreach/index.html | 146 +++++ .../reference/global_objects/map/get/index.html | 76 +++ .../reference/global_objects/map/has/index.html | 78 +++ .../reference/global_objects/map/index.html | 225 ++++++++ .../reference/global_objects/map/keys/index.html | 115 ++++ .../global_objects/map/prototype/index.html | 135 +++++ .../reference/global_objects/map/set/index.html | 137 +++++ .../reference/global_objects/map/size/index.html | 110 ++++ .../reference/global_objects/map/values/index.html | 74 +++ .../reference/global_objects/math/abs/index.html | 142 +++++ .../reference/global_objects/math/acos/index.html | 139 +++++ .../reference/global_objects/math/acosh/index.html | 100 ++++ .../reference/global_objects/math/asin/index.html | 103 ++++ .../reference/global_objects/math/asinh/index.html | 97 ++++ .../reference/global_objects/math/atan/index.html | 104 ++++ .../reference/global_objects/math/atan2/index.html | 150 +++++ .../reference/global_objects/math/atanh/index.html | 99 ++++ .../reference/global_objects/math/cbrt/index.html | 97 ++++ .../reference/global_objects/math/ceil/index.html | 210 +++++++ .../reference/global_objects/math/clz32/index.html | 179 ++++++ .../reference/global_objects/math/cos/index.html | 102 ++++ .../reference/global_objects/math/cosh/index.html | 88 +++ .../reference/global_objects/math/e/index.html | 86 +++ .../reference/global_objects/math/exp/index.html | 109 ++++ .../reference/global_objects/math/expm1/index.html | 80 +++ .../reference/global_objects/math/floor/index.html | 199 +++++++ .../reference/global_objects/math/hypot/index.html | 115 ++++ .../reference/global_objects/math/index.html | 208 +++++++ .../reference/global_objects/math/ln10/index.html | 121 ++++ .../reference/global_objects/math/ln2/index.html | 80 +++ .../reference/global_objects/math/log/index.html | 148 +++++ .../reference/global_objects/math/log10/index.html | 137 +++++ .../global_objects/math/log10e/index.html | 82 +++ .../reference/global_objects/math/log1p/index.html | 105 ++++ .../reference/global_objects/math/log2/index.html | 91 +++ .../reference/global_objects/math/log2e/index.html | 82 +++ .../reference/global_objects/math/max/index.html | 155 +++++ .../reference/global_objects/math/min/index.html | 147 +++++ .../reference/global_objects/math/pi/index.html | 82 +++ .../reference/global_objects/math/pow/index.html | 147 +++++ .../global_objects/math/random/index.html | 102 ++++ .../reference/global_objects/math/round/index.html | 234 ++++++++ .../reference/global_objects/math/sign/index.html | 117 ++++ .../reference/global_objects/math/sin/index.html | 92 +++ .../reference/global_objects/math/sinh/index.html | 96 ++++ .../reference/global_objects/math/sqrt/index.html | 87 +++ .../global_objects/math/sqrt1_2/index.html | 81 +++ .../reference/global_objects/math/sqrt2/index.html | 81 +++ .../reference/global_objects/math/tan/index.html | 111 ++++ .../reference/global_objects/math/tanh/index.html | 88 +++ .../reference/global_objects/math/trunc/index.html | 144 +++++ .../reference/global_objects/nan/index.html | 125 ++++ .../reference/global_objects/null/index.html | 125 ++++ .../global_objects/number/epsilon/index.html | 69 +++ .../reference/global_objects/number/index.html | 221 +++++++ .../global_objects/number/isfinite/index.html | 86 +++ .../global_objects/number/isinteger/index.html | 136 +++++ .../global_objects/number/isnan/index.html | 131 +++++ .../global_objects/number/issafeinteger/index.html | 104 ++++ .../number/max_safe_integer/index.html | 83 +++ .../global_objects/number/max_value/index.html | 65 +++ .../number/min_safe_integer/index.html | 66 +++ .../global_objects/number/min_value/index.html | 69 +++ .../reference/global_objects/number/nan/index.html | 105 ++++ .../number/negative_infinity/index.html | 84 +++ .../global_objects/number/parsefloat/index.html | 116 ++++ .../global_objects/number/parseint/index.html | 85 +++ .../number/positive_infinity/index.html | 92 +++ .../global_objects/number/prototype/index.html | 139 +++++ .../global_objects/number/toexponential/index.html | 149 +++++ .../global_objects/number/tofixed/index.html | 99 ++++ .../number/tolocalestring/index.html | 176 ++++++ .../global_objects/number/toprecision/index.html | 104 ++++ .../global_objects/number/tosource/index.html | 48 ++ .../global_objects/number/tostring/index.html | 143 +++++ .../global_objects/number/valueof/index.html | 80 +++ .../object/__definegetter__/index.html | 102 ++++ .../object/__definesetter__/index.html | 117 ++++ .../object/__lookupgetter__/index.html | 84 +++ .../object/__lookupsetter__/index.html | 92 +++ .../global_objects/object/assign/index.html | 223 ++++++++ .../global_objects/object/constructor/index.html | 192 +++++++ .../global_objects/object/count/index.html | 46 ++ .../global_objects/object/create/index.html | 260 +++++++++ .../object/defineproperties/index.html | 233 ++++++++ .../object/defineproperty/index.html | 478 ++++++++++++++++ .../global_objects/object/entries/index.html | 110 ++++ .../global_objects/object/freeze/index.html | 205 +++++++ .../global_objects/object/fromentries/index.html | 107 ++++ .../object/getownpropertydescriptor/index.html | 127 ++++ .../object/getownpropertydescriptors/index.html | 104 ++++ .../object/getownpropertynames/index.html | 211 +++++++ .../object/getownpropertysymbols/index.html | 79 +++ .../object/getprototypeof/index.html | 124 ++++ .../object/hasownproperty/index.html | 193 +++++++ .../reference/global_objects/object/index.html | 180 ++++++ .../reference/global_objects/object/is/index.html | 177 ++++++ .../global_objects/object/isextensible/index.html | 107 ++++ .../global_objects/object/isfrozen/index.html | 172 ++++++ .../global_objects/object/isprototypeof/index.html | 124 ++++ .../global_objects/object/issealed/index.html | 134 +++++ .../global_objects/object/keys/index.html | 190 ++++++ .../global_objects/object/observe/index.html | 161 ++++++ .../object/preventextensions/index.html | 131 +++++ .../object/propertyisenumerable/index.html | 128 +++++ .../global_objects/object/proto/index.html | 203 +++++++ .../global_objects/object/prototype/index.html | 226 ++++++++ .../global_objects/object/seal/index.html | 173 ++++++ .../object/setprototypeof/index.html | 249 ++++++++ .../object/tolocalestring/index.html | 115 ++++ .../global_objects/object/tosource/index.html | 136 +++++ .../global_objects/object/tostring/index.html | 163 ++++++ .../global_objects/object/valueof/index.html | 110 ++++ .../global_objects/object/values/index.html | 139 +++++ .../reference/global_objects/parsefloat/index.html | 171 ++++++ .../reference/global_objects/parseint/index.html | 224 ++++++++ .../global_objects/promise/all/index.html | 245 ++++++++ .../global_objects/promise/allsettled/index.html | 64 +++ .../global_objects/promise/catch/index.html | 138 +++++ .../global_objects/promise/finally/index.html | 100 ++++ .../reference/global_objects/promise/index.html | 174 ++++++ .../global_objects/promise/prototype/index.html | 113 ++++ .../global_objects/promise/race/index.html | 149 +++++ .../global_objects/promise/reject/index.html | 76 +++ .../global_objects/promise/resolve/index.html | 144 +++++ .../global_objects/promise/then/index.html | 181 ++++++ .../reference/global_objects/proxy/index.html | 396 +++++++++++++ .../global_objects/referenceerror/index.html | 171 ++++++ .../global_objects/reflect/apply/index.html | 143 +++++ .../global_objects/reflect/construct/index.html | 151 +++++ .../reflect/defineproperty/index.html | 97 ++++ .../reference/global_objects/reflect/index.html | 166 ++++++ .../global_objects/reflect/set/index.html | 146 +++++ .../global_objects/regexp/compile/index.html | 84 +++ .../global_objects/regexp/exec/index.html | 230 ++++++++ .../global_objects/regexp/ignorecase/index.html | 70 +++ .../reference/global_objects/regexp/index.html | 636 +++++++++++++++++++++ .../global_objects/regexp/sticky/index.html | 95 +++ .../global_objects/regexp/test/index.html | 152 +++++ .../reference/global_objects/set/add/index.html | 131 +++++ .../reference/global_objects/set/clear/index.html | 110 ++++ .../reference/global_objects/set/delete/index.html | 123 ++++ .../global_objects/set/entries/index.html | 109 ++++ .../reference/global_objects/set/has/index.html | 86 +++ .../reference/global_objects/set/index.html | 259 +++++++++ .../global_objects/set/prototype/index.html | 84 +++ .../reference/global_objects/set/values/index.html | 72 +++ .../global_objects/string/@@iterator/index.html | 84 +++ .../global_objects/string/anchor/index.html | 76 +++ .../reference/global_objects/string/big/index.html | 76 +++ .../global_objects/string/blink/index.html | 71 +++ .../global_objects/string/bold/index.html | 68 +++ .../global_objects/string/charat/index.html | 290 ++++++++++ .../global_objects/string/charcodeat/index.html | 213 +++++++ .../global_objects/string/codepointat/index.html | 143 +++++ .../global_objects/string/concat/index.html | 138 +++++ .../global_objects/string/endswith/index.html | 103 ++++ .../global_objects/string/fixed/index.html | 66 +++ .../global_objects/string/fontcolor/index.html | 84 +++ .../global_objects/string/fontsize/index.html | 83 +++ .../global_objects/string/fromcharcode/index.html | 142 +++++ .../global_objects/string/fromcodepoint/index.html | 213 +++++++ .../global_objects/string/includes/index.html | 108 ++++ .../reference/global_objects/string/index.html | 338 +++++++++++ .../global_objects/string/indexof/index.html | 158 +++++ .../global_objects/string/italics/index.html | 68 +++ .../global_objects/string/lastindexof/index.html | 162 ++++++ .../global_objects/string/length/index.html | 142 +++++ .../global_objects/string/link/index.html | 75 +++ .../global_objects/string/localecompare/index.html | 163 ++++++ .../global_objects/string/match/index.html | 232 ++++++++ .../global_objects/string/matchall/index.html | 146 +++++ .../global_objects/string/normalize/index.html | 220 +++++++ .../global_objects/string/padend/index.html | 103 ++++ .../global_objects/string/padstart/index.html | 107 ++++ .../global_objects/string/prototype/index.html | 176 ++++++ .../reference/global_objects/string/raw/index.html | 120 ++++ .../global_objects/string/repeat/index.html | 294 ++++++++++ .../global_objects/string/replace/index.html | 352 ++++++++++++ .../global_objects/string/replaceall/index.html | 178 ++++++ .../global_objects/string/search/index.html | 153 +++++ .../global_objects/string/slice/index.html | 233 ++++++++ .../global_objects/string/small/index.html | 72 +++ .../global_objects/string/split/index.html | 282 +++++++++ .../global_objects/string/startswith/index.html | 96 ++++ .../global_objects/string/strike/index.html | 68 +++ .../reference/global_objects/string/sub/index.html | 123 ++++ .../global_objects/string/substr/index.html | 140 +++++ .../global_objects/string/substring/index.html | 229 ++++++++ .../reference/global_objects/string/sup/index.html | 69 +++ .../string/tolocalelowercase/index.html | 92 +++ .../string/tolocaleuppercase/index.html | 95 +++ .../global_objects/string/tolowercase/index.html | 126 ++++ .../global_objects/string/tosource/index.html | 102 ++++ .../global_objects/string/tostring/index.html | 125 ++++ .../global_objects/string/touppercase/index.html | 135 +++++ .../global_objects/string/trim/index.html | 137 +++++ .../global_objects/string/trimend/index.html | 82 +++ .../global_objects/string/trimstart/index.html | 118 ++++ .../global_objects/string/valueof/index.html | 84 +++ .../global_objects/symbol/asynciterator/index.html | 75 +++ .../global_objects/symbol/description/index.html | 61 ++ .../global_objects/symbol/hasinstance/index.html | 114 ++++ .../reference/global_objects/symbol/index.html | 301 ++++++++++ .../symbol/isconcatspreadable/index.html | 93 +++ .../global_objects/symbol/iterator/index.html | 107 ++++ .../global_objects/symbol/match/index.html | 65 +++ .../global_objects/symbol/matchall/index.html | 72 +++ .../global_objects/symbol/replace/index.html | 60 ++ .../global_objects/symbol/search/index.html | 60 ++ .../global_objects/symbol/species/index.html | 63 ++ .../global_objects/symbol/split/index.html | 60 ++ .../global_objects/symbol/toprimitive/index.html | 75 +++ .../global_objects/symbol/tostringtag/index.html | 92 +++ .../global_objects/symbol/unscopables/index.html | 83 +++ .../reference/global_objects/typedarray/index.html | 364 ++++++++++++ .../global_objects/typedarray/sort/index.html | 126 ++++ .../reference/global_objects/typeerror/index.html | 168 ++++++ .../reference/global_objects/undefined/index.html | 175 ++++++ .../reference/global_objects/unescape/index.html | 136 +++++ .../reference/global_objects/uneval/index.html | 106 ++++ .../global_objects/weakmap/delete/index.html | 73 +++ .../global_objects/weakmap/get/index.html | 74 +++ .../global_objects/weakmap/has/index.html | 77 +++ .../reference/global_objects/weakmap/index.html | 130 +++++ .../global_objects/weakmap/prototype/index.html | 117 ++++ .../global_objects/weakmap/set/index.html | 85 +++ .../reference/global_objects/weakset/index.html | 199 +++++++ 380 files changed, 52490 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/@@iterator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/@@unscopables/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/concat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/contains/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/copywithin/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/entries/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/every/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/fill/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/filtro/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/find/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/findindex/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/flat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/flatmap/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/foreach/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/from/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/indexof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/isarray/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/join/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/keys/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/lastindexof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/length/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/map/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/observe/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/of/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/pop/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/push/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/reduce/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/reduceright/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/reverse/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/shift/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/slice/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/some/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/sort/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/splice/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/tolocalestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/unshift/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/array/values/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/arraybuffer/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/asyncfunction/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/atomics/add/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/atomics/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/bigint/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/bigint/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/boolean/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/boolean/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/boolean/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/boolean/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/boolean/valueof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/dataview/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/@@toprimitive/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getdate/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getday/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getfullyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/gethours/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getmilliseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getminutes/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getmonth/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/gettime/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcdate/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcday/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcfullyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutchours/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcminutes/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcmonth/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getutcseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/getyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/now/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/parse/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setdate/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setfullyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/sethours/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setmilliseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setminutes/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setmonth/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/settime/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcdate/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcfullyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutchours/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcminutes/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcmonth/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setutcseconds/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/setyear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/todatestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/togmtstring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/toisostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tojson/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tolocaledatestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tolocalestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tolocaletimestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/totimestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/toutcstring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/utc/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/date/valueof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/decodeuri/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/decodeuricomponent/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/encodeuri/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/encodeuricomponent/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/error/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/error/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/escape/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/eval/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/evalerror/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/float32array/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/float64array/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/apply/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/arguments/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/arity/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/bind/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/call/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/caller/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/displayname/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/length/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/name/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/function/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/generator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/globalthis/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/infinity/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/int16array/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/internalerror/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/intl/datetimeformat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/intl/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/intl/numberformat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/intl/relativetimeformat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/isfinite/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/isnan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/iterador/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/json/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/json/parse/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/json/stringify/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/clear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/delete/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/entries/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/foreach/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/get/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/has/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/keys/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/set/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/size/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/map/values/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/abs/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/acos/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/acosh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/asin/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/asinh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/atan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/atan2/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/atanh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/cbrt/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/ceil/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/clz32/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/cos/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/cosh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/e/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/exp/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/expm1/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/floor/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/hypot/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/ln10/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/ln2/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log10/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log10e/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log1p/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log2/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/log2e/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/max/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/min/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/pi/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/pow/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/random/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/round/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sign/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sin/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sinh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sqrt/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sqrt1_2/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/sqrt2/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/tan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/tanh/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/math/trunc/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/nan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/null/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/epsilon/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/isfinite/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/isinteger/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/isnan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/issafeinteger/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/max_safe_integer/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/max_value/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/min_safe_integer/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/min_value/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/nan/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/negative_infinity/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/parsefloat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/parseint/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/positive_infinity/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/toexponential/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/tofixed/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/tolocalestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/toprecision/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/number/valueof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/__definegetter__/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/__definesetter__/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/__lookupgetter__/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/__lookupsetter__/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/assign/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/constructor/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/count/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/create/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/defineproperties/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/defineproperty/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/entries/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/freeze/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/fromentries/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/getownpropertynames/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/getprototypeof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/hasownproperty/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/is/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/isextensible/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/isprototypeof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/issealed/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/keys/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/observe/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/preventextensions/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/propertyisenumerable/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/proto/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/seal/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/setprototypeof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/tolocalestring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/valueof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/object/values/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/parsefloat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/parseint/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/all/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/allsettled/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/catch/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/finally/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/race/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/reject/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/resolve/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/promise/then/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/proxy/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/referenceerror/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/reflect/apply/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/reflect/construct/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/reflect/defineproperty/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/reflect/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/reflect/set/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/compile/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/exec/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/ignorecase/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/sticky/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/regexp/test/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/add/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/clear/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/delete/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/entries/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/has/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/set/values/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/@@iterator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/anchor/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/big/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/blink/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/bold/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/charat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/charcodeat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/codepointat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/concat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/endswith/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/fixed/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/fontcolor/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/fontsize/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/fromcharcode/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/fromcodepoint/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/includes/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/indexof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/italics/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/lastindexof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/length/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/link/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/localecompare/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/match/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/matchall/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/normalize/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/padend/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/padstart/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/raw/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/repeat/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/replace/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/replaceall/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/search/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/slice/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/small/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/split/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/startswith/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/strike/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/sub/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/substr/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/substring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/sup/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/tolocalelowercase/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/tolowercase/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/tosource/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/tostring/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/touppercase/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/trim/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/trimend/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/trimstart/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/string/valueof/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/asynciterator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/description/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/hasinstance/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/iterator/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/match/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/matchall/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/replace/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/search/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/species/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/split/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/toprimitive/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/tostringtag/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/symbol/unscopables/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/typedarray/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/typedarray/sort/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/typeerror/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/undefined/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/unescape/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/uneval/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/delete/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/get/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/has/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/prototype/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/set/index.html create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakset/index.html (limited to 'files/pt-br/web/javascript/reference/global_objects') diff --git a/files/pt-br/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/pt-br/web/javascript/reference/global_objects/array/@@iterator/index.html new file mode 100644 index 0000000000..4256678efd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/@@iterator/index.html @@ -0,0 +1,122 @@ +--- +title: 'Array.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +--- +
{{JSRef}}
+ +

O valor inicial da propriedade @@iterator é o mesmo objeto função que o valor inicial da propriedade {{jsxref("Array.prototype.values()", "values()")}}.

+ +

Sintaxe

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

Exemplos

+ +

Iteração usando laço for...of

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+// seu navegador deve suportar laço for..of
+// e variáveis de escopo let em laços for
+for (let letter of arr) {
+  console.log(letter);
+}
+
+ +

Iteração alternativa

+ +
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
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("36")}} [1]{{CompatNo}}{{CompatOpera("25")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("36")}} [1]{{CompatNo}}{{CompatOpera("25")}}{{CompatNo}}
+
+ +

[1] A partir do Gecko 17 (Firefox 17 / Thunderbird 17 / SeaMonkey 2.14) até o Gecko 26 (Firefox 26 / Thunderbird 26 / SeaMonkey 2.23 / Firefox OS 1.2) a propriedade iterator era usada (bug 907077), e a partir do Gecko 27 até o Gecko 35 o placeholder "@@iterator" era usado. No Gecko 36 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33), o símbolo @@iterator foi implementado (bug 918828).

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/pt-br/web/javascript/reference/global_objects/array/@@unscopables/index.html new file mode 100644 index 0000000000..53805d6ada --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/@@unscopables/index.html @@ -0,0 +1,75 @@ +--- +title: 'Array.prototype[@@unscopables]' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +tags: + - ES2015 + - JS + - Propriedade + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +--- +
{{JSRef}}
+ +
A propriedade de símbolo @@unscopable contém nomes de propriedades que não foram incluídos no padrão ECMAScript antes da versão ES2015. Essas propriedades são excluídas do statement bindings with
+ +

Sintaxe

+ +
arr[Symbol.unscopables]
+ +

Descrição

+ +

As propriedades padrão de array que são excluídas dos bindings with são: copyWithin, entries, fill, find, findIndex, includes, keys, e values.

+ +

Veja {{jsxref("Symbol.unscopables")}} para saber como definir unscopables para seus objetos.

+ +

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

+ +

Exemplos

+ +

O código a seguir funciona bem no ES5 e abaixo. No entanto, no ECMAScript 2015 e posterior, o método {{jsxref("Array.prototype.keys()")}} foi introduzido. Isso significa que dentro de ambientes with, as "keys" seriam agora o método e não a variável. É aqui que a propriedade de símbolo @@unscopables Array.prototype[@@unscopables] entra em ação e impede que alguns métodos do Array estejam sendo definidos na instrução with.

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

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
+ + +

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

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/concat/index.html b/files/pt-br/web/javascript/reference/global_objects/array/concat/index.html new file mode 100644 index 0000000000..dc8fc20d38 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/concat/index.html @@ -0,0 +1,159 @@ +--- +title: Array.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/Array/concat +translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Sumário

+ +

O método concat() retorna um novo array contendo todos os arrays ou valores passados como parâmetro

+ +

Sintaxe

+ +
arr.concat(valor1, valor2, ..., valorN)
+ +

Parâmetros

+ +
+
valorN
+
Arrays ou valores para concatenar (unir) ao array retornado.
+
+ +

Descrição

+ +

concat cria um novo array unindo todos os elementos que foram passados como parâmetro, na ordem dada, para cada argumento e seus elementos (se o elemento passado for um array).

+ +

concat não altera a si mesmo ou a qualquer um dos argumentos passados, apenas providencia um novo array contendo uma cópia de si mesmo e dos argumentos passados. Os elementos copiados são:

+ + + + + +

Exemplos

+ +

Exemplo: Concatenando dois arrays

+ +

O código a seguir une dois arrays:

+ +
var alpha = ["a", "b", "c"];
+var numeric = [1, 2, 3];
+
+// creates array ["a", "b", "c", 1, 2, 3]; alpha and numeric are unchanged
+var alphaNumeric = alpha.concat(numeric);
+
+ +

Exemplo: Concatenando três arrays

+ +

O código a seguir une três arrays:

+ +
var num1 = [1, 2, 3];
+var num2 = [4, 5, 6];
+var num3 = [7, 8, 9];
+
+// creates array [1, 2, 3, 4, 5, 6, 7, 8, 9]; num1, num2, num3 are unchanged
+var nums = num1.concat(num2, num3);
+
+ +

Exemplo: Concatenando valores ao array

+ +

O código a seguir une três valores ao array

+ +
var alpha = ['a', 'b', 'c'];
+
+// creates array ["a", "b", "c", 1, 2, 3], leaving alpha unchanged
+var alphaNumeric = alpha.concat(1, [2, 3]);
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 3rd EditionStandardInitial definition.
+ Implemented in 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')}} 
+ +

Compatibilidade em navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support1.0{{CompatGeckoDesktop("1.7")}}5.5{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/contains/index.html b/files/pt-br/web/javascript/reference/global_objects/array/contains/index.html new file mode 100644 index 0000000000..a0f794df1a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/contains/index.html @@ -0,0 +1,106 @@ +--- +title: Array.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/Array/contains +tags: + - Array + - ECMAScript7 + - Experimental + - Expérimental(2) + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Sumário

+ +

O método includes() determina se um array contém um determinado elemento, retornando true ou false apropriadamente.

+ +

Sintaxe

+ +
array.includes(searchElement[, fromIndex])
+ +

Parâmetros

+ +
+
searchElement
+
O elemento a buscar
+
fromIndex
+
Opcional. A posição no array de onde a busca pelo searchElement se iniciará. Por padrão, 0.
+
+ +

Exemplos

+ +
[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
+
+ +

Polyfill

+ +
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
+if (!Array.prototype.includes) {
+  Object.defineProperty(Array.prototype, 'includes', {
+    value: function(searchElement, fromIndex) {
+
+      // 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 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);
+
+      // 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.
+        // c. Increase k by 1.
+        // NOTE: === provides the correct "SameValueZero" comparison needed here.
+        if (o[k] === searchElement) {
+          return true;
+        }
+        k++;
+      }
+
+      // 8. Return false
+      return false;
+    }
+  });
+}
+
+ +

Especificações

+ +

Proposta ES7: https://github.com/domenic/Array.prototype.contains/blob/master/spec.md

+ +

Compatibilidade

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

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/copywithin/index.html b/files/pt-br/web/javascript/reference/global_objects/array/copywithin/index.html new file mode 100644 index 0000000000..4802e87b94 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/copywithin/index.html @@ -0,0 +1,203 @@ +--- +title: Array.prototype.copyWithin() +slug: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +--- +
{{JSRef}}
+ +

O método copyWithin() copia parte de um array para outra localização dentro deste mesmo array e o retorna, sem alterar seu tamanho. 

+ +

Sintaxe

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

Parâmetros

+ +
+
target
+
Posição para a qual os elementos serão copiados. Caso negativo, o target será contado a partir do final.
+
start
+
Índice inicial de onde se copiará os elementos. Caso negativo, o start será contado a partir do final.
+
end {{optional_inline}}
+
Índice final de onde se copiará os elementos. Caso negativo, o end será contado a partir do final.
+
+ +

Descrição

+ +

Os argumentos target, start e end são restritos a {{jsxref("Number")}} e truncados para valores inteiros.

+ +

Se start for negativo, ele é tratado como length+start, onde length é o comprimento do array. Se end for negativo, ele é tratado como length+end.

+ +

A função copyWithin é intencionalmente genérica, não requer que seu valor this seja um objeto {{jsxref("Array")}} e, adicionalmente, copyWithin é um método mutável, irá mudar o próprio objeto this e retorná-lo, não apenas retornar uma cópia dele.

+ +

Exemplos

+ +
[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}
+
+// Typed Arrays do ES6 são subclasses de Array
+var i32a = new Int32Array([1, 2, 3, 4, 5]);
+
+i32a.copyWithin(0, 2);
+// Int32Array [3, 4, 5, 4, 5]
+
+// Em plataformas que ainda não são compatíveis com ES6:
+[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);
+// Int32Array [4, 2, 3, 4, 5]
+
+ +

Polyfill

+ +
if (!Array.prototype.copyWithin) {
+  Array.prototype.copyWithin = function(target, start/*, end*/) {
+    // Passos 1-2.
+    if (this == null) {
+      throw new TypeError('this é null ou não definido');
+    }
+
+    var O = Object(this);
+
+    // Passos 3-5.
+    var len = O.length >>> 0;
+
+    // Passos 6-8.
+    var relativeTarget = target >> 0;
+
+    var to = relativeTarget < 0 ?
+      Math.max(len + relativeTarget, 0) :
+      Math.min(relativeTarget, len);
+
+    // Passos 9-11.
+    var relativeStart = start >> 0;
+
+    var from = relativeStart < 0 ?
+      Math.max(len + relativeStart, 0) :
+      Math.min(relativeStart, len);
+
+    // Passos 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);
+
+    // Passo 15.
+    var count = Math.min(final - from, len - to);
+
+    // Passos 16-17.
+    var direction = 1;
+
+    if (from < to && to < (from + count)) {
+      direction = -1;
+      from += count - 1;
+      to += count - 1;
+    }
+
+    // Passo 18.
+    while (count > 0) {
+      if (from in O) {
+        O[to] = O[from];
+      } else {
+        delete O[to];
+      }
+
+      from += direction;
+      to += direction;
+      count--;
+    }
+
+    // Passo 19.
+    return O;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("45")}}{{CompatGeckoDesktop("32")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("32")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/entries/index.html b/files/pt-br/web/javascript/reference/global_objects/array/entries/index.html new file mode 100644 index 0000000000..8abb0cf088 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/entries/index.html @@ -0,0 +1,117 @@ +--- +title: Array.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Array/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries +--- +
{{JSRef}}
+ +

O método entries() retorna um novo objeto Array Iterator que contém os pares chave/valor para cada índice no array.

+ +

Sintaxe

+ +
arr.entries()
+ +

Exemplos

+ +
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']
+
+ +

O mesmo que acima, utilizando um loop for…of

+ +
var arr = ['a', 'b', 'c'];
+var eArr = arr.entries();
+
+for (let e of eArr) {
+  console.log(e);
+}
+// [0, 'a']
+// [1, 'b']
+// [2, 'c']
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("28")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("28")}}{{CompatNo}}{{CompatNo}}8.0
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/every/index.html b/files/pt-br/web/javascript/reference/global_objects/array/every/index.html new file mode 100644 index 0000000000..a7d290e58a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/every/index.html @@ -0,0 +1,176 @@ +--- +title: Array.prototype.every() +slug: Web/JavaScript/Reference/Global_Objects/Array/every +tags: + - Array + - JavaScript + - Método(2) + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/every +--- +
{{JSRef}}
+ +

O método every() testa se todos os elementos do array passam pelo teste implementado pela função fornecida.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função que testa cada elemento, recebe três parametros: +
+
currentValue (obrigatório)
+
O elemento atual sendo processado na array. 
+
index (opcional)
+
O índice do elemento atual sendo processado na array.
+
array (opcional)
+
O array de origem.
+
+
+
thisArg
+
Opcional. Valor a ser usado como this quando o callback é executado.
+
+ +

Valor de retorno

+ +

true se a função de callback retorna um valor {{Glossary("truthy")}} para cada um dos elementos do array; caso contrário, false.

+ +

Descrição

+ +

O método every executa a função callback fornecida uma vez para cada elemento presente no array, até encontrar algum elemento em que a função retorne um valor false (valor que se torna false quando convertido para boolean). Se esse elemento é encontrado, o método every imediatamente retorna false. Caso contrário, se a função callback retornar true para todos elementos, o método retorna true.  A função callback é chamada apenas para os elementos do array original que tiverem valores atribuídos; os elementos que tiverem sido removidos ou os que nunca tiveram valores atribuídos não serão considerados.

+ +

A função callback é chamada com três argumentos: o valor do elemento corrente, o índice do elemento corrente e o array original que está sendo percorrido.

+ +

Se o parâmetro thisArg foi passado para o método every, ele será repassado para a função callback no momento da chamada para ser utilizado como o this. Caso contrário, o valor undefined será repassado para uso como o this. O valor do this a ser repassado para o callback é determinado de acordo com as regras usuais para determinar o this visto por uma função.

+ +

O método every não modifica o array original.

+ +

A lista de elementos que serão processados pelo every é montada antes da primeira chamada da função callback. Se um elemento for acrescentado ao array original após a chamada ao every , ele não será visível para o callback. Se os elementos existentes forem modificados, os valores que serão repassados serão os do momento em que o método every chamar o callback. Elementos removidos não serão considerados.

+ +

every funciona como o  qualificador "for all" em matemática. Particularmente, para um vetor vazio, é retornado true. (É verdade por vacuidade que todos os elementos do conjunto vazio satisfazem qualquer condição.)

+ +

Exemplos

+ +

Testando tamanho de todos os elementos do vetor

+ +

O exemplo a seguir testa se todos elementos no array são maiores que 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
+
+ +

Usando arrow functions

+ +

Arrow functions fornecem sintaxe mais curta para o mesmo teste. 

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

Polyfill

+ +

every foi adicionado ao padrão ECMA-262 na 5ª edição; como tal, pode não estar presente em outras implementações do padrão. Você pode contornar isso adicionando o seguinte código no começo dos seus scripts, permitindo o uso de every em implementações que não o suportam nativamente. Esse algoritimo é exatamente o mesmo especificado no ECMA-262, 5ª edição, assumindo que Object e TypeError tem os seus valores originais e que callbackfn.call retorna o valor original de {{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. Let O be the result of calling ToObject passing the this
+    //    value as the argument.
+    var O = Object(this);
+
+    // 2. Let lenValue be the result of calling the Get internal method
+    //    of O with the argument "length".
+    // 3. Let len be ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. If IsCallable(callbackfn) is false, throw a TypeError exception.
+    if (typeof callbackfn !== 'function') {
+      throw new TypeError();
+    }
+
+    // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+    if (arguments.length > 1) {
+      T = thisArg;
+    }
+
+    // 6. Let k be 0.
+    k = 0;
+
+    // 7. Repeat, while k < len
+    while (k < len) {
+
+      var kValue;
+
+      // a. Let Pk be ToString(k).
+      //   This is implicit for LHS operands of the in operator
+      // b. Let kPresent be the result of calling the HasProperty internal
+      //    method of O with argument Pk.
+      //   This step can be combined with c
+      // c. If kPresent is true, then
+      if (k in O) {
+
+        // i. Let kValue be the result of calling the Get internal method
+        //    of O with argument Pk.
+        kValue = O[k];
+
+        // ii. Let testResult be the result of calling the Call internal method
+        //     of callbackfn with T as the this value and argument list
+        //     containing kValue, k, and O.
+        var testResult = callbackfn.call(T, kValue, k, O);
+
+        // iii. If ToBoolean(testResult) is false, return false.
+        if (!testResult) {
+          return false;
+        }
+      }
+      k++;
+    }
+    return true;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}{{Spec2('ES6')}}
+ +

Compatibilidade em navegadores

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/fill/index.html b/files/pt-br/web/javascript/reference/global_objects/array/fill/index.html new file mode 100644 index 0000000000..8957bf3023 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/fill/index.html @@ -0,0 +1,125 @@ +--- +title: Array.prototype.fill() +slug: Web/JavaScript/Reference/Global_Objects/Array/fill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill +--- +
{{JSRef}}
+ +

O método fill() preenche todos os valores do array a partir do índice inicial a um índice final com um valor estático.

+ +

Sintaxe

+ +
arr.fill(valor[, ínicio = 0[, fim = this.length]])
+ +

Parâmetros

+ +
+
valor
+
Valor para preencher o array.
+
ínicio
+
Opcional. Índice inicial.
+
fim
+
Opcional. Índice final.
+
+ +

Descrição

+ +

O intervalo de preenchimento dos elementos é  [início, fim).

+ +

O método fill pode receber até três argumentos valor, ínicio e fim. Os argumentos ínicio e fim são opcionais com valor padrão 0 (valor) e o tamanho do objeto (fim).

+ +

Se o ínicio for negativo, ele será tratado como tamanho + ínicio onde tamanho é o tamanho total do array. Se o fim for negativo, ele será tratado como tamanho + fim.

+ +

A função fill é intencionalmente genérica, ele não precisa que o valor do this seja um objeto Array.

+ +

O método fill é um método mutável, ele irá mudar o objeto em si, e retorná-lo, não somente uma cópia do objeto.

+ +

Exemplos

+ +
[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, -2);       // [4, 2, 3]
+[1, 2, 3].fill(4, NaN, NaN);     // [1, 2, 3]
+Array(3).fill(4);                // [4, 4, 4]
+[].fill.call({ length: 3 }, 4);  // {0: 4, 1: 4, 2: 4, length: 3}
+
+ +

Polyfill

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

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade com os navegadores

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

[1] Começando com Chrome 36, isto era disponível com uma mudança nas preferencias. Em chrome://flags, ativar a entrada “Enable Experimental JavaScript”.

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/filtro/index.html b/files/pt-br/web/javascript/reference/global_objects/array/filtro/index.html new file mode 100644 index 0000000000..c7b0c08915 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/filtro/index.html @@ -0,0 +1,227 @@ +--- +title: Array.prototype.filter() +slug: Web/JavaScript/Reference/Global_Objects/Array/filtro +tags: + - Array + - ECMAScript 5 + - JavaScript + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter +--- +
{{JSRef}}
+ +

O método filter() cria um novo array com todos os elementos que passaram no teste implementado pela função fornecida.

+ +
function isBigEnough(value) {
+  return value >= 10;
+}
+
+var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
+// filtrado é [12, 130, 44]
+
+ +

Sintaxe

+ +
var newArray = arr.filter(callback[, thisArg])
+ +

Parâmetros

+ +
+
callback
+
Função é um predicado, para testar cada elemento do array. Retorna true para manter o elemento, false caso contrário, recebendo três argumentos:
+
+
+
element
+
+

O elemento que está sendo processado no array.

+
+
index
+
O índice do elemento atual que está sendo processado no array.
+
array
+
O array para qual filter foi chamada.
+
+
+
thisArg {{Optional_inline}}
+
Opcional. Valor a ser usado como this durante a execução do callback.
+
+ +

Valor de retorno

+ +

Um novo array com os elementos que passaram no teste.

+ +

Descrição

+ +

filter() chama a função callback fornecida, uma vez para cada elemento do array, e constrói um novo array com todos os valores para os quais o callback retornou o valor true ou  um valor que seja convertido para true. O callback é chamado apenas para índices do array que possuem valores atribuídos; Ele não é invocado para índices que foram excluídos ou para aqueles que não tiveram valor atribuído. Elementos do array que não passaram no teste do callback são simplesmente ignorados, e não são incluídos no novo array.

+ +

callback é invocado com estes três argumentos:

+ +
    +
  1. o valor do elemento
  2. +
  3. o índice do elemento
  4. +
  5. o objeto do array a ser preenchido
  6. +
+ +

Se o parâmetro thisArg for provido para o filter, ele será passado para o callback quando invocado, para ser usado como o valor do this. Caso contrário, será passado undefined como o valor de this. O valor do this finalmente observado pela função de callback é determinado de acordo com a regra que define o valor do this geralmente visto por uma função.

+ +

filter() não altera o array a partir da qual foi invocado.

+ +

O intervalo de elementos processados pela função filter() é definido antes da invocação do primeiro callback. Elementos que forem adicionados ao array depois da invocação do filter() não serão visitados pelo callback. Se elementos existentes no array forem alterados ou deletados, os valores deles que serão passados para o callback são os que eles tiverem quando o  filter() visitá-los; Elementos que forem deletados não são visitados.

+ +

Exemplos

+ +

Exemplo: Filtrando todos os valores pequenos

+ +

Os exemplos a seguir usam filter() para criar um array filtrado em que todos os elementos com valores menores que 10 são removidos.

+ +
function isBigEnough(value) {
+  return value >= 10;
+}
+var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
+// filtered is [12, 130, 44]
+
+ +

Exemplo: Filtrando entradas inválidas para JSON

+ +

O exemplo a seguir usa filter() para criar um JSON filtrado com todos seus elementos diferentes de zero, e id numérico.

+ +
var arr = [
+  { id: 15 },
+  { id: -1 },
+  { id: 0 },
+  { id: 3 },
+  { id: 12.2 },
+  { },
+  { id: null },
+  { id: NaN },
+  { id: 'undefined' }
+];
+
+var invalidEntries = 0;
+
+function filterByID(obj) {
+  if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) {
+    return true;
+  } else {
+    invalidEntries++;
+    return false;
+  }
+}
+
+var arrByID = arr.filter(filterByID);
+
+console.log('Filtered Array\n', arrByID);
+// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]
+
+console.log('Number of Invalid Entries = ', invalidEntries);
+// Number of Invalid Entries = 4
+
+ +

Procurando em um array

+ +

O exemplo a seguir usa filter() para filtrar o conteúdo de um array baseado em um critério de busca

+ +
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Array filters items based on search criteria (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']
+ +

Implementação ES2015

+ +
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];
+
+/**
+ * Array filters items based on search criteria (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']
+ +

Polyfill

+ +

filter() foi adicionado ao padrão ECMA-262 na 5ª edição; assim como pode não estar presente em todas as implementações do padrão. Você pode trabalhar com isso adicionando o seguinte código no início de seus scripts, permitindo o uso do filter() na implementação ECMA-262 que não tem suporte nativo. Esse algoritmo é exatamente aquele especificado na 5ª edição do ECMA-262, assumindo que fn.call veja o valor original de {{jsxref("Function.prototype.call()")}}, e que {{jsxref("Array.prototype.push()")}} tenha seu valor original.

+ +
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];
+
+        // NOTE: Technically this should Object.defineProperty at
+        //       the next index, as push can be affected by
+        //       properties on Object.prototype and Array.prototype.
+        //       But that method's new, and collisions should be
+        //       rare, so use the more-compatible alternative.
+        if (fun.call(thisArg, val, i, t)) {
+          res.push(val);
+        }
+      }
+    }
+
+    return res;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}{{Spec2('ES6')}}
+ +

Compatibilidade de Browser

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

Veja também

+ + + + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/find/index.html b/files/pt-br/web/javascript/reference/global_objects/array/find/index.html new file mode 100644 index 0000000000..904f65c200 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/find/index.html @@ -0,0 +1,157 @@ +--- +title: Array.prototype.find() +slug: Web/JavaScript/Reference/Global_Objects/Array/find +translation_of: Web/JavaScript/Reference/Global_Objects/Array/find +--- +
{{JSRef}}
+ +

O método find() retorna o valor do primeiro elemento do array que satisfizer a função de teste provida. Caso contrario, {{jsxref("undefined")}} é retornado.

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

Veja também o método {{jsxref("Array.findIndex", "findIndex()")}}, que retorna o índice do elemento encontrado no array ao invés do seu valor.

+ +

Se você precisa encontrar a posição de um elemento ou se um elemento existe em um array, use {{jsxref("Array.prototype.indexOf()")}} ou {{jsxref("Array.prototype.includes()")}}.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função executada a cada iteração do array, recebendo três argumentos: +
+
element
+
O elemento atual que está sendo processado no array.
+
index{{optional_inline}}
+
O índice do elemento atualmente sendo processado no array.
+
array{{optional_inline}}
+
O array sobre o qual find foi chamado.
+
+
+
thisArg{{optional_inline}}
+
Opcional. Objeto usado como this quando executando o callback.
+
+ +

Valor retornado

+ +

O valor do primeiro elemento do array que satisfaz a função de teste fornecida; caso contrário, {{jsxref("undefined")}}.

+ +

Descrição

+ +

O método find executa a função callback uma vez para cada elemento presente no array até que encontre um onde callback  retorne o valor true. Se o elemento é encontrado, find retorna imediatamente o valor deste elemento. Caso contrário, find retorna {{jsxref("Global_Objects/undefined", "undefined")}}. O callback é acionado para todos os índices do array de 0 a tamanho-1, não apenas para aqueles que possuem valores atribuídos. Sendo assim, ele pode ser menos eficiente para arrays muito grandes em que existem outros métodos que só visitam os índices que tenham valor atribuído.

+ +

callback é acionado com três argumentos: o valor do elemento, o índice do elemento e o objeto do Array que está sendo executado.

+ +

Se um parâmetro thisArg é provido ao find, ele será usado como o this para cada acionamento do callback. Se não for provido, então {{jsxref("Global_Objects/undefined", "undefined")}} é usado.

+ +

find não altera a array à qual foi acionado.

+ +

O conjunto dos elementos processados por find é definido antes do primeiro acionamento do callback. Elementos que são anexados à array após o início da chamada ao find não serão visitados pelo callback. Se um elemento existente ainda não visitado da array for alterado pelo callback, o valor passado ao callback quando o visitar será o valor no momento que find visita o índice daquele elemento; elementos excluídos ainda são visitados.

+ +

Exemplos

+ +

Encontrar um objeto em um array por uma de suas propriedades

+ +
const inventory = [
+    {name: 'apples', quantity: 2},
+    {name: 'bananas', quantity: 0},
+    {name: 'cerejas', quantity: 5}
+];
+
+function isCherries(fruit) {
+    return fruit.name === 'cerejas';
+}
+
+console.log(inventory.find(isCherries));
+// { name: 'cerejas', quantity: 5 }
+ +

Utilizando arrow function

+ +
const inventory = [
+    {name: 'maças', quantity: 2},
+    {name: 'bananas', quantity: 0},
+    {name: 'cherries', quantity: 5}
+];
+
+const result = inventory.find( fruit => fruit.name === 'cherries' );
+
+console.log(result) // { name: 'cherries', quantity: 5 }
+ +

Encontrar um número primo em um array

+ +

O exemplo a seguir encontra um elemento dentro da array que é número primo (ou retorna {{jsxref("Global_Objects/undefined", "undefined")}} se não houverem números primos).

+ +
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, not found
+console.log([4, 5, 8, 12].find(isPrime)); // 5
+
+ +

Polyfill

+ +

Este método foi adicionado à especificação do ECMAScript 2015 e pode não estar disponível em todas as implementações do JavaScript. Entretanto, você pode fazer um polyfill para o Array.prototype.find com o trecho de código abaixo:

+ +
if (!Array.prototype.find) {
+  Array.prototype.find = function(predicate) {
+    if (this === null) {
+      throw new TypeError('Array.prototype.find 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 value;
+      }
+    }
+    return undefined;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.find', 'Array.prototype.find')}}{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade do Navegador

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/findindex/index.html b/files/pt-br/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..75c677d20d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,127 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef}}
+ +

O método findIndex() retorna o índice no array do primeiro elemento que satisfizer a função de teste provida. Caso contrário, retorna -1, indicando que nenhum elemento passou no teste.

+ +

Veja também o método {{jsxref("Array.find", "find()")}}, que retorna o valor de um elemento encontrado no array em vez de seu índice.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função para executar em cada valor no array, tomando três argumentos: +
+
element
+
O elemento atual sendo processado no array.
+
index
+
O índice do elemento atual sendo processado no array.
+
array
+
O array sobre o qual findIndex foi chamado.
+
+
+
thisArg
+
Opcional. Objeto para usar como this na execução do callback.
+
+ +

Descrição

+ +

O método findIndex executa a função callback uma vez para cada elemento presente no array até encontrar um onde o callback retorna um valor verdadeiro. Se tal elemento for encontrado, findIndex imediatamente retorna o índice deste elemento. Caso contrário, findIndex retorna -1. callback é invocado apenas para índices no array que têm valores atribuídos; nunca é invocado para índices que foram deletados ou que nunca tiveram valores atribuídos.

+ +

callback é invocado com três argumentos: o valor do elemento, o índice do elemento e o objeto Array sendo percorrido.

+ +

Se um parâmetro thisArg for fornecido para findIndex, ele será usado como o this para cada invocação do callback. Se não for fornecido, então {{jsxref("undefined")}} é usado.

+ +

findIndex não modifica o array sobre o qual é chamado.

+ +

A série de elementos processados por findIndex é definida antes da primeira invocação do callback. Elementos que são adicionados ao array depois que a chamada a findIndex começa não serão visitados pelo callback. Se um elemento existente não visitado do array for modificado pelo callback, seu valor passado ao callback será o valor no momento em que findIndex visitar o índice deste elemento; elementos que forem deletados não são visitados.

+ +

Exemplos

+ +

Encontrar o índice de um número primo em um array

+ +

O seguinte exemplo encontra o índice de um elemento no array que é um número primo (ou retorna -1 se não houver número primo).

+ +
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, não encontrado
+console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
+
+ +

Polyfill

+ +

Esse método foi adicionado à especificação do ECMAScript 6 e pode não estar disponível em todas as implementações de JavaScript ainda. Contudo, você pode fazer o polyfill de Array.prototype.findIndex com o seguinte trecho de código:

+ +
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;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ +
{{Compat("javascript.builtins.Array.findIndex")}}
+ +
+ +
Veja também
+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/flat/index.html b/files/pt-br/web/javascript/reference/global_objects/array/flat/index.html new file mode 100644 index 0000000000..b14ffb006f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/flat/index.html @@ -0,0 +1,121 @@ +--- +title: Array.prototype.flat() +slug: Web/JavaScript/Reference/Global_Objects/Array/flat +tags: + - Array + - Experimental + - JavaScript + - Method + - Prototype + - flat +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

O método flat() cria um novo array com todos elementos sub-arrays concatenados nele de forma recursiva até a profundidade especificada.

+ + + + + +

Sintaxe

+ +
var novoArray = arr.flat(depth)
+ +

Parâmetros

+ +
+
depth {{optional_inline}}
+
O nível de profundidade especifíca o quanto um array aninhando deve ser achatado. O Default é 1.
+
+ +

Retorno

+ +

Um novo array com os elementos sub-array concatenados nele.

+ +

Exemplos

+ +

Achatando arrays aninhados

+ +
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]
+
+const arr4 = [1, 2, [3, 4, [5, 6, [7, 8]]]];
+arr4.flat(Infinity);
+// [1, 2, 3, 4, 5, 6, 7, 8]
+ +

Achatando e buracos em array

+ +

o método flat remove espaços vazios do array:

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

Alternativa

+ +

reduceconcat

+ +
var arr1 = [1, 2, [3, 4]];
+arr1.flat();
+
+//achatar array de nível único
+arr1.reduce((acc, val) => acc.concat(val), []);
+// [1, 2, 3, 4]
+
+//para achatamentos mais profundos, use recursividade com reduce e concat
+var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
+
+(function flattenDeep(arr1){
+   return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
+})(arr1);
+
+// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
+
+
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
Array.prototype.flat proposalDraft
+ +

Compatibilidade em Navegadores

+ +
+ + +

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

+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/flatmap/index.html b/files/pt-br/web/javascript/reference/global_objects/array/flatmap/index.html new file mode 100644 index 0000000000..f75edaf3ef --- /dev/null +++ b/files/pt-br/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}} {{SeeCompatTable}}
+ +

O método flatMap() primeiro mapeia cada elemento usando uma função de mapeamento e, em seguida, nivela o resultado em um novo array. É idêntico a um map seguido por um flat de profundidade 1, mas flatMap é bastante útil e mescla ambos em um método um pouco mais eficiente.\{{EmbedInteractiveExample("pages/js/array-flatmap.html")}}

+ + + +

Sintaxe

+ +
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
+    // retorna o elemento para new_array
+}[, thisArg])
+ +

Parâmetros

+ +
+
callback
+
Função que produz um elemento de uma nova Array, pegando três argumentos: +
+
+
currentValue
+
O valor atual sendo processo na array.
+
index{{optional_inline}}
+
O index do valor atual sendo processo na array.
+
array{{optional_inline}}
+
+ +

O map da array que foi chamado.

+
+
thisArg{{optional_inline}}
+
Valor para ser usado como this quando callback estiver sendo executado.
+
+ +

Valor de retorno

+ +

Uma nova array com cada elemento sendo o resultado da função callback e achatado ao valor de 1.

+ +

Descrição

+ +

Veja {{jsxref("Array.prototype.map()")}} para uma detalhada descrição da função callback. O método flatMap é idêntico ao map seguido por um chamado a flatten de profundidade 1.

+ +

Exemplos

+ +

map e flatMap

+ +
var arr1 = [1, 2, 3, 4];
+
+arr1.map(x => [x * 2]);
+// [[2], [4], [6], [8]]
+
+arr1.flatMap(x => [x * 2]);
+// [2, 4, 6, 8]
+
+//  Só o primeiro nível
+arr1.flatMap(x => [[x * 2]]);
+// [[2], [4], [6], [8]]
+
+ +

Enquanto que acima poderíamos alcançar apenas com a utilização de map, já aqui temos um exemplo onde flatMap é mais apropriado.

+ +

Vamos gerar uma lista de palavras a partir de uma lista de sentenças.

+ +
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"]
+
+ +

Perceba, o comprimento da lista de saída pode ser diferente do comprimento da lista de entrada.

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

Alternativa

+ +

reduce e concat

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

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
Array.prototype.flatMap proposalRascunho
+ +

Compatibilidade de browser

+ +
+ + +

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

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/foreach/index.html b/files/pt-br/web/javascript/reference/global_objects/array/foreach/index.html new file mode 100644 index 0000000000..3ff4e43901 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/foreach/index.html @@ -0,0 +1,212 @@ +--- +title: Array.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Array/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach +--- +
{{JSRef}}
+ +

O método forEach() executa uma dada função em cada elemento de um array.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função para executar em cada elemento, recebendo três argumentos: +
+
currentValue
+
O valor atual do elemento sendo processado no array.
+
index {{optional_inline}}
+
O índice do elemento atual sendo processado no array.
+
array {{optional_inline}}
+
O array que forEach() está sendo aplicado.
+
+
+
thisArg {{optional_inline}}
+
Opcional. Valor a ser usado como this quando executar callback.
+
+ +

Valor retornado

+ +

undefined.

+ +

Descrição

+ +

O forEach executa o callback fornecido uma vez para cada elemento da ordem com um valor atribuido. Ele não é invocado para propriedades de índices que foram deletados ou que não foram inicializados (por ex. em arrays esparsos).

+ +

callback é invocado com três argumentos:

+ + + +

Se um parâmetro thisArg for passado para forEach(), ele será passado para o callback  quando invocado como valor para this.  Caso contrário, o valor {{jsxref("undefined")}} será passado como valor para this. O valor de this assumido no callback é determinado de acordo com as regras usuais para determinação do this visto por uma função.

+ +

O intervalo dos elementos processados por forEach() é determinado antes da primeira invocação do callback. Elementos que forem adicionados ao array depois da chamada ao forEach() começar não serão visitados pelo callback. Se os valores dos elementos existentes do array forem alterados, o valor passado para o callback será o valor no momento em que o forEach() visitá-los; elementos que forem deletados antes de serem visitados não serão visitados.

+ +

forEach() executa a a função callback uma vez para cada elemento do array – diferentemente de {{jsxref("Array.prototype.map()", "map()")}} ou {{jsxref("Array.prototype.reduce()", "reduce()")}}, ele sempre retorna o valor {{jsxref("undefined")}} e não é encadeável. O caso de uso típico é alterar o array no final do loop.

+ +
+

A única maneira de parar ou interromper um loop forEach() é disparando uma exceção. Se você precisa desse recurso, o método forEach() é a ferramenta errada. Você estará mais bem servido com um loop simples nesse caso. Se estiver testando o array de elementos para um predicado e precisar de um valor de retorno Boleano, você pode usar {{jsxref("Array.prototype.every()", "every()")}} ou {{jsxref("Array.prototype.some()", "some()")}}. Se estiverem disponíveis, os novos métodos {{jsxref("Array.prototype.find()", "find()")}} e {{jsxref("Array.prototype.findIndex()", "findIndex()")}} também podem ser usados para terminação antecipada em predicados verdadeiros.

+
+ +

Exemplos

+ +

Imprimindo os conteúdos de uma ordem

+ +

Os códigos a seguir logam uma linha para cada elemento na ordem:

+ +
function logArrayElements(element, index, array) {
+    console.log("a[" + index + "] = " + element);
+}
+[2, 5, 9].forEach(logArrayElements);
+// logs:
+// a[0] = 2
+// a[1] = 5
+// a[2] = 9
+
+ +

Função para cópia de um objeto

+ +

O código a seguir cria uma cópia para cada objeto dado. Há diferentes formas de criar uma cópia para um objeto. Esta é somente uma forma de explicar como  Array.prototype.forEach funciona. Ela usa um grupo de novas funções ECMAScript 5 Object.*

+ +
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 looks like o1 now
+
+ +

Compatibilidade

+ +

forEach é uma adição recente para o ECMA-262 standard; assim sendo, pode não estar presente em outras implementações do standard. Você pode contornar isto pela inserção do código a seguir no começo de seus scripts, permitindo o uso de forEach em implementações que normalmente não possuem este suporte.

+ +
if ( !Array.prototype.forEach ) {
+  Array.prototype.forEach = function(fn, scope) {
+    for(var i = 0, len = this.length; i < len; ++i) {
+      fn.call(scope, this[i], i, this);
+    }
+  };
+}
+
+ +

Um algorítimo 100% verdadeiro para a 5ª Edição do ECMA-262, pode ser visto abaixo:

+ +

O algoritmo é exatamente o especificado na 5ª Edição da  ECMA-262, assumindo Object e TypeError possuem seus valores originais e avalia callback.call para o valor original de Function.prototype.call.

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.18
+// Reference: http://es5.github.com/#x15.4.4.18
+if ( !Array.prototype.forEach ) {
+
+  Array.prototype.forEach = function forEach( callback, thisArg ) {
+
+    var T, k;
+
+    if ( this == null ) {
+      throw new TypeError( "this is null or not defined" );
+    }
+
+    // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
+    var O = Object(this);
+
+    // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
+    // 3. Let len be ToUint32(lenValue).
+    var len = O.length >>> 0; // Hack to convert O.length to a UInt32
+
+    // 4. If IsCallable(callback) is false, throw a TypeError exception.
+    // See: http://es5.github.com/#x9.11
+    if ( {}.toString.call(callback) !== "[object Function]" ) {
+      throw new TypeError( callback + " is not a function" );
+    }
+
+    // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+    if ( thisArg ) {
+      T = thisArg;
+    }
+
+    // 6. Let k be 0
+    k = 0;
+
+    // 7. Repeat, while k < len
+    while( k < len ) {
+
+      var kValue;
+
+      // a. Let Pk be ToString(k).
+      //   This is implicit for LHS operands of the in operator
+      // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
+      //   This step can be combined with c
+      // c. If kPresent is true, then
+      if ( Object.prototype.hasOwnProperty.call(O, k) ) {
+
+        // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
+        kValue = O[ k ];
+
+        // ii. Call the Call internal method of callback with T as the this value and
+        // argument list containing kValue, k, and O.
+        callback.call( T, kValue, k, O );
+      }
+      // d. Increase k by 1.
+      k++;
+    }
+    // 8. return undefined
+  };
+}
+
+ +

Compatibilidade de Browser

+ +

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

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no 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')}}
+ +

Veja também

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

Resumo

+ +

O método Array.from() cria uma nova instância de um Array quando for passado um array-like ou um iterable object como argumento.

+ +

No  ES6, a sintaxe de classe permite a subclassificação de classes nativas e classes definidas pelo usuário; como resultado, os métodos estáticos pertencentes a classe, como Array.from, são "herdadas" por subclasses do Array e criam novas instâncias da subclasse, não do Array.

+ +

Sintaxe

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

Parâmetros

+ +
+
arrayLike
+
Um array-like ou um objeto iterável para converter em array.
+
mapFn
+
Opcional. Função Map que será chamada para cada elemento do array.
+
thisArg
+
Opcional. Valor a ser utilizado como this quando a mapFn for chamada.
+
+ +

Descrição

+ +

Array.from() deixa você criar um Array de:

+ + + +

Array.from() tem um parametro opcional mapFn, que permite executar a função {{jsxref("Array.prototype.map", "map")}} para cada elemento do array (ou subclasse de objeto) que está sendo criado. Simplificando, Array.from(obj, mapFn, thisArg) é o mesmo que Array.from(obj).map(mapFn, thisArg), com a excessão de não cria um array intermediário . Isso é importante, principalmente para certas subclasses de array, como typed array, no qual o array intermediário iria necessáriamente ter o valor truncado para encaixar-se no tipo apropriado.

+ +

A propriedade length do método from() é 1.

+ +

No ES2015, a sintaxe de class permite a definição de subclasses tanto internas quando definidas pelo usuário. Como resultado, métodos estáticos como Array.from() são "herdados" pelas subclasses de Array, e cria novas instâncias da subclasse, não de Array.

+ +

Polyfill

+ +

Array.from foi adicionado ao padrão ECMA-262 em sua 6ª edição; desta forma, não está presente na aplicações anteriores da especificação. Na ausência do código nativo, você pode inserir o código seguinte no início do script, permitindo o uso parcial da funcionalidade do Array.from.  Esse algorítmo  é equivalente ao especificado no ECMA-262, 6ª edição, exceto que Object e TypeError tem seus valores originais e que callback.call retorna o valor original de {{jsxref("Function.prototype.call")}}. Além disso, os verdadeiros iterables não podem ser representados genéricamente no polyfill, criando a principal distinção do que foi definido na especificação.

+ +
// Production steps of ECMA-262, Edition 6, 22.1.2.1
+// Reference: 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);
+    };
+
+    // The length property of the from method is 1.
+    return function from(arrayLike/*, mapFn, thisArg */) {
+      // 1. Let C be the this value.
+      var C = this;
+
+      // 2. Let items be 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. If mapfn is undefined, then let mapping be false.
+      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
+      var T;
+      if (typeof mapFn !== 'undefined') {
+        // 5. else
+        // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
+        if (!isCallable(mapFn)) {
+          throw new TypeError('Array.from: when provided, the second argument must be a function');
+        }
+
+        // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
+        if (arguments.length > 2) {
+          T = arguments[2];
+        }
+      }
+
+      // 10. Let lenValue be Get(items, "length").
+      // 11. Let len be ToLength(lenValue).
+      var len = toLength(items.length);
+
+      // 13. If IsConstructor(C) is true, then
+      // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.
+      // 14. a. Else, Let A be ArrayCreate(len).
+      var A = isCallable(C) ? Object(new C(len)) : new Array(len);
+
+      // 16. Let k be 0.
+      var k = 0;
+      // 17. Repeat, while k < len… (also steps 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. Let putStatus be Put(A, "length", len, true).
+      A.length = len;
+      // 20. Return A.
+      return A;
+    };
+  }());
+}
+
+ +

Exemplos

+ +
// Array-like object (arguments) para um Array
+function f() {
+  return Array.from(arguments);
+}
+
+f(1, 2, 3);
+// [1, 2, 3]
+
+
+// Qualquer iterable object ...
+// com 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]]
+
+
+// String
+Array.from("foo");
+// ["f", "o", "o"]
+
+
+// Usando um arrow function como função map para
+// manipular os elementos
+Array.from([1, 2, 3], x => x + x);
+// [2, 4, 6]
+
+
+// Gerando uma sequência de números
+Array.from({length: 5}, (v, k) => k);
+// [0, 1, 2, 3, 4]
+
+ +

Especificação

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-array.from', 'Array.from')}}{{Spec2('ES6')}}Initial definition.
+ +

compatibilidade com navegadores

+ +
+

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

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/index.html b/files/pt-br/web/javascript/reference/global_objects/array/index.html new file mode 100644 index 0000000000..6130c8d949 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/index.html @@ -0,0 +1,511 @@ +--- +title: Array +slug: Web/JavaScript/Reference/Global_Objects/Array +tags: + - Array + - JavaScript + - NeedsTranslation + - Refer + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Array +--- +

{{JSRef("Global_Objects", "Array")}}

+ +

Sumário

+ +

O objeto Array do JavaScript é um objeto global usado na construção de 'arrays': objetos de alto nível semelhantes a listas.

+ +

Criando um Array

+ +
var frutas = ['Maçã', 'Banana'];
+
+console.log(frutas.length);
+// 2
+
+ +

Acessar um item (index) do Array

+ +
var primeiro = frutas[0];
+// Maçã
+
+var ultimo = frutas[frutas.length - 1];
+// Banana
+ +

Iterar um Array

+ +
frutas.forEach(function (item, indice, array) {
+  console.log(item, indice);
+});
+// Maçã 0
+// Banana 1
+ +

Adicionar um item ao final do Array

+ +
var adicionar = frutas.push('Laranja');
+// ['Maçã', 'Banana', 'Laranja']
+ +

Remover um item do final do Array

+ +
var ultimo = frutas.pop(); // remove Laranja (do final)
+// ['Maçã', 'Banana'];
+ +

Remover do início do Array

+ +
var primeiro = frutas.shift(); // remove Maçã do início
+// ['Banana'];
+ +

Adicionar ao início do Array

+ +
var adicionar = frutas.unshift('Morango') // adiciona ao início
+// ['Morango', 'Banana'];
+ +

Procurar o índice de um item na Array

+ +
frutas.push('Manga');
+// ['Morango', 'Banana', 'Manga']
+
+var pos = frutas.indexOf('Banana');
+// 1
+ +

Remover um item pela posição do índice

+ +
var removedItem = frutas.splice(pos, 1); // é assim que se remove um item
+// ['Morango', 'Manga']
+ +

Remover itens de uma posição de índice

+ +
var vegetais = ['Repolho', 'Nabo', 'Rabanete', 'Cenoura'];
+console.log(vegetais);
+// ['Repolho', 'Nabo', 'Rabanete', 'Cenoura']
+
+var pos = 1, n = 2;
+
+var itensRemovidos = vegetais.splice(pos, n);
+// Isso é como se faz para remover itens, n define o número de itens a se remover,
+// a partir da posição (pos) em direção ao fim da array.
+
+console.log(vegetais);
+// ['Repolho', 'Cenoura'] (o array original é alterado)
+
+console.log(itensRemovidos);
+// ['Nabo', 'Rabanete']
+ +

Copiar um Array

+ +
var copiar = frutas.slice(); // é assim que se copia
+// ['Morango', 'Manga']
+ +

 

+ +

Sintaxe

+ +
[element0, element1, ..., elementN]
+new Array(element0, element1, ..., elementN)
+new Array(arrayLength)
+
+ +
+
element0, element1, ..., elementN
+
Um array JavaScript é inicializado com os elementos contém,  exceto no caso onde um único argumento é passado para o construtor do Array e esse argumento é um número (veja o parâmetro arrayLength abaixo).  Esse caso especial só se aplica para os arrays JavaScript criados com o construtor Array , e não para literais de array criados com a sintaxe de colchetes [].
+
arrayLength
+
Se o único argumento passado para o construtor do Array for um número inteiro entre 0 and 232-1 (inclusive), um novo array com o tamanho desse número é retornado. Se o argumento for qualquer outro número, uma exceção RangeError é lançada.
+
+ +

Descrição

+ +

Arrays são objetos semelhantes a listas que vêm com uma série de  métodos embutidos para realizar operações de travessia e mutação. Nem o tamanho de um array JavaScript nem os tipos de elementos são fixos. Já que  o tamanho de um array pode ser alterado a qualquer momento e os dados podem ser armazenados em posições não contíguas, arrays JavaScript não tem a garantia de serem densos; isso depende de como o programador escolhe usá-los. De uma maneira geral, essas são características convenientes, mas, se esses recursos não são desejáveis para o seu caso em particular, você pode considerar usar arrays tipados.

+ +

Arrays não podem usar strings como índices (como em um array associativo), devem ser usados números inteiros. Definir ou acessar não-inteiros usando notação de colchetes (ou notação de ponto) não vai definir ou recuperar um elemento do array em si, mas sim definir ou acessar uma variável associada com a coleção de propriedades de objeto daquele array. As propriedades de objeto do array e a lista de elementos do array são separados, e as operações de travessia e mutação não podem ser aplicadas a essas propriedades nomeadas.

+ +

Accessando elementos de um array 

+ +

Arrays JavaScript começam com índice zero: o primeiro elemento de um array está na posição 0 e o último elemento está na  posição equivalente ao valor da propriedade length (tamanho) menos 1.

+ +
var arr = ['este é o primeiro elemento', 'este é o segundo elemento'];
+console.log(arr[0]);              // exibe 'este é o primeiro elemento'
+console.log(arr[1]);              // exibe 'este é o segundo elemento'
+console.log(arr[arr.length - 1]); // exibe 'este é o segundo elemento'
+
+ +

Elementos de um array são somente propriedades de objetos, da forma que toString é uma propriedade. Contudo, note que tentando acessar o primeiro elemento de um array da seguinte forma causará um erro de sintaxe, pois o nome da propriedade é inválido:

+ +
console.log(arr.0); // um erro de sintaxe
+
+ +

Não há nada de especial a respeito de arrays JavaScript e suas propriedades que causam isso. As propriedades JavaScript que começam com um dígito não podem ser referenciadas com notação de ponto. Elas necesitam usar notação de colchetes para poderem ser acessadas. Por exemplo, se você tivesse um objeto com a propriedade "3d", também teria que ser referenciá-la usando notação de colchetes. Por exemplo:

+ +
var anos = [1950, 1960, 1970, 1980, 1990, 2000, 2010];
+console.log(anos.0); // um erro de sintaxe
+console.log(anos[0]); // funciona corretamente
+
+ +
renderer.3d.setTexture(model, 'personagem.png'); // um erro de sintaxe
+renderer['3d'].setTexture(model, 'personagem.png'); //funciona corretamente
+
+ +

Note que no exemplo 3d, '3d' teve de ser colocado entre aspas. É possivel também colocar entre aspas os índices de arrays JavaScript (ou seja, years['2'] ao invés de years[2]), contudo isto não é necessário. O valor 2 em years[2] eventualmente será convertido a uma string pela engine do JavaScript  através de uma conversão explicita com o método toString. E é por esta razão que  '2' e '02' irão referenciar dois slots diferentes no objeto anos e o seguinte exemplo pode ser true:

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

De forma similar, propriedades de objeto que sejam palavras reservadas(!) só podem ser acessadas como strings em notação de colchetes:

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

Relação entre length e propriedades numéricas

+ +

As propriedades length e numéricas de um array Javascript são conectadas. Varios dos métodos javascript pré-definidos (por exemplo, join, slice, indexOf etc.) levam em conta o valor da propriedade length de um array quando eles são chamados. Outros métodos (por exemplo, push, splice etc.) também resultam em uma atualização na propriedade length do array.

+ +
var frutas = [];
+frutas.push('banana', 'maça', 'pêssego');
+
+console.log(frutas.length); // 3
+ +

Quando configurar uma propriedade num array Javascript em que a propriedade é um índice valido do array e este índice está fora do atual limite do array, o array irá crescer para um tamanho grande o suficiente para acomodar o elemento neste índice, e a engine irá atualizar a propriedade length do array de acordo com isto:

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

Configurar a propriedade length diretamente, também resulta em um comportamento especial:

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

Diminuir o valor de length, entretanto, apaga elementos:

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

Criando um array usando o resultado de uma comparação

+ +

O resultado de uma comparação entre uma expressão regular e uma string pode criar um array Javascript. Este array tem propriedades e elementos que disponibilizam informações sobre a comparação. Esse array é o valor de retorno dos métodos {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}}, e {{jsxref("String.replace")}}. Para explicar melhor sobre estas propriedades e elementos, veja o seguinte exemplo e então consulte a tabela abaixo:

+ +
// Encontra um d seguido por um ou mais b's seguido por um d
+// Salva os b's encontrados e o d seguinte
+// Ignora caixa (maiúscula/minúscula)
+
+var minhaRegex = /d(b+)(d)/i;
+var meuArray = minhaRegex.exec('cdbBdbsbz');
+
+ +

As propriedades e elementos retornados desta comparação são os seguintes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Propriedade/ElementoDescriçãoExemplo
input +

Uma propriedade somente-leitura que reflete a string original a qual a expressão regular foi comparada.

+
cdbBdbsbz
indexUma propriedade somente-leitura que é o índice baseado em zero da comparação na string.1
[0]Um elemento somente-leitura que especifica os ultimos caracteres que foram encontrados.dbBd
[1], ...[n]Elementos somente-leitura que especificam as substrings de comparações entre parênteses encontradas, se incluidas na expressão regular. O número de possíveis substrings entre parenteses é ilimitado.[1]: bB
+ [2]: d
+ +

Propriedades

+ +
+
Array.length
+
Propriedade comprimento do construtor Array, cujo valor é 1.
+
{{jsxref("Array.@@species", "get Array[@@species]")}}
+
A função de construtor que é utilizada para criar objetos derivados.
+
+ +
+
{{jsxref("Array.prototype")}}
+
Permite a adição de propriedades para todos os objetos array.
+
+ +

Métodos

+ +
+
+
{{jsxref("Array.from()")}}
+
Cria uma nova instância de Array a partir de um objeto semelhante ou iterável.
+
{{jsxref("Array.isArray()")}}
+
Retorna true se a variável é um array e false caso contrário.
+
{{jsxref("Array.of()")}}
+
Cria uma nova instância de Array com um número variável de argumentos, independentemente do número ou tipo dos argumentos.
+
+
+ +
 
+ +

Instâncias de Array

+ +

Todas as instâncias de Array herdam de Array.prototype.  O protótipo do construtor Array pode ser modificado de forma a afetar todas as instâncias de Array.

+ +

Propriedades

+ +
{{ page('/pt-BR/docs/JavaScript/Reference/Global_Objects/Array/prototype', 'Properties') }}
+ +

Métodos

+ +

Métodos modificadores

+ +
{{ page('/pt-BR/docs/JavaScript/Reference/Global_Objects/Array/prototype', 'Mutator_methods') }}
+ +

Métodos de acesso

+ +
{{ page('/pt-BR/docs/JavaScript/Reference/Global_Objects/Array/prototype', 'Accessor_methods') }}
+ +

Métodos de iteração

+ +
{{ page('/pt-BR/docs/JavaScript/Reference/Global_Objects/Array/prototype', 'Iteration_methods') }}
+ +

Métodos genéricos de Array

+ +
+

Métodos genéricos de arrays não seguem o padrão, são obsoletos e serão removidos em breve.

+
+ +

Algumas vezes você poderá querer aplicar métodos de arrays para strings ou outros objetos parecidos com arrays (como em argumentos de funções). Ao fazer isto, você trata uma string como um array de caracteres (ou em outros casos onde trata-se não-arrays como um array).  Por exemplo,  para checar se cada caractere em uma varivável str é uma letra, você poderia escrever:

+ +
function isLetter(character) {
+  return (character >= "a" && character <= "z");
+}
+
+if (Array.prototype.every.call(str, isLetter))
+  alert("A string '" + str + "' contém somente letras!");
+
+ +

Esta notação é um pouco despendiosa e o JavaScript 1.6 introduziu a seguinte abreviação genérica:

+ +
if (Array.every(isLetter, str))
+  alert("A string '" + str + "' contém somente letras!");
+
+ +

Generics também estão disponíveis em String.

+ +

Estes não são atualmente parte dos padrões ECMAScript (através do ES2015 Array.from() pode se conseguir isto). A seguir segue uma adaptação para permitir o uso em todos os navegadores:

+ +
/*globals define*/
+// Assumes Array extras already present (one may use shims for these as well)
+(function () {
+    'use strict';
+
+    var i,
+        // We could also build the array of methods with the following, but the
+        //   getOwnPropertyNames() method is non-shimable:
+        // 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', 'isArray'
+        ],
+        methodCount = methods.length,
+        assignArrayGeneric = function (methodName) {
+            var method = Array.prototype[methodName];
+            Array[methodName] = function (arg1) {
+                return method.apply(arg1, Array.prototype.slice.call(arguments, 1));
+            };
+        };
+
+    for (i = 0; i < methodCount; i++) {
+        assignArrayGeneric(methods[i]);
+    }
+}());
+ +

Exemplos

+ +

Exemplo: Criando um array

+ +

O exemplo a seguir cria um array, msgArray, com length 0, então atribui valores para msgArray[0] e msgArray[99], trocando o length do array para 100.

+ +
var msgArray = new Array();
+msgArray[0] = "Hello";
+msgArray[99] = "world";
+
+if (msgArray.length == 100)
+   print("O length é 100.");
+
+ +

Exemplo: Criando um array bi-dimensional

+ +

O exemplo a seguir cria um tabuleiro de xadrez usando dois arrays bi-dimensionais de string. A primeira jogada é feita copiando o 'p' em 6,4 para 4,4.  A posição antiga de 6,4 é colocada em branco.

+ +
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']];
+print(board.join('\n') + '\n\n');
+
+// Fazendo o King's Pawn avançar 2
+board[4][4] = board[6][4];
+board[6][4] = ' ';
+print(board.join('\n'));
+
+ +

Saída:

+ +
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
+
+ +

Utilizando um array para tabular um conjunto de valores

+ +
values = [];
+for (var x = 0; x < 10; x++){
+ values.push([
+  2 ** x,
+  2 * x ** 2
+ ])
+};
+console.table(values)
+ +

Saída:

+ +
0	1	0
+1	2	2
+2	4	8
+3	8	18
+4	16	32
+5	32	50
+6	64	72
+7	128	98
+8	256	128
+9	512	162
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial
{{SpecName('ES5.1', '#sec-15.4', 'Array')}}{{Spec2('ES5.1')}}Novos metodos adicionados: {{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')}}Novos metodos adicionados: {{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('ESDraft', '#sec-array-objects', 'Array')}}{{Spec2('ESDraft')}}Novo metodo adicionado: {{jsxref("Array.prototype.includes()")}}
+ +

Compatibilidade com os navegadores

+ +

{{ CompatibilityTable }}

+ +
+ + + + + + + + + + + + + + + + + + + +
ConfiguraçãoChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Suporte básico{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
ConfiguraçãoAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}{{ CompatVersionUnknown }}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/indexof/index.html b/files/pt-br/web/javascript/reference/global_objects/array/indexof/index.html new file mode 100644 index 0000000000..1cb6328be8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/indexof/index.html @@ -0,0 +1,186 @@ +--- +title: Array.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf +tags: + - Array + - JavaScript + - Método(2) + - Prototype + - Referência(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf +--- +
{{JSRef}}
+ +
O método indexOf() retorna o primeiro índice em que o elemento pode ser encontrado no array, retorna -1 caso o mesmo não esteja presente.
+ +

Sintaxe

+ +
array.indexOf(elementoDePesquisa, [pontoInicial = 0])
+ +

Parâmetros

+ +
+
elementoDePesquisa
+
Elemento a ser pesquisado no array.
+
pontoInicial
+
O índice para iniciar a procura. Se o índice for maior ou igual ao tamanho do array, é retornado -1 e signfica que o item não será procurado. Se o pontoInicial é fornecido com um número negativo,  é tomado como deslocamento da extremidade do array. Nota: se o pontoInicial fornecido é negativo, a procura no array acontece de frente para trás. Se o pontoInicial fornecido é 0, então o array inteiro será pesquisado. Padrão: 0 (pesquisa em todo array).
+
+ +

Descrição

+ +

indexOf() compara o  elementoDePesquisa com os elementos do Array usando igualdade estrita (o mesmo método usado pelo ===, ou triple-equals operator). 

+ +

Exemplos

+ +

Usando indexOf()

+ +

O exemplo seguinte usa indexOf() para localizar valores em um array

+ +
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
+
+ +

Encontrar todas as ocorrências de um elemento

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

Encontrar se um elemento existe ou não e atualizar o array

+ +
function atualizarColecaoVegetais (vegetais, vegetal) {
+    if (vegetais.indexOf(vegetal) === -1) {
+        vegetais.push(vegetal);
+        console.log('Nova coleção de vegetais é : ' + vegetais);
+    } else if (vegetais.indexOf(vegetal) > -1) {
+        console.log(vegetal + ' já existe na coleção de vegetais.');
+    }
+}
+
+var vegetais = ['batata', 'tomate', 'pimenta', 'pimentao'];
+
+atualizarColecaoVegetais(vegetais, 'espinafre');
+// Nova coleção de vegatais é : batata,tomate,pimenta,pimentao,espinafre
+atualizarColecaoVegetais(vegetais, 'espinafre');
+// espinafre já existe na coleção de vegetais.
+
+ +

Polyfill

+ +

indexOf() foi adicionado ao ECMA-262 standard em sua 5 edição; como tal, não pode estar presente em todos navegadores.Você pode contornar isso utilizando o seguinte codigo no inicio de seus scripts. Isto permitirá que voce use o indexOf() quando não possuir suporte nativo. Esse algoritmo corresponde ao especificado no ECMA-262, edição 5, assumindo {{jsxref("Global_Objects/TypeError", "TypeError")}} e {{jsxref("Math.abs()")}} tem seus valores originais.

+ +
// Passos para a produção do ECMA-262, Edition 5, 15.4.4.14
+// Referência: http://es5.github.io/#x15.4.4.14
+if (!Array.prototype.indexOf) {
+  Array.prototype.indexOf = function(elementoDePesquisa, pontoInicial) {
+
+    var k;
+
+    //1. Deixe-o ser o resultado da chamada de toObject
+    // passando o valor de this como argumento.
+    if (this == null) {
+      throw new TypeError('"this" é nulo (null) ou não foi definido (undefined)');
+    }
+
+    var O = Object(this);
+
+    // 2. Deixar o tamanhoValor ser o resultado da
+    // chamada do método interno Get de 0 com o
+    // argumento "length"
+    // 3. Deixar o  tamanhoValor ser um ToUint32(tamanhoValor).
+    var tamanho = O.length >>> 0;
+
+    // 4. se o tamanho é 0, retorna -1.
+    if (tamanho === 0) {
+      return -1;
+    }
+
+    // 5. Se o argumento pontoInicial for passado,
+    // use o ToInteger(pontoInicial); senao use 0.
+    var n = + pontoInicial || 0;
+
+    if (Math.abs(n) === Infinity) {
+      n = 0;
+    }
+
+    //6. Se n >= tamanho, retorna -1.
+    if (n >= tamanho) {
+      return -1;
+    }
+
+    // 7. Se n>= 0, entao k seja n.
+    // 8. Senao, n<0, k seja tamanho - abs(n).
+    // Se k é menor que 0, entao k seja 0.
+    k = Math.max(n >= 0 ? n : tamanho - Math.abs(n), 0);
+
+    // 9. Repita, enquanto k < tamanho
+    while (k < tamanho) {
+      // a. Deixe Pk ser ToString(k).
+      //    isto é implicito para operandos LHS de um operador
+
+      // b. Deixe o kPresent  ser o resultado da chamada do método
+      //    interno de 0 com argumento Pk
+      //    Este passo pode ser combinado com c.
+      // c. Se kPresent é true, entao
+      //    i.  Deixe o  elementK ser o resultado da chamada do metodo
+      //        interno Get de 0 com argumento ToString(k)
+      //   ii.  Deixe o resultado ser aplicado pelo Algoritmo de
+      //        Comparação de Igualdade Estrita (Strict Equality Comparison)
+      //        para o elementoDePesquisa e elementK
+      //  iii.  caso verdadeiro, retorne k.
+      if (k in O && O[k] === elementoDePesquisa) {
+        return k;
+      }
+      k++;
+    }
+    return -1;
+  };
+}
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}{{Spec2('ES5.1')}} +

Definição inicial implementada no Javascript 1.6.

+
{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}{{Spec2('ES6')}}
+ +

Compatibilidade entre Navegadores

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/isarray/index.html b/files/pt-br/web/javascript/reference/global_objects/array/isarray/index.html new file mode 100644 index 0000000000..328790b8e9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/isarray/index.html @@ -0,0 +1,141 @@ +--- +title: Array.isArray() +slug: Web/JavaScript/Reference/Global_Objects/Array/isArray +translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Sumário

+ +

O método Array.isArray() retorna true se um objeto é uma array, e false se não é.

+ +

Sintaxe

+ +
Array.isArray(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto a ser verificado.
+
+ +

Descrição

+ +

Se o objeto é um {{jsxref("Array")}}, retorna true(verdadeiro), caso contrário é retornado false(falso).

+ +

Veja o artigo “Determinando com absoluta precisão se um objeto em Javascript é ou não uma array” para mais detalhes.

+ +

Exemplos

+ +
// todas as chamadas conseguintes retornam true
+Array.isArray([]);
+Array.isArray([1]);
+Array.isArray(new Array());
+// Pequeno detalhe: Array.prototype por si só é uma array:
+Array.isArray(Array.prototype);
+
+// todas as conseguintes retornam 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 });
+
+ +

Polyfill

+ +

Executando o seguinte código antes de qualquer outro, o método Array.isArray() será criado, caso o browser não o disponibilize nativamente.

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

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}{{Spec2('ES5.1')}}Definição Inicial. Implementado em JavaScript 1.8.5.
{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}{{Spec2('ES6')}} 
+ +

Compatibilidade com o Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("2.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Baseado na Tabela de Compatibilidade de Kangax.

+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/join/index.html b/files/pt-br/web/javascript/reference/global_objects/array/join/index.html new file mode 100644 index 0000000000..703cc76de0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/join/index.html @@ -0,0 +1,108 @@ +--- +title: Array.prototype.join() +slug: Web/JavaScript/Reference/Global_Objects/Array/join +translation_of: Web/JavaScript/Reference/Global_Objects/Array/join +--- +
{{JSRef}}
+ +
O método join() junta todos os elementos de um array (ou um array-like object) em uma string e retorna esta string.
+ +

Sintaxe

+ +
arr.join([separador = ','])
+ +

Parâmetros

+ +
+
separador {{optional_inline}}
+
Específica uma string para separar cada elemento adjacente do array. O separador é convertido em uma string se necessário. Se omitido, os elementos do array são separados com uma vírgula (","). Se o separador for uma string vazia, todos os elementos são juntados sem nenhum caracter entre eles.
+
+ +

Valor de retorno

+ +
+
Uma string com todos os elementos do array juntos. Se arr.length é 0, uma string vazia é retornada.
+
+ +

Descrição

+ +

As conversões em string de todos os elementos de um array são juntados em apenas uma string.

+ +
+

Obs: Se um elemento é undefined ou null, ele é convertido em uma string vazia.

+
+ +

Exemplos

+ +

Juntando um array de quatro formas diferentes

+ +

O exemplo interativo a seguir cria um array, a, com três elementos, e o junta três vezes: a primeira com virgulas, a segunda so junta os elementos e a terceira com um sinal de menos.

+ +

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

+ + + + + +

Juntando um array-like object (objeto estilo-array)

+ +

O exemplo abaixo junta um array-like object (ex: o objeto arguments), chamando {{jsxref("Function.prototype.call")}} no 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);
+//saida esperada: "1,a,true"
+ + + +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado em 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')}}
+ +

Compatibilidade com o Browser

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

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/keys/index.html b/files/pt-br/web/javascript/reference/global_objects/array/keys/index.html new file mode 100644 index 0000000000..99a61b896a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/keys/index.html @@ -0,0 +1,115 @@ +--- +title: Array.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Array/keys +tags: + - Iteração + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Sumário

+ +

O método keys() retorna um novo Array Iterator que contém as chaves para cada index do array.

+ +

Sintaxe

+ +
arr.keys()
+ +

Exemplos

+ +

Exemplo: uso básico

+ +
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 }
+
+ +

Exemplo: keys iterator não ignora lacunas

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

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.keys', 'Array.prototype.keys')}}{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatChrome("38")}}{{CompatGeckoDesktop("28")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("28")}}{{CompatNo}}{{CompatNo}}iOS 8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/pt-br/web/javascript/reference/global_objects/array/lastindexof/index.html new file mode 100644 index 0000000000..0dc189d7f1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/lastindexof/index.html @@ -0,0 +1,184 @@ +--- +title: Array.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +--- +
{{JSRef}}
+ +

O método lastIndexOf() retorna o ultimo índice que um certo elemento pode ser encontrado no array, ou -1 se o elemento não estiver presente. O array é pesquisado de trás para frente, começando pelo fromIndex.

+ +

Sintaxe

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

Parâmetros

+ +
+
searchElement
+
Elemento para ser localizado no array.
+
fromIndex
+
Opcional. O índice ao qual a busca será iniciada de traz para frente. O valor padrão é o tamanho total do array menos um (array.length -1), ou seja, todo o array será pesquisado. Se o índice for maior ou igual ao tamanho do array, o array inteiro será pesquisado. Se for negativo, ele é tomado como deslocamento no final do array. Note que mesmo se o índice for negativo, o array ainda será pesquisado de traz para frente. Se o índice calculado for menor que 0, -1 será retornado, ou seja, o array não será pesquisado.
+
+ +

Descrição

+ +

lastIndexOf compara searchElement a elementos do Array usando igualdade rigorosa (o mesmo método usado pelo operador ===, ou "igual triplo").

+ +

Exemplos

+ +

Examplo: Usando lastIndexOf

+ +

O seguinte exemplo utiliza lastIndexOf para localizar elementos em um array.

+ +
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
+
+ +

Exemplo: Encontrando todas as ocorrências de um elemento

+ +

O seguinte exemplo utiliza lastIndexOf para encontrar todos os índices de um elemento em um dado array, utilizando {{jsxref("Array.prototype.push", "push")}} para adicioná-los em outro array quando são encontrados.

+ +
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]
+
+ +

Note que devemos tratar o caso idx == 0 separadamente aqui pois o elemento será sempre encontrado independente do parâmetro fromIndex se ele for o primeiro elemento do array. Isso é diferente do método {{jsxref("Array.prototype.indexOf", "indexOf")}}.

+ +

Polyfill

+ +

lastIndexOf foi adicionado ao padrão ECMA-262 na 5ª edição; devido a isso, não deve estar presente em outras implementações do padrão. Você pode contornar isso inserindo o seguinte código no início dos seus scripts, permitindo o uso de lastIndexOf em implementações que não o suportam nativamente. Esse algorítimo é exatamente o mesmo especificado no padrão ECMA-262, 5ª edição, assumindo que {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, {{jsxref("Global_Objects/Number", "Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, e {{jsxref("Math.min")}} possuem seus valores originais.

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.15
+// Reference: http://es5.github.io/#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;
+  };
+}
+
+ +

Novamente, perceba que essa implementação foca na absoluta compatibilidade com lastIndexOf no Firefox e no motor JavaScript SpiderMonkey, incluíndo vários casos que são, indiscutivelmente, extremos. Se você pretende usar isso em aplicações reais, é possível calcular from com um código menos complicado se você ignorar esses casos.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/length/index.html b/files/pt-br/web/javascript/reference/global_objects/array/length/index.html new file mode 100644 index 0000000000..a03b16502c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/length/index.html @@ -0,0 +1,128 @@ +--- +title: Array.prototype.length +slug: Web/JavaScript/Reference/Global_Objects/Array/length +translation_of: Web/JavaScript/Reference/Global_Objects/Array/length +--- +
{{JSRef}}
+ +

A propriedade length representa um inteiro de 32-bit sem sinal, que especifíca o número de elementos em um array.

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

Sintaxe

+ +
arr.length
+ +

Descrição

+ +

O valor da propriedade length é um inteiro com um sinal positivo e valor menor que 2 elevado na 32ª potência(232).

+ +

Você pode setar o a propriedade length para truncar um array a qualquer momento. Quando você extende um array mudando sua propriedade length, o numero de elementos atuais não é incrementado; por exemplo, se você setar o tamanho para 3 quando ele é atualmente 2, o array continua somente com 2 elementos. Assim, a propriedade length não diz nada sobre o tamanho de valores definidos no array. Veja também Relacionamento entre length e propriedades numéricas.

+ +

Exemplos

+ +

Iterando sobre um array

+ +

No exemplo a seguir numbers é iterado considerando a propriedade length para ver quantos elementos ele tem. O valor de cada elemento recebe então o dobro.

+ +
var numbers = [1, 2, 3, 4, 5];
+
+for (var i = 0; i < numbers.length; i++) {
+  numbers[i] *= 2;
+}
+// numbers is now [2, 4, 6, 8, 10]
+
+ +

Encurtando um array

+ +

O exemplo a seguir encurta o array  statesUS para um tamanho de 50 se o tamanho corrente for maior do que 50.

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

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition.
{{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')}} 
+ +

Compatibilidade de Browser

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/map/index.html b/files/pt-br/web/javascript/reference/global_objects/array/map/index.html new file mode 100644 index 0000000000..278e9ba6a4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/map/index.html @@ -0,0 +1,255 @@ +--- +title: Array.prototype.map() +slug: Web/JavaScript/Reference/Global_Objects/Array/map +translation_of: Web/JavaScript/Reference/Global_Objects/Array/map +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Resumo

+ +

O método map() invoca a função callback passada por argumento para cada elemento do Array e devolve um novo Array como resultado.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função cujo retorno produz o elemento do novo Array. Recebe três argumentos: +
+
valorAtual
+
O valor do elemento original do Array de origem. 
+
indice
+
O índice do elemento atual que está sendo processado no array.
+
array
+
O Array de origem.
+
+
+
thisArg
+
Opcional. Valor a ser utilizado como o this no momento da execução da função callback.
+
+ +

Descrição

+ +

O método map chama a função callback recebida por parâmetro para cada elemento do Array original, em ordem, e constrói um novo array com base nos retornos de cada chamada. A função callback é chamada apenas para os elementos do array original que tiverem valores atribuídos; os elementos que estiverem como undefined, que tiverem sido removidos ou os que nunca tiveram valores atribuídos não serão considerados.

+ +

A função callback é chamada com três argumentos: o valor do elemento corrente, o índice do elemento corrente e o array original que está sendo percorrido.

+ +

Se o parametro thisArg foi passado para o método map, ele será repassado para a função callback no momento da invocação para ser utilizado como o this. Caso contrário, o valor {{jsxref("Global_Objects/undefined", "undefined")}} será repassado para uso como o this. O valor do this a ser repassado para o callback deve respeitar as regras para determinar como o this é acessado por uma função (em inglês).

+ +

O método map não modifica o array original. No entanto, a função callback invocada por ele pode fazê-lo.

+ +

A lista de elementos que serão processados pelo map é montada antes da primeira invocação à função callback. Se um elemento for acrescentado ao array original após a chamada ao map, ele não será visível para o callback. Se os elementos existentes forem modificados, os valores que serão repassados serão os do momento em que o método map invocar o callback. Elementos removidos não serão visitados.

+ +

Exemplos

+ +

Exemplo: Mapeando um array de números para um array de raízes quadradas

+ +

O código a seguir mapeia um array de números e cria um novo array contendo o valor da raiz quadrada de cada número do primeiro array.

+ +
var numbers = [1, 4, 9];
+var roots = numbers.map(Math.sqrt);
+// roots é [1, 2, 3], numbers ainda é [1, 4, 9]
+
+ +

Exemplo: Mapeando um array de números usando uma função callback que contém um argumento

+ +

O código a seguir mostrar como o método map funciona quando a função callback possui apenas um argumento. Esse argumento será automaticamente atribuído para cada elemento do array conforme o map itera sobre o array original.

+ +
var numbers = [1, 4, 9];
+var doubles = numbers.map(function(num) {
+  return num * 2;
+});
+// doubles é agora [2, 8, 18]. numbers ainda é [1, 4, 9]
+
+ +

Exemplo: usando map genericamente

+ +

Esse exemplo demonstra como usar o map em um {{jsxref("Global_Objects/String", "String")}} para recuperar a representação em ASCII de cada caracter em um array de bytes:

+ +
var map = Array.prototype.map;
+var a = map.call('Hello World', function(x) { return x.charCodeAt(0); });
+// a agora vale [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
+
+ +

Exemplo: usando map genericamente com querySelectorAll

+ +

Esse exemplo demonstra como iterar sobre uma coleção de objetos recuperada através de querySelectorAll. Nesse caso, vamos pegar todos os options selecionados na tela e imprimir no console:

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

Exemplo: Usando map para inverter uma string

+ +
var str = '12345';
+[].map.call(str, function(x) {
+  return x;
+}).reverse().join('');
+
+// Output: '54321'
+// Bonus: utilize '===' para verificar se a string original e a nova string são palíndromos
+
+ +

Exemplo: Caso de uso mais complexo

+ +

(inspirado nesse post) (em inglês)

+ +

É uma prática comum utilizar o callback com apenas um argumento (o elemento atual do array original). Algumas funções também são comumente utilizadas com um argumento, mesmo tendo argumentos adicionais opcionais. Esses hábitos podem resultar em comportamentos indesejado:

+ +
// Considere:
+['1', '2', '3'].map(parseInt);
+// Enquanto era de se esperar [1, 2, 3]
+// O resultado atual é [1, NaN, NaN]
+
+// parseInt é normalmente usado com apenas um argumento, mas ele possui dois.
+// O primeiro é uma expressão, e o segundo o radical.
+// Para a função callback, o Array.prototype.map repassa 3 argumentos:
+// o elemento corrente, o indice e o array original
+// O terceiro argumento é ignorado pelo parseInt, mas o segundo não, o que certamente gerou o comportamento inesperado. Veja o post para maiores detalhes
+
+function returnInt(element) {
+  return parseInt(element, 10);
+}
+
+['1', '2', '3'].map(returnInt); // [1, 2, 3]
+// O resultado atual é um array de números (como esperado)
+
+// Bonus: Um jeito mais simples de conseguir o mesmo resultado sem nenhuma "pegadinha do Malandro":
+['1', '2', '3'].map(Number); // [1, 2, 3]
+
+ +

Polyfill

+ +

(veja definição em Polyfill)

+ +

O método map foi introduzido ao padrão ECMA-262 na sua 5ª edição, o que significa que ele pode não estar presente em todas as implementações desse padrão. Você pode contornar esse problema inserindo o código a seguir no início dos seus scripts, permitindo o uso do map mesmo que ele não esteja sendo suportado nativamente. Esse algoritmo é exatamente o especificado no ECMA-262 5ª edição, assumindo que {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, e {{jsxref("Global_Objects/Array", "Array")}} tenham seus valores originais, e que callback.call avalie para o valor original de {{jsxref("Function.prototype.call")}}.

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.19
+// Reference: http://es5.github.io/#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. Let O be the result of calling ToObject passing the |this|
+    //    value as the argument.
+    var O = Object(this);
+
+    // 2. Let lenValue be the result of calling the Get internal
+    //    method of O with the argument "length".
+    // 3. Let len be ToUint32(lenValue).
+    var len = O.length >>> 0;
+
+    // 4. If IsCallable(callback) is false, throw a TypeError exception.
+    // See: http://es5.github.com/#x9.11
+    if (typeof callback !== 'function') {
+      throw new TypeError(callback + ' is not a function');
+    }
+
+    // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+    if (arguments.length > 1) {
+      T = thisArg;
+    }
+
+    // 6. Let A be a new array created as if by the expression new Array(len)
+    //    where Array is the standard built-in constructor with that name and
+    //    len is the value of len.
+    A = new Array(len);
+
+    // 7. Let k be 0
+    k = 0;
+
+    // 8. Repeat, while k < len
+    while (k < len) {
+
+      var kValue, mappedValue;
+
+      // a. Let Pk be ToString(k).
+      //   This is implicit for LHS operands of the in operator
+      // b. Let kPresent be the result of calling the HasProperty internal
+      //    method of O with argument Pk.
+      //   This step can be combined with c
+      // c. If kPresent is true, then
+      if (k in O) {
+
+        // i. Let kValue be the result of calling the Get internal
+        //    method of O with argument Pk.
+        kValue = O[k];
+
+        // ii. Let mappedValue be the result of calling the Call internal
+        //     method of callback with T as the this value and argument
+        //     list containing kValue, k, and O.
+        mappedValue = callback.call(T, kValue, k, O);
+
+        // iii. Call the DefineOwnProperty internal method of A with arguments
+        // Pk, Property Descriptor
+        // { Value: mappedValue,
+        //   Writable: true,
+        //   Enumerable: true,
+        //   Configurable: true },
+        // and false.
+
+        // In browsers that support Object.defineProperty, use the following:
+        // Object.defineProperty(A, k, {
+        //   value: mappedValue,
+        //   writable: true,
+        //   enumerable: true,
+        //   configurable: true
+        // });
+
+        // For best browser support, use the following:
+        A[k] = mappedValue;
+      }
+      // d. Increase k by 1.
+      k++;
+    }
+
+    // 9. return A
+    return A;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}{{Spec2('ES5.1')}}Definição inicial implementada no JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}{{Spec2('ES6')}}
+ +

Compatibilidade com os browsers

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html b/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html new file mode 100644 index 0000000000..d1b06c5ecf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/observe/index.html @@ -0,0 +1,128 @@ +--- +title: Array.observe() +slug: Web/JavaScript/Reference/Global_Objects/Array/observe +translation_of: Archive/Web/JavaScript/Array.observe +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método Array.observe() é usado para observar mudanças de forma assíncrona em Arrays, de forma similar ao método {{jsxref("Object.observe()")}} para objetos. O método fornece um conjunto de mudanças em ordem de ocorrência. É equivalente ao método Object.observe() invocado com a lista aceita ["add", "update", "delete", "splice"].

+ +

Sintaxe

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

Parâmetros

+ +
+
arr
+
O array a ser observado.
+
callback
+
A função chamado cada vez que ocorrem mudanças, com o seguinte argumento: +
+
changes
+
Um array de objetos, sendo que cada um representa uma mudança. As propriedades destes objetos são: +
    +
  • name: O nome da propriedade que mudou.
  • +
  • object: O array modificado depois que a mudança ocorreu.
  • +
  • type: Uma string que indica o tipo de mudança que ocorreu. Pode ser "add", "update", "delete", ou "splice".
  • +
  • oldValue: Apenas para os tipos "update" e "delete". O valor antes da mudança.
  • +
  • index: Apenas para o tipo "splice". O índice no qual ocorreu a mudança.
  • +
  • removed: Apenas para o tipo "splice". Um array de elementos removidos.
  • +
  • addedCount: Apenas para o tipo "splice". O número de elementos adicionados.
  • +
+
+
+
+
+ +

Descrição

+ +

A função callback é chamada cada vez que uma mudança é feita em arr, com um array de todas as mudanças na ordem em que elas ocorreram.

+ +
+

Mudanças feitas via métodos de Array, tais como Array.prototype.pop() serão reportados como mudanças do tipo "splice". Mudanças do tipo índice que não alteram o tamanho do array podem ser reportadas como mudanças do tipo "update".

+
+ +

Exemplos

+ +

Adicionando diferentes tipos em log

+ +
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}]
+
+ +

Especificações

+ +

Strawman proposal specification.

+ +

Compatibilidade com Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/of/index.html b/files/pt-br/web/javascript/reference/global_objects/array/of/index.html new file mode 100644 index 0000000000..d7d72259cb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/of/index.html @@ -0,0 +1,108 @@ +--- +title: Array.of() +slug: Web/JavaScript/Reference/Global_Objects/Array/of +tags: + - Array + - ECMAScript6 + - JavaScript + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/of +--- +
{{JSRef}}
+ +

O método Array.of() cria um nova instância de Array com um número variável de argumentos, independentemente do número ou do tipo dos argumentos.

+ +

A diferença entre o Array.of() e o construtor de Array é no tratamento dos argumentos inteiros: Array.of(7) cria um array com um único elemento, 7, enquanto Array(7) cria um array vazio de propriedade length igual a 7 (Nota: isso quer dizer um array com 7 espaços vazios, e não com valores do tipo {{jsxref("undefined")}}).

+ +
Array.of(7);       // [7]
+Array.of(1, 2, 3); // [1, 2, 3]
+
+Array(7);          // array com 7 espaços vazios
+Array(1, 2, 3);    // [1, 2, 3]
+
+ +

Syntaxe

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

Parâmetros

+ +
+
elementN
+
Elementos usados para criar o array.
+
+

Valor de retorno

+
+
Uma nova instância de {{jsxref("Array")}}. 
+
+ +

Descrição

+ +

Esta função é parte do padrão ECMAScript 6 (ou ECMAScript 2015).

+ +

Para maiores informações veja:

+ + + +

Exemplos

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

Polyfill

+ +

Executando o seguinte código antes de qualquer outro c[odigo criará o Array.of() se ele não for disponível nativamente.

+ +
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;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.of', 'Array.of')}}{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade com os navegadores

+ +
+ + +

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

+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/pop/index.html b/files/pt-br/web/javascript/reference/global_objects/array/pop/index.html new file mode 100644 index 0000000000..6bd4c55b5e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/pop/index.html @@ -0,0 +1,81 @@ +--- +title: Array.prototype.pop() +slug: Web/JavaScript/Reference/Global_Objects/Array/pop +tags: + - Array + - JavaScript + - Pop +translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Resumo

+ +

O método pop() remove o último elemento de um array e retorna aquele elemento.

+ +

Sintaxe

+ +
arr.pop()
+ +

Descrição

+ +

O método pop remove o último elemento de um array e retorna aquele valor.

+ +

Esse método é intencionalmente genérico. Podendo ser utilizado por {{jsxref("Function.call", "call", "", 1)}} ou {{jsxref("Function.apply", "apply", "", 1)}} em objetos que implementam arrays.

+ +

Se você chamar pop() em um array vazio, ele retorna o valor {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Exemplos

+ +

Exemplo: Removendo o último elemento de um array

+ +

O código seguinte cria o array meuPeixe contendo quatro elementos e então remove seu último elemento.

+ +
var meuPeixe = ['acara-bandeira', 'palhaco', 'mandarim', 'esturjao'];
+
+console.log(meuPeixe); // ['acara-bandeira', 'palhaco', 'mandarim', 'esturjao']
+
+var meuPeixePop = meuPeixe.pop();
+
+console.log(meuPeixe); // ['acara-bandeira', 'palhaco', 'mandarim' ]
+
+console.log(meuPeixePop); // 'esturjao'
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
ECMAScript 3ª EdiçãoPadrãoDefinição inicial. Implementado no 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')}}
+ +

Compatibilidade nos Navegadores

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/array/prototype/index.html new file mode 100644 index 0000000000..e863d9cc69 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/prototype/index.html @@ -0,0 +1,206 @@ +--- +title: Array.prototype +slug: Web/JavaScript/Reference/Global_Objects/Array/prototype +tags: + - Array + - JavaScript + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype +--- +
{{JSRef}}
+ +

Descrição

+ +

Instâncias de {{jsxref("Global_Objects/Array", "Array")}} herdam de Array.prototype. Como em todos os construtores, você pode mudar o  protótipo desse construtor para modificar todas as instâncias de {{jsxref("Global_Objects/Array", "Array")}}.

+ +

Contudo, a adição de métodos não-padronizados ao objeto array pode causar problemas futuros, seja com seu próprio código, ou na adição de novas funcionalidades ao JavaScript.

+ +

Um fato pouco conhecido: O próprio Array.prototype é um {{jsxref("Global_Objects/Array", "Array")}}

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

Propriedades

+ +
+
Array.prototype.constructor
+
Especifica a função que cria um objeto do protótipo.
+  
+
{{jsxref("Array.prototype.length")}}
+
Reflete o número de elementos em um array.
+
+ +

Métodos

+ +

Métodos modificadores

+ +

Esses métodos modificam o array:

+ +
+
{{jsxref("Array.prototype.copyWithin()")}} {{experimental_inline}}
+
Copia uma sequência de elementos do array dentro do array.
+
{{jsxref("Array.prototype.fill()")}} {{experimental_inline}}
+
Preenche todos os elementos de um array com um elemento estático, começando de um índice inicial até um índice final.
+
{{jsxref("Array.prototype.pop()")}}
+
Remove e retorna o último elemento de um array.
+
{{jsxref("Array.prototype.push()")}}
+
Adiciona um ou mais elementos ao fim de um array e retorna o novo comprimeiro do array.
+
{{jsxref("Array.prototype.reverse()")}}
+
Reverte a ordem dos elementos de um array - o primeiro vira o último e o último vira o primeiro.
+
{{jsxref("Array.prototype.shift()")}}
+
Remove o primeiro elemento de um array e o retorna.
+
{{jsxref("Array.prototype.sort()")}}
+
Ordena os elementos do array em questão e retorna o array.
+
{{jsxref("Array.prototype.splice()")}}
+
Adiciona e/ou remove elementos de um array.
+
{{jsxref("Array.prototype.unshift()")}}
+
Adiciona um ou mais elementos ao início de um array e retorna o novo comprimento do array.
+
+ +

Métodos de acesso

+ +

Esses métodos não modificam o array, mas sim retornam alguma representação dele.

+ +
+
{{jsxref("Array.prototype.concat()")}}
+
Retorna um novo array formado por esse array concatenado com outro(s) array(s) e/ou valores.
+
{{jsxref("Array.prototype.contains()")}} {{experimental_inline}}
+
Verifica se o array possui cer, retornandotrue ou false apropriadamente.
+
{{jsxref("Array.prototype.join()")}}
+
Retorna uma string com todos os elementos do array
+
{{jsxref("Array.prototype.slice()")}}
+
Retorna um novo array com uma parte do array sobre o qual o método foi chamado
+
{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna um array literal representando o array especificado; você pode usar esse valor para criar um novo array. Esse método sobrescreve o método {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Array.prototype.toString()")}}
+
Retonar uma string representando o array e seus elementos. Esse método sobrescreve o método {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Array.prototype.toLocaleString()")}}
+
Retonar uma string adequada ao idioma do usuário representando o array e seus elementos. Esse método sobrescreve o método {{jsxref("Object.prototype.toLocaleString()")}}.
+
{{jsxref("Array.prototype.indexOf()")}}
+
Representa o índice da primeira ocorrência de um valor especificado no array, ou -1 se o valor não estiver incluso no array.
+
{{jsxref("Array.prototype.lastIndexOf()")}}
+
Representa o índice da última ocorrência de um valor especificado no array, ou -1 se o valor não estiver incluso no array
+
+ +

Métodos de iteração

+ +

Vários métodos tomam como funções de argumento para serem chamados de volta ao processar o array. Quando esses métodos são chamados, o `length` do array é amostrado e qualquer elemento adicionado além deste comprimento (length)  de dentro da função (callback) não é visitado. Outras alterações para o array (Definindo o valor de ou apagando um elemento) pode afetar os resultados da operação se o método visita o elemento alterado posteriormente. Enquanto o comportamento específico destes métodos nestes casos é bem definido, não se deve confiar nisso para não confundir os outros que possoam ler seu código. Em vez disso, deve-se copiar para um novo array para modificá-lo.

+ +
+
{{jsxref("Array.prototype.forEach()")}}
+
Chama a função para cada elemento no array.
+
{{jsxref("Array.prototype.entries()")}} {{experimental_inline}}
+
Retorna um novo objeto Array Iterator que contem o par chave/valor para cada índice no array.
+
{{jsxref("Array.prototype.every()")}}
+
Retorna true se todos elementos no array satisfizer a função de teste fornecida.
+
{{jsxref("Array.prototype.some()")}}
+
Retorna true se pelo menos um elemento no array satisfizer a função de teste fornecida.
+
{{jsxref("Array.prototype.filter()")}}
+
Cria um novo array com todos os elementos do array para qual a função de filtragem fornecida retorne true.
+
{{jsxref("Array.prototype.find()")}} {{experimental_inline}}
+
Retorna o valor encontrado no array, se um elemento no array satisfizer a funçào de teste fornecida ou  `undefined` se não for encontrado.
+
{{jsxref("Array.prototype.findIndex()")}} {{experimental_inline}}
+
Retorna o índice no array, se um elemento no array satisfizer a função de teste fornecida ou -1 se não for encontrado.
+
{{jsxref("Array.prototype.keys()")}} {{experimental_inline}}
+
Retorna um novo Array Iterator que contem a chave para cada índice no array.
+
{{jsxref("Array.prototype.map()")}}
+
Cria um novo array com os resultados da função fornecida chamada em cada elemento na array.
+
{{jsxref("Array.prototype.reduce()")}}
+
Aplica uma função contra um acumulador e cada valor do array (da esquerda para direita) para reduzi-los a um único valor.
+
{{jsxref("Array.prototype.reduceRight()")}}
+
Aplica uma função contra um acumulador e cada valor do array (da direita para esquerda) para reduzi-los a um único valor.
+
{{jsxref("Array.prototype.values()")}} {{experimental_inline}}
+
Retorna um novo objeto Array Iterator que contem os valores de cada índice no array.
+
{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}} {{experimental_inline}}
+
Retorna um novo objeto Array Iterator que contem os valores de cada índice no array.
+
+ +

Métodos genéricos

+ +

Vários métodos do objeto Array em Javascript foram feitos para serem aplicados genericamentes em todos os objetos que "pareçam" Arrays. Isso é, eles podem ser usados em qualquer objeto que possuam uma propriedade length (comprimento), e que possa ser usado a partir de propriedades numéricas (como índices no formato array[5]). Alguns métodos, como {{jsxref("Array.join", "join")}}, apenas lêem e as propriedades numéricas do objeto sobre o qual eles sãochamados. Outros, como {{jsxref("Array.reverse", "reverse")}}, exigem que as propriedades numéricas e length sejam mutáveis; sendo assim, esses métodos não podem ser chamados em objetos como {{jsxref("Global_Objects/String", "String")}}, que não permitem que nenhuma das duas propriedades sejam modificadas.

+ +

Especifiações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
ECMAScript 1st Edition.PadrãoDefinição inicial
{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}{{Spec2('ES6')}} 
+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

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

Resumo

+ +

O método push() adiciona um ou mais elementos ao final de um array e retorna o novo comprimento desse array.

+ +
var numeros = [1, 2, 3];
+numeros.push(4);
+
+console.log(numeros); // [1, 2, 3, 4]
+
+numeros.push(5, 6, 7);
+
+console.log(numeros); // [1, 2, 3, 4, 5, 6, 7]
+
+ +

Sintaxe

+ +
arr.push(elemento1, ..., elementoN)
+ +

Parâmetros

+ +
+
elementoN
+
Os elementos a serem incluídos ao final do array.
+
+ +

Retorno

+ +

O novo valor da propriedade {{jsxref("Array.length", "length")}} do objeto no qual o método foi chamado.

+ +

Descrição

+ +

O método push adiciona valores a um array.

+ +

Esse método é intencionalmente genérico. Podendo ser utilizado por {{jsxref("Function.call", "call()")}} ou {{jsxref("Function.apply", "apply()")}} em objetos que implementam arrays.  O método push depende da propriedade length para determinar onde começar a inserir os valores. Caso a propriedade length não possa ser convertida em número, é utilizado 0 como índice. Isto inclui a possibilidade de length não existir, nesse caso, essa propriedade será criada.

+ +

Os únicos objetos que implementam nativamente array são as {{jsxref("Global_Objects/String", "strings", "", 1)}}, porém elas não são adequadas para a aplicação desse método, pois são imutáveis.

+ +

Exemplos

+ +

Exemplo: Adicionando elementos a um array

+ +

O seguinte código cria um array esportes que contém dois elementos. Então adiciona dois elementos a ele. A variável total contém o novo comprimento do array.

+ +
var esportes = ['futebol', 'beisebol'];
+var total = esportes.push('handebol', 'natacao');
+
+console.log(esportes); // ['futebol, 'beisebol', 'handebol', 'natacao']
+console.log(total);  // 4
+
+ +

Exemplo: Fusão de dois arrays

+ +

Este exemplo utiliza {{jsxref("Function.apply", "apply()")}} para adicionar todos os elementos de um segundo array.

+ +
var vegetais = ['cenoura', 'batata'];
+var maisVegetais = ['aipo', 'beterraba'];
+
+// Adiciona o segundo array no primeiro
+// Equivalente a vegetais.push('aipo', 'beterraba');
+Array.prototype.push.apply(vegetais, maisVegetais);
+
+console.log(vegetais); // ['cenoura', 'batata', 'aipo', 'beterraba']
+ +

Exemplo: Utilizando um object como um array-like

+ +

Como mencionado acima, push é intencionalmente genérico, e podemos usar isso para nossa vantagem. Array.prototype.push pode trabalhar em um objeto muito bem, como mostra este exemplo. Observe que não criamos um array para armazenar uma coleção de objetos. Em vez disso, armazenamos a coleção no objeto em si e usamos a chamada em Array.prototype.push para enganar o método e pensar que estamos lidando com um array, e ele simplesmente funciona, graças à forma como o JavaScript nos permite estabelecer o contexto de execução quando queremos.

+ +
var obj = {
+    length: 0,
+
+    addElem: function addElem(elem) {
+        // obj.length é automaticamente incrementado
+        // toda vez que um elemento for adicionado.
+        [].push.call(this, elem);
+    }
+};
+
+// Vamos adicionar alguns objetos vazios apenas para ilustrar.
+obj.addElem({});
+obj.addElem({});
+console.log(obj.length);
+// → 2
+
+ +

Observe que, embora obj não seja um array, o método push aumentou com sucesso a propriedade de comprimento (length) do obj como se estivéssemos lidando com um array.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
ECMAScript 3ª EdiçãoPadrãoImplementação inicial. Implentado no 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')}} 
+ +

Compatibilidade em navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Móvel (Gecko)IE MóvelOpera MóvelSafari Móvel
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/reduce/index.html b/files/pt-br/web/javascript/reference/global_objects/array/reduce/index.html new file mode 100644 index 0000000000..0268b64c00 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/reduce/index.html @@ -0,0 +1,513 @@ +--- +title: Array.prototype.reduce() +slug: Web/JavaScript/Reference/Global_Objects/Array/Reduce +tags: + - Array + - JavaScript + - Métodos + - Prototipo + - Referencia + - reduce() +translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce +--- +
{{JSRef}}
+ +

O método reduce() executa uma função reducer (fornecida por você) para cada elemento do array, resultando num único valor de retorno.

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

A função reducer recebe quatro parâmetros:

+ +
    +
  1. Acumulador (acc)
  2. +
  3. Valor Atual (cur)
  4. +
  5. Index Atual (idx)
  6. +
  7. Array original (src)
  8. +
+ +

O valor de retorno da sua função reducer é atribuída ao acumulador. O acumulador, com seu valor atualizado, é repassado para cada iteração subsequente pelo array, que por fim, se tornará o valor resultante, único, final.

+ +

Sintaxe

+ +
array.reduce(callback( acumulador, valorAtual[, index[, array]] )[, valorInicial]))
+ +

Parâmetros

+ +
+
callback
+
Função que é executada em cada valor no array (exceto no primeiro, se nenhum valorInicial for passado); recebe quatro argumentos:
+
+ +

acumulador

+ +

Opcional. O índice do elemento atual que está sendo processado no array. Começa a partir do index 0 se um valorInicial for fornecido. Do contrário, começa do index 1.

+ +
+
valorInicial
+
Opcional. Valor a ser usado como o primeiro argumento da primeira chamada da função callback. Se nenhum valorInicial é fornecido, o primeiro elemento do array será usado como o valor inicial do acumulador e o valorAtual não será lido. Chamar reduce() em uma array vazia sem valor inicial retornará um erro.
+
+ +

Valor retornado

+ +

O valor que resulta da redução.

+ +

Descrição

+ +

O método reduce() executa a função de callback uma vez para cada elemento presente no array, excluindo furos (valores indefinidos), recebendo quatro argumentos:

+ +
    +
  1. acumulador - valor inicial (ou o valor do callback anterior),
  2. +
  3. valorAtual - o valor do elemento atual
  4. +
  5. index - o índice atual e
  6. +
  7. array - o array onde a iteração está ocorrendo.
  8. +
+ +

A primeira vez que o callback é chamado, o acumulador e o valorAtual podem ter um de dois valores possíveisSe o valorInicial tiver sido fornecido na chamada à função reduce(), então o acumulador será igual ao valorInicial e o valorAtual será igual ao primeiro valor no array. Caso nenhum valorInicial seja fornecido, acumulador será igual ao primeiro valor no array, e valorAtual será igual ao segundo.

+ +
+

Nota: Se o valorInicial não tiver sido passado como argumento, então reduce() executará o callback da função começando a partir do índice 1 (index 1), pulando o primeiro índice (index 0). Se o valorInicial for passado como argumento, a função irá começar no index 0.

+
+ +

Se a array estiver vazia e o valorInicial não tiver sido informado, uma exceção do tipo {{jsxref("Global_Objects/TypeError", "TypeError")}} será lançada.

+ +

Se a array possuir somente um elemento (independente da posição) e o valorInicial não tiver sido fornecido, ou se valorInicial for fornecido, mas a array estiver vazia, o valor será retornado sem que a função de callback seja chamada.

+ +

É mais seguro provir um valorInicial, porque existem até quatro possíveis saídas sem o valorInicial, como mostrado no exemplo:

+ +
var maxCallback = ( acc, cur ) => Math.max( acc.x, cur.x );
+var maxCallback2 = ( max, cur ) => Math.max( max, cur );
+
+// reduce() sem valores iniciais
+[ { x: 22 }, { x: 42 } ].reduce( maxCallback ); // 42
+[ { x: 22 }            ].reduce( maxCallback ); // { x: 22 }
+[                      ].reduce( maxCallback ); // TypeError
+
+// map/reduce; melhor solução, funciona para vetores vazios e tambem para vetores grandes
+[ { x: 22 }, { x: 42 } ].map( el => el.x )
+                        .reduce( maxCallback2, -Infinity );
+ +

Como funciona o reduce()

+ +

Suponha que o seguinte uso de reduce() tenha ocorrido:

+ +
[0, 1, 2, 3, 4].reduce(function(acumulador, valorAtual, index, array) {
+  return acumulador + valorAtual;
+});
+// 10
+ +

O callback será invocado quatro vezes, com os argumentos e valores em cada chamada  sendo:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
acumuladorvalorAtualindexarrayvalor de retorno
primeira chamada011[0, 1, 2, 3, 4]1
segunda chamada122[0, 1, 2, 3, 4]3
terceira chamada333[0, 1, 2, 3, 4]6
quarta chamada644[0, 1, 2, 3, 4]10
+ +

O valor retornado pelo reduce será o da última chamada à callback (10).

+ +

Você também pode usar uma {{jsxref("Functions/Arrow_functions", "Arrow Function","",1)}} em vez de uma função completa. O código abaixo produz a mesma saída que o código do bloco acima:

+ +
[0, 1, 2, 3, 4].reduce( (accum, curr) => accum + curr );
+ +

Se você informar um valorInicial como o segundo argumento de reduce, o resultado será:

+ +
[0, 1, 2, 3, 4].reduce(function(acumulador, valorAtual, indice, array) {
+  return acumulador + valorAtual;
+}, 10);
+
+// 20
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
callbackacumuladorvalorAtualindexarrayvalor de retorno
primeira chamada1000[0, 1, 2, 3, 4]10
segunda chamada1011[0, 1, 2, 3, 4]11
terceira chamada1122[0, 1, 2, 3, 4]13
quarta chamada1333[0, 1, 2, 3, 4]16
quinta chamada1644[0, 1, 2, 3, 4]20
+ +

O retorno da última chamada 20,é retornado como resultado da função reduce().

+ +

Exemplos

+ +

Soma todos os valores de uma array

+ +
let total = [0, 1, 2, 3].reduce(function(acumulador, valorAtual) {
+   return acumulador + valorAtual;
+ }, 0)
+// retorna 6
+ +

outra alternativa é usar uma arrow function:

+ +
var total = [ 0, 1, 2, 3 ].reduce(
+  ( acumulador, valorAtual ) => acumulador + valorAtual,
+  0
+);
+ +

Soma de valores de um objeto de um array

+ +

Para resumir os valores contidos em um array, você deve fornecer um valorInicial, para que cada item passe por sua função.

+ +
var valorInicial = 0;
+var soma = [{x: 1}, {x: 2}, {x: 3}].reduce(function (acumulador, valorAtual) {
+    return acumulador + valorAtual.x;
+}, valorInicial)
+
+console.log(soma) // retorna 6
+ +

Utilizando uma arrow function:

+ +
var valorInicial = 0;
+var soma = [{x: 1}, {x: 2}, {x: 3}].reduce(
+    (acumulador , valorAtual) => acumulador + valorAtual.x
+    , valorInicial
+);
+
+console.log(soma) // retorna 6
+
+ +

Redução de um array de arrays

+ +
let reduzido = [[0, 1], [2, 3], [4, 5]].reduce(
+  function(acumulador, valorAtual) {
+    return acumulador.concat(valorAtual)
+  },
+  []
+)
+// reduzido é [0, 1, 2, 3, 4, 5]
+ +

Utilizando uma arrow function:

+ +
let reduzido = [[0, 1], [2, 3], [4, 5]].reduce(
+  ( acumulador, valorAtual ) => acumulador.concat(valorAtual),
+  []
+);
+ +

Contando valores iguais em um objeto

+ +
let nomes = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
+
+let quantidadeNomes = nomes.reduce(function (todosNomes, nome) {
+  if (nome in todosNomes) {
+    todosNomes[nome]++;
+  }
+  else {
+    todosNomes[nome] = 1;
+  }
+  return todosNomes;
+}, {});
+// quantidade de nomes:
+// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
+
+ +

Agrupando objetos por uma propriedade

+ +
let pessoas = [
+  { nome: 'Alice', idade: 21 },
+  { nome: 'Max', idade: 20 },
+  { nome: 'Jane', idade: 20 }
+];
+
+function agruparPor(objetoArray, propriedade) {
+  return objetoArray.reduce(function (acc, obj) {
+    let key = obj[propriedade];
+    if (!acc[key]) {
+      acc[key] = [];
+    }
+    acc[key].push(obj);
+    return acc;
+  }, {});
+}
+
+let grupodePessoas = agruparPor(pessoas, 'idade');
+// grupodePessoas é:
+// {
+//   20: [
+//     { nome: 'Max', idade: 20 },
+//     { nome: 'Jane', idade: 20 }
+//   ],
+//   21: [{ nome: 'Alice', idade: 21 }]
+// }
+ +

Juntando arrays contidos num array de objetos usando o operador spread e o valorInicial

+ +
// friends - um array de objetos
+// onde o campo "books" é a lista de livros favoritos
+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 - lista que contém todos os livros de friends +
+// lista adicional contida em valorInicial
+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'
+// ]
+ +

Removendo itens duplicados num array

+ +
+

Nota: Se você estiver usando um ambiente compatível com {{jsxref("Set")}} and {{jsxref("Array.from()")}}, você pode usar let orderedArray = Array.from(new Set(myArray)) para obter um array em que os itens duplicados tenham sido removidos.

+
+ +
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
+let result = arr.sort().reduce((init, current) => {
+    if (init.length === 0 || init[init.length - 1] !== current) {
+        init.push(current);
+    }
+    return init;
+}, []);
+console.log(result); //[1,2,3,4,5]
+
+ +

Substituindo .filter().map() por .reduce()

+ +

Usar {{jsxref("Array.filter()")}} seguido por {{jsxref("Array.map()")}} faz com que o array seja percorrido duas vezes. Você pode obter o mesmo resultado percorrendo o array apenas uma vez com {{jsxref("Array.reduce()")}}, o que é, portanto, mais eficiente. (Se você gosta de for loops, você pode usar filter e map percorrendo o array apenas uma vez com {{jsxref("Array.forEach()")}}).

+ +
const numbers = [-5, 6, 2, 0,];
+
+const doubledPositiveNumbers = numbers.reduce((accumulator, currentValue) => {
+  if (currentValue > 0) {
+    const doubled = currentValue * 2;
+    accumulator.push(doubled);
+  }
+  return accumulator;
+}, []);
+
+console.log(doubledPositiveNumbers); // [12, 4]
+ +

Rodando promises em sequência

+ +
/**
+ * Roda promises de um promise array de uma maneira encadeada
+ *
+ * @param {array} arr - promise arr
+ * @return {Object} promise object
+ */
+function runPromiseInSequense(arr) {
+  return arr.reduce((promiseChain, currentPromise) => {
+    return promiseChain.then((chainedResult) => {
+      return currentPromise(chainedResult)
+        .then((res) => res)
+    })
+  }, Promise.resolve());
+}
+
+// promise function 1
+function p1() {
+  return new Promise((resolve, reject) => {
+    resolve(5);
+  });
+}
+
+// promise function 2
+function p2(a) {
+  return new Promise((resolve, reject) => {
+    resolve(a * 2);
+  });
+}
+
+// promise function 3
+function p3(a) {
+  return new Promise((resolve, reject) => {
+    resolve(a * 3);
+  });
+}
+
+const promiseArr = [p1, p2, p3];
+runPromiseInSequense(promiseArr)
+  .then((res) => {
+    console.log(res);   // 30
+  });
+ +

Escrever map usando reduce

+ +
if (!Array.prototype.mapUsingReduce) {
+  Array.prototype.mapUsingReduce = function(callback, thisArg) {
+    return this.reduce(function(mappedArray, currentValue, index, array) {
+      mappedArray[index] = callback.call(thisArg, currentValue, index, array)
+      return mappedArray
+    }, [])
+  }
+}
+
+[1, 2, , 3].mapUsingReduce(
+  (currentValue, index, array) => currentValue + index + array.length
+) // [5, 7, , 10]
+ +

Polyfill

+ +

Array.prototype.reduce foi adicionado ao padrão ECMA-262  na quinta edição; e portanto, pode não estar presente em todas as implementações do padrão. Você pode contornar isso inserindo o código a seguir no início de seus scripts, permitindo o uso do reduce() em implementações que não possuem suporte nativo a ele.

+ +
// Etapas de produção para o ECMA-262, Edition 5, 15.4.4.21
+// Referencia: http://es5.github.io/#x15.4.4.21
+if (!Array.prototype.reduce) {
+  Array.prototype.reduce = function(callback /*, valorInicial*/) {
+    'use strict';
+    if (this == null) {
+      throw new TypeError('Array.prototype.reduce chamado é nulo (null) ou indefinido (undefined)');
+    }
+    if (typeof callback !== 'function') {
+      throw new TypeError(callback + ' não é uma função')
+    }
+    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 possui um array vazio sem um valor inicial');
+      }
+      value = t[k++];
+    }
+    for (; k < len; k++) {
+      if (k in t) {
+        value = callback(value, t[k], k, t);
+      }
+    }
+    return value;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce')}}{{Spec2('ES5.1')}} +

Definição inicial. Implemetada no JavaScript 1.8.

+
{{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce')}}{{Spec2('ES6')}}
+ +

Navegadores compatíveis

+ +

A tabela de compatibilidade encontrada nesta página é gerada a partir de dados estruturados. Se você deseja contribuir com os dados, consulte : https://github.com/mdn/browser-compat-data e envie-nos um "pull request".

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

Leia também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/reduceright/index.html b/files/pt-br/web/javascript/reference/global_objects/array/reduceright/index.html new file mode 100644 index 0000000000..67ad0a2bdd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/reduceright/index.html @@ -0,0 +1,258 @@ +--- +title: Array.prototype.reduceRight() +slug: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Sumário

+ +

O método reduceRight() aplica à uma função um acumulador e cada valor do array (da direita para esquerda) é reduzido para um valor único.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função para executar em cada valor do array, recebendo quatro argumentos: +
+
previousValue
+
O valor anteriormente retornado na ultima invocação do callback, ou o initialValue, se este for o recebido. (Ver abaixo.)
+
currentValue
+
O valor atualmente sendo processado no array.
+
index
+
O índice do valor atualmente sendo processado no array.
+
array
+
O array que foi chamado para ser reduzido.
+
+
+
initialValue
+
Opcional. Objeto para ser usado como argumento inicial da primeria chamada do callback.
+
+ +

Descrição

+ +

reduceRight executa a função callback uma vez para cada elemento presente no array, excluindo buracos no array, recebendo quatro argumentos: o valor inicial (ou o valor da chamada anterior do callback), o valor do elemento atual, o índice do elemento atual, e o array onde a operação está acontecendo.

+ +

A chamada ao callback reduceRight irá parecer com uma chamada assim:

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

A primeira vez que a função é chamada, o previousValue e o currentValue podem ser um de dois valores. Se um initialValue foi recebido na chamada do reduceRight, então o previousValue sera iqual ao initialValue e o currentValue será igual ao ultimo valor no array. Se o initialValue não foi recebido, então o previousValue será igual ao ultimo valor no array e o currentValue será igual ao penultimo valor no array.

+ +

Se o array é vazio e nenhum initialValue foi recebido, {{jsxref("Global_Objects/TypeError", "TypeError")}} será lançado. Se o array somente tem um elemento (independentemente da posição dele) e o initialValue não foi recebido, ou se o initialValue foi recebido mas o array é vazio, o valor em si será retornado sem chamar o callback.

+ +

Alguns exemplos de execuções da função e como será parecida a chamada:

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

O callback será invocado quatro vezes, com os argumentos e valores de retornos em cada chamada será como o seguinte:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
previousValuecurrentValueindexarrayreturn value
Primeira chamada433[0, 1, 2, 3, 4]7
Segunda chamada722[0, 1, 2, 3, 4]9
Terceira chamada911[0, 1, 2, 3, 4]10
Quarta chamada1000[0, 1, 2, 3, 4]10
+ +

O valor retornado pelo reduceRight será o valor retornado pela ultima chamada ao callback(10).

+ +

E se você também passou um initialValue, o resultado irá ser como a seguir:

+ +
[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) {
+  return previousValue + currentValue;
+}, 10);
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
previousValuecurrentValueindexarrayreturn value
Primeira chamada1044[0, 1, 2, 3, 4]14
Segunda chamada1433[0, 1, 2, 3, 4]17
Terceira chamada1722[0, 1, 2, 3, 4]19
Quarta chamada1911[0, 1, 2, 3, 4]20
Quinta chamada2000[0, 1, 2, 3, 4]20
+ +

O valor retornado pelo reduceRight desta vez será, obviamente, 20.

+ +

Exemplos

+ +

Exemplo: Somando todos os valores presente em um array

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

Exemplo: Juntando um array de arrays

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

Polyfill

+ +

reduceRight foi adicionado no padrão ECMA-262 em sua Quinta edição; sendo assim pode não estar presente em todas as implementações deste padrão. Você pode contornar isso adicionando o seguinte codigo ao inicio do seu script, adicionando a possibilidade de uso do reduceRight em implementações que não o suportam nativamente.

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.22
+// Reference: http://es5.github.io/#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;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}}{{Spec2('ES5.1')}}Definição inicial. Implementado em JavaScript 1.8.
{{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}{{Spec2('ES6')}}
+ +

Compatibilidade com os navegadores

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

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/reverse/index.html b/files/pt-br/web/javascript/reference/global_objects/array/reverse/index.html new file mode 100644 index 0000000000..ed3b3fe160 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/reverse/index.html @@ -0,0 +1,121 @@ +--- +title: Array.prototype.reverse() +slug: Web/JavaScript/Reference/Global_Objects/Array/reverse +translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Resumo

+ +

O método reverse() inverte os itens de um array. O primeiro elemento do array se torna o último e o último torna-se o primeiro.

+ +

Sintaxe

+ +
arr.reverse()
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O método reverse transpõe os elementos do objeto array no mesmo lugar, mutando o array, e retornando uma referência para o mesmo.

+ +

Exemplos

+ +

Exemplo: Invertendo os elementos em um array

+ +

O seguinte exemplo cria um array myArray, contendo três elementos, em seguida inverte-o.

+ +
var myArray = ['one', 'two', 'three'];
+myArray.reverse();
+
+console.log(myArray) // ['three', 'two', 'one']
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1ª EdiçãoPadrãoDefinição inicial. Implementado no 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')}} 
+ +

Compatibilidade com navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("1.0")}}{{CompatGeckoDesktop("1.7")}}{{CompatIE("5.5")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

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

Sumário

+ +

O método shift()remove o primeiro elemento de um array e retorna esse elemento. Este método muda o tamanho do array. 

+ +

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

+ + + +

Sintaxe

+ +
arr.shift()
+ +

Valor de retorno

+ +

O elemento removido do array; {{jsxref("undefined")}} se o array estiver vazio.

+ +

Descrição

+ +

O método shift remove o elemento de índice zero, diminui em 1 os indices dos demais valores e retorna o valor removido. Se a propriedade {{jsxref("Array.length", "length")}} for 0, então {{jsxref("undefined")}} é retornado.

+ +

shift é intencionalmente genérico; esse método pode ser {{jsxref("Function.call", "chamado", "", 1)}} ou {{jsxref("Function.apply", "aplicado", "", 1)}} para objetos parecidos com arrays. Objetos que não contém a propriedade length representando o tamanho de uma série consecutiva, começando em zero, podem não se comportar de maneira correta.

+ +

Exemplos

+ +

Removendo um elemento de array

+ +

O código a seguir mostra o array minhaLista antes e depois de remover seu primeiro elemento. Ele também mostra o elemento removido.

+ +
var minhaLista = ['anjo', 'casa', 'mandarim', 'medico'];
+
+console.log('minhaLista antes: ' + minhaLista);
+// minhaList antes: ['anjo', 'casa', 'mandarim', 'medico']
+var shifted = minhaLista.shift();
+
+console.log('minhaLista depois: ' + minhaLista);
+// minhaList depois: ['casa', 'mandarim', 'medico']
+console.log('Elemento removido: ' + shifted);
+// Elemento removido: anjo
+
+ +

Usando o método shift() dentro de um loop de while

+ +

O médodo shift() é frequentemente usado como condição dentro de um loop de while. No exemplo a seguir, cada iteração removerá o elemento seguinte do array, até que ele esteja vazio:

+ +
var nomes = ["André", "Eduardo", "Paulo", "Cris", "João"];
+while( (i = nomes.shift()) !== undefined ) {
+    console.log(i);
+}
+// André Eduardo Paulo Cris João
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
ECMAScript 3rd EditionStandardImplementação inicial. Implementado no 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')}}
+ +

Compatibilidade de Browser

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/slice/index.html b/files/pt-br/web/javascript/reference/global_objects/array/slice/index.html new file mode 100644 index 0000000000..daff58f51f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/slice/index.html @@ -0,0 +1,224 @@ +--- +title: Array.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/Array/slice +tags: + - Array + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice +--- +
{{JSRef}}
+ +

O método slice() retorna uma cópia de parte de um array a partir de um subarray criado entre as posições início e fim (fim não é necessário) de um array original. O Array original não é modificado.

+ +

Syntaxe

+ +
arr.slice([início[,fim]])
+ +

Parâmetros

+ +
+
início {{optional_inline}}
+
Índice baseado em zero no qual se inicia a extração.
+
Como um índice negativo, início indica um deslocamento em relação ao fim da sequência. slice(-2) extrai os dois últimos elementos do array.
+
Se início for omitido, slice inicia a partir do índice 0.
+
Se início for maior que o comprimento do array, é retornado um array vazio.
+
fim {{optional_inline}}
+
Índice baseado em zero o qual é o final da extração. slice extrai até, não incluindo, fim.
+
slice(1,4) extrai do segundo até o quarto elemento (elementos de índice 1, 2 e 3).
+
Como índice negativo, fim indica um deslocamento em relação ao fim do array. slice(2,-1) extrai o terceiro elemento através do segundo-para-o-último elemento no array.
+
Se fim for omitido ou for maior que o tamanho do array, slice considerará o último elemento do array como sendo o fim (arr.length).
+
+ +

Valor de retorno

+ +

Um novo array contendo os elementos extraídos.

+ +

Descrição

+ +

slice não altera o array original. Retorna uma cópia de elementos do array original. Elementos do array original são copiados para o array retornado da seguinte maneira:

+ + + +

Se um novo elemento é adicionado a qualquer array, o outro não é afetado.

+ +

Exemplos

+ +

Retorna uma parte de um array existente

+ +
// Exemplo para extrair 'Laranja' e 'Limao' do array frutas
+var frutas = ['Banana', 'Laranja', 'Limao', 'Maçã', 'Manga'];
+var citricos = frutas.slice(1, 3);
+
+// citricos contem ['Laranja','Limao']
+
+ +

Usando slice

+ +

No exemplo seguinte, slice cria um novo array, novoCarro, do original meuCarro. Ambos incluem uma referência ao objeto,  meuHonda. Quando a cor de meuHonda é alterada para  roxo, ambos os arrays sofrem alteração.

+ +
// Usando slice para criar novoCarro a partir de meuCarro.
+var meuHonda = { cor: 'vermelho', rodas: 4, motor: { cilindros: 4, tamanho: 2.2 } };
+var meuCarro = [meuHonda, 2, 'perfeitas condições', 'comprado em 1997'];
+var novoCarro = meuCarro.slice(0, 2);
+
+// Exibe os valores de meuCarro, novoCarro, e a cor de meuHonda
+//  referenciado de ambos arrays.
+console.log('meuCarro = ' + meuCarro.toSource());
+console.log('novoCarro = ' + novoCarro.toSource());
+console.log('meuCarro[0].cor = ' + meuCarro[0].cor);
+console.log('novoCarro[0].cor = ' + novoCarro[0].cor);
+
+// Altera a cor de meuHonda.
+meuHonda.cor= 'roxo';
+console.log('A nova cor do meu Honda é ' + meuHonda.cor);
+
+// Exibe a cor de meuHonda referenciado de ambos arrays.
+console.log('meuCarro[0].cor = ' + meuCarro[0].cor);
+console.log('novoCarro[0].cor = ' + novoCarro[0].cor);
+
+ +

Esse script escreve:

+ +
meuCarro = [{cor:'vermelho', rodas:4, motor:{cilindros:4, tamanho:2.2}}, 2,'perfeitas condições', 'comprado em 1997']
+novoCarro = [{cor:'vermelho', rodas:4, motor:{cilindros:4, tamanho:2.2}},2]
+meuCarro[0].cor = vermelho
+novoCarro[0].cor = vermelho
+A nova cor do meu Honda é roxo
+meuCarro[0].cor = roxo
+novoCarro[0].cor = roxo
+
+ +

Objetos Array-like

+ +

O método slice pode também ser chamado para converter objetos ou coleções Array-like em um novo Array. Você só precisa encadear o método no Array. Os {{jsxref("Functions/arguments", "arguments")}} dentro de uma função são um exemplo de 'objeto array-like'.

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

Ligações  podem ser feitas com a função .call de {{jsxref("Function.prototype")}} and it can also be reduced using [].slice.call(arguments) ao invés de Array.prototype.slice.call. De qualquer forma, ela pode ser simplificada com {{jsxref("Function.prototype.bind", "bind")}}.

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

Simplificando o comportamento entre navegadores

+ +

Embora os objetos de host (como objetos DOM) não sejam obrigados pela especificação a seguir o comportamento do Mozilla quando convertidos por Array.prototype.slice e IE <9 não o fazem, versões do IE começando pela versão 9 permitem isso. “Shimming” pode permitir um comportamento confiável entre navegadores. Enquanto outros navegadores modernos continuem suportando essa habilidade, como atualmente IE, Mozilla, Chrome, Safari, e Opera fazem, desenvolvedores lendo (DOM-supporting) o código slice confiando neste shim não serão desencaminhados pela semântica; eles podem confiar seguramente na semântica para fornecer o agora aparentemente comportamento padrão de fato. (Isso também corrige o problema com IE < 9 onde o segundo argumento do slice era explicitamente {{jsxref("null")}}/{{jsxref("undefined")}})

+ +
(function () {
+  'use strict';
+  var _slice = Array.prototype.slice;
+
+  try {
+    // Produzirá erro no IE < 9
+    _slice.call(document.documentElement);
+  } catch (e) {
+    // Funciona para arrays, objetos array-like,
+    // NamedNodeMap (atributos, entidades, notações),
+    // NodeList (por exemplo, getElementsByTagName), HTMLCollection (por exemplo, childNodes),
+    // e não vai falhar em outros objetos do DOM (como falham no IE < 9)
+    Array.prototype.slice = function(begin, end) {
+      end = (typeof end !== 'undefined') ? end : this.length;
+
+      // Para arrays, chamamos o método nativo
+      if (Object.prototype.toString.call(this) === '[object Array]'){
+        return _slice.call(this, begin, end);
+      }
+
+      // Para array-like, o processo é manual.
+      var i, cloned = [],
+        size, len = this.length;
+
+      // Lidando com valor negativo para "begin"
+      var start = begin || 0;
+      start = (start >= 0) ? start : Math.max(0, len + start);
+
+      // Lidando com valor negativo para "end"
+      var upTo = (typeof end == 'number') ? Math.min(end, len) : len;
+      if (end < 0) {
+        upTo = len + end;
+      }
+
+      // Tamanho real do corte feito pelo slice
+      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;
+    };
+  }
+}());
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}}
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementada no JavaScript 1.2.
+ +

Compatibilidade de navegadores

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/some/index.html b/files/pt-br/web/javascript/reference/global_objects/array/some/index.html new file mode 100644 index 0000000000..f4724488dd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/some/index.html @@ -0,0 +1,134 @@ +--- +title: Array.prototype.some() +slug: Web/JavaScript/Reference/Global_Objects/Array/some +translation_of: Web/JavaScript/Reference/Global_Objects/Array/some +--- +
{{JSRef}}
+ +

O método some() testa se ao menos um dos elementos no array passa no teste implementado pela função atribuída e retorna um valor true ou false.

+ +

Sintaxe

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

Parâmetros

+ +
+
callback
+
Função para testar cada elemento, recebendo três argumentos: +
+
currentValue
+
O valor atual do elemento sendo processado no array.
+
index
+
O índice do elemento atual sendo processado no array.
+
array
+
O array onde o método some() foi chamado.
+
+
+
thisArg
+
Opcional. Valor para usar como  this durante a execução do callback.
+
+ +

Valor de retorno

+ +

Esta função retorna true se a função callback retornar true para qualquer elemento do array; caso contrário, false.

+ +

Descrição

+ +

some() executa a função callback uma vez para cada elemento presente no array até achar um onde o callback retorne um valor true. Se em qualquer dos elementos o valor for encontrado, some() imediatamente retorna true. Caso contrario, some() retorna false. callback é invocado somente para índices do array que contenham valor definido; não é invocado para índices que foram deletados ou os quais nunca tiveram valor definido.

+ +

callback é invocado com três argumentos: o valor do elemento, o índice do elemento, e o array onde a função foi chamada.

+ +

Se o parâmetro thisArg foi passado ao some(), ele sera passado ao callback quando o mesmo for invocado, para ser usado como o valor de this internamente na função callback. Caso contrario, o valor {{jsxref("undefined")}} será passado para uso como this. O valor this observado pela callback  é determinado de acordo com as regras usuais para determinar o que é visto por uma função.

+ +

some() não altera o array dentro do qual ele é chamado. 

+ +

O intervalo de elementos processado por some() é definido antes da primeira invocação da callback. Elementos contidos no array antes da chamada some() ser iniciada não serão testados pela callback. Se algum elemento pertencente ao array for alterado pela callback, o valor passado para a callback será o valor do momento em que a função some() encontra o índice daquele elemento. Elementos deletados não são testados.

+ +

Exemplos

+ +

Testando valores de elementos de um array

+ +

O exemplo a seguir testa se algum elemento de um array é maior que 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
+
+ +

Testando valores de elementos de um array usando arrow functions

+ +

Arrow functions fornece uma sintaxe mais curta para o mesmo teste.

+ +
[2, 5, 8, 1, 4].some(elem => elem > 10);  // false
+[12, 5, 8, 1, 4].some(elem => elem > 10); // true
+
+ +

Polyfill

+ +

some() was added to the ECMA-262 standard in the 5th edition; as such it may not be present in all implementations of the standard. You can work around this by inserting the following code at the beginning of your scripts, allowing use of some() in implementations which do not natively support it. This algorithm is exactly the one specified in ECMA-262, 5th edition, assuming {{jsxref("Object")}} and {{jsxref("TypeError")}} have their original values and that fun.call evaluates to the original value of {{jsxref("Function.prototype.call()")}}.

+ +
// Production steps of ECMA-262, Edition 5, 15.4.4.17
+// Reference: http://es5.github.io/#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;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}{{Spec2('ES5.1')}}Definição inicial. Implementada em JavaScript 1.6.
{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}{{Spec2('ES6')}}
+ +

Compatibilidade em navegadores

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/sort/index.html b/files/pt-br/web/javascript/reference/global_objects/array/sort/index.html new file mode 100644 index 0000000000..6b1f8fcc15 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/sort/index.html @@ -0,0 +1,232 @@ +--- +title: Array.prototype.sort() +slug: Web/JavaScript/Reference/Global_Objects/Array/sort +translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort +--- +
{{JSRef}}
+ +

O método sort() ordena os elementos do próprio array e retorna o array. A ordenação não é necessariamente estável. A ordenação padrão é de acordo com a  pontuação de código unicode.

+ +

A complexidade do tempo de execução ou a quantidade de memória utilizada pela ordenação não pode ser garantido e depende da implementação realizada.

+ +

Sintaxe

+ +
arr.sort([funcaoDeComparacao])
+ +

Parâmetros

+ +
+
funcaoDeComparacao {{optional_inline}}
+
Especifica uma função que define a ordenação. Se omitido, o array é ordenado de acordo com a pontuação de código Unicode de cada um dos caracteres, de acordo com a conversão de cada elemento para string.
+
    primeiroElemento
+
    O primeiro elemento para a comparação.
+
    segundoElemento
+
    O segundo elemento para comparação.
+
+

Valor de Retorno

+
+
O array ordenado. Note que o array é ordenado de acordo com a pontuação de código Unicode de cada um dos caracteres, e nenhuma cópia é feita.
+
+ +

Descrição

+ +

Se funcaoDeComparacao não for informado, os elementos serão ordenados de acordo com a sua conversão para texto e o texto comparado na pontuação unicode do texto convertido. Por exemplo, "banana" vem antes de "cherry". Em uma ordenação numérica, 9 vem antes de 80, mas porque os números são convertidos para texto e, "80" vem antes de "9" na ordenação Unicode.

+ +
var fruit = ['cherries', 'apples', 'bananas'];
+fruit.sort(); // ['apples', 'bananas', 'cherries']
+
+var scores = [1, 10, 2, 21];
+scores.sort(); // [1, 10, 2, 21]
+// Observe que 10 vem antes do 2,
+// porque '10' vem antes de '2' em ponto de código Unicode.
+
+var things = ['word', 'Word', '1 Word', '2 Words'];
+things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
+// Em Unicode, números vêem antes de letras maiúsculas,
+// as quais vêem antes das minúsculas.
+
+ +

Se o parametro funcaoDeComparacao é fornecido, o array será ordenado de acordo com o valor de retorno da funcaoDeComparacao. Considerando que a e b são dois elementos sendo comparados, então:

+ + + +

Então, a função de comparação tem a seguinte forma:

+ +
function comparar(a, b) {
+  if (a é menor que b em algum critério de ordenação) {
+    return -1;
+  }
+  if (a é maior que b em algum critério de ordenação) {
+    return 1;
+  }
+  // a deve ser igual a b
+  return 0;
+}
+
+ +

Para comparar números ao invés de texto, a função de comparação pode simplesmente subtrair b de a. A função abaixo irá ordenar o array em ordem crescente:

+ +
function compararNumeros(a, b) {
+  return a - b;
+}
+
+ +

O método de ordenação pode convenientemente ser usada com {{jsxref("Operators/function", "funções anônimas", "", 1)}} (e closures):

+ +
var numbers = [4, 2, 5, 1, 3];
+numbers.sort(function(a, b) {
+  return a - b;
+});
+console.log(numbers);
+
+ +

Objetos podem ser ordenados de acordo com o valor de uma de suas propriedades.

+ +
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 must be equal to b
+  return 0;
+});
+
+ +

Exemplos

+ +

Criando, exibindo, e ordenando um array

+ +

O exemplo abaixo cria quatro arrays e mostra seu conteúdo original, então o conteúdo dos arrays ordenado. Os arrays numéricos são ordenados sem a função de comparação, e então, com a função.

+ +
var stringArray = ['Blue', 'Humpback', 'Beluga'];
+var numericStringArray = ['80', '9', '700'];
+var numberArray = [40, 1, 5, 200];
+var mixedNumericArray = ['80', '9', '700', 40, 1, 5, 200];
+
+function compararNumeros(a, b) {
+  return a - b;
+}
+
+console.log('stringArray:', stringArray.join());
+console.log('Ordenada:', stringArray.sort());
+
+console.log('numberArray:', numberArray.join());
+console.log('Ordenada sem função de comparação:', numberArray.sort());
+console.log('Ordenada com compararNumeros:', numberArray.sort(compararNumeros));
+
+console.log('numericStringArray:', numericStringArray.join());
+console.log('Ordenada sem função de comparação:', numericStringArray.sort());
+console.log('Ordenada com compararNumeros:', numericStringArray.sort(compararNumeros));
+
+console.log('mixedNumericArray:', mixedNumericArray.join());
+console.log('Ordenada sem função de comparação:', mixedNumericArray.sort());
+console.log('Ordenada com compararNumeros:', mixedNumericArray.sort(compararNumeros));
+
+ +

Este exemplo gera a saída abaixo. Como as saídas mostram, quando a função de comparação é usada, os números são ordenados corretamente, sejam eles números ou strings numéricas.

+ +
stringArray: Blue,Humpback,Beluga
+Ordenada: Beluga,Blue,Humpback
+
+numberArray: 40,1,5,200
+Ordenada sem função de comparação: 1,200,40,5
+Ordenada com compararNumeros: 1,5,40,200
+
+numericStringArray: 80,9,700
+Ordenada sem função de comparação: 700,80,9
+Ordenada com compararNumeros: 9,80,700
+
+mixedNumericArray: 80,9,700,40,1,5,200
+Ordenada sem função de comparação: 1,200,40,5,700,80,9
+Ordenada com compararNumeros: 1,5,9,40,80,200,700
+
+ +

Ordenando caracteres não-ASCII

+ +

Para ordenar strings com caracteres não-ASCII, i.e. strings com caracteres acentuados (e, é, è, a, ä, etc.), strings de línguas diferentes do Inglês: use {{jsxref("String.localeCompare")}}. Esta função pode comparar estes caracteres, então eles aparecerão na ordem correta.

+ +
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é']
+
+ +

Ordenando com mapa

+ +

funcaoDeComparacao pode ser invocada múltiplas vezes por elemento do array. Dependendo da natureza da funcaoDeComparacao, isto pode causar um excesso processamento. Quanto mais trabalho a funcaoDeComparacao fizer, e quanto mais elementos houverem para ordenar, seria mais inteligente considerar  o uso de um mapa para a ordenação. A idéia é percorrer o array uma vez para extrair os valores já processados para a ordenação e armazenar em um array temporário, ordenar o array temporário e então percorrer o array temporário para conseguir a ordenação correta.

+ +
// o array a ser ordenado
+var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
+
+// array temporário que armazena os objetos com o índice e o valor para ordenação
+var mapped = list.map(function(el, i) {
+  return { index: i, value: el.toLowerCase() };
+})
+
+// ordenando o array mapeado contendo os dados resumidos
+mapped.sort(function(a, b) {
+  return +(a.value > b.value) || +(a.value === b.value) - 1;
+});
+
+// container para o resultado ordenado
+var result = mapped.map(function(el){
+  return list[el.index];
+});
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição Inicial.
{{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')}}
+ +

Compatibilidade de navegadores

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

Veja também

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

Resumo

+ +

O método splice() altera o conteúdo de uma lista, adicionando novos elementos enquanto remove elementos antigos.

+ +

Sintaxe

+ +
array.splice(indice[, deleteCount[, elemento1[, ...[, elementoN]]])
+
+array.splice(indice) // SpiderMonkey/Firefox extension
+ +

Parâmetros

+ +
+
indice
+
Índice o qual deve iniciar a alterar a lista. Se maior que o tamanho total da mesma, nenhum elemento será alterado. Se negativo, irá iniciar a partir daquele número de elementos a partir do fim.
+
+ +
+
deleteCount
+
Um inteiro indicando o número de antigos elementos que devem ser removidos.
+
Se o parâmetro deleteCount não é especificado, ou se é maior que o número de elementos restantes na lista iniciando pelo índice, então todos os elementos até o fim da lista serão deletados.
+
Se deleteCount é 0, nenhum elemento é removido. Neste caso você deve especificar pelo menos um novo elemento.
+
+ +
+
elemento1, ..., elementoN
+
Os elementos a adicionar na lista. Se você não especificar nenhum elemento, splice simplesmente removerá elementos da mesma.
+
+ +

Retorno

+ +

Uma lista contendo os elementos removidos. Se apenas um elemento é removido, por exemplo, uma lista contendo apenas um elemento é retornada. Se nenhum elemento é removido, uma lista vazia é retornada.

+ +

Descrição

+ +

Se você especificar um número diferente de elementos a inserir comparado ao número de elementos que você está removendo, a lista terá um tamanho diferente no final da execução.

+ +

Exemplo

+ +

Exemplo: Removendo 0 elementos do indice 2, e inserindo "drum"

+ +

O script a seguir ilustra o uso do splice:

+ +
var myFish = ["angel", "clown", "mandarin", "surgeon"];
+
+//remove 0 elementos a partir do índice 2, e insere "drum"
+var removed = myFish.splice(2, 0, "drum");
+//myFish é ["angel", "clown", "drum", "mandarin", "surgeon"]
+//removed é [], nenhum elemento removido
+
+//remove 1 elemento do índice 3
+removed = myFish.splice(3, 1);
+//myFish é ["angel", "clown", "drum", "surgeon"]
+//removed é ["mandarim"]
+
+//remove 1 elemento a partir do índice 2, e insere "trumpet"
+removed = myFish.splice(2, 1, "trumpet");
+//myFish é ["angel", "clown", "trumpet", "surgeon"]
+//removed é ["drum"]
+
+//remove 2 elementos a partir do índice 0, e insere "parrot", "anemone" e "blue"
+removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
+//myFish é ["parrot", "anemone", "blue", "trumpet", "surgeon"]
+//removed é ["angel", "clown"]
+
+//remove 2 elementos a partir do indice 3
+removed = myFish.splice(3, Number.MAX_VALUE);
+//myFish é ["parrot", "anemone", "blue"]
+//removed é ["trumpet", "surgeon"]
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 3rd EditionPadrãoDefinição inicial.
+ Implementado no 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')}} 
+ +

Compatibilidade de Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
AtributoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico1.0{{CompatGeckoDesktop("1.7")}}5.5{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
AtributoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Compatibilidade com Navegadores Antigos

+ +

O método splice retorna o elemento removido, se somente um elemento é removido (parâmetro deleteCount é 1); caso contrário, o método retorna uma lista contendo os elementos removidos. Note que o último navegador a utilizar JavaScript 1.2 foi o Netscape Navigator 4, então você pode utilizar o splice esperando sempre retornar uma lista.

+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/pt-br/web/javascript/reference/global_objects/array/tolocalestring/index.html new file mode 100644 index 0000000000..7912113ff7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/tolocalestring/index.html @@ -0,0 +1,140 @@ +--- +title: Array.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +--- +
{{JSRef}}
+ +
O método toLocaleString() retorna uma representaçao de elementos de um array. Os elementos são convertidos para Strings utilizando seus respectivos métodos toLocaleString e essas cadeias são separadas por uma sequência específica de localidade (separados por virgula ","). 
+ +
 
+ +

Sintaxe

+ +
array.toLocaleString();
+
+ +

 

+ +

Parâmetros

+ +
+
locales {{optional_inline}}
+
Uma string com uma tag de linguagem BCP 47, ou um array como strings. Para uma forma geral e uma interpretação do arquivo locales, veja a página {{jsxref("Intl")}}.
+
options {{optional_inline}}
+
Um objeto com as propriedades de configurações, para números veja {{jsxref("Number.prototype.toLocaleString()")}}, e para datas veja {{jsxref("Date.prototype.toLocaleString()")}}.
+
+ +

Retorno

+ +

Uma string que representa os elementos de um array.

+ +

Exemplos

+ +

Usando toLocaleString

+ +

Os elementos de um array são convertidos para strings usando seus respectivos métodos toLocaleString:

+ + + +
var numero = 1337;
+var data = new Date();
+var meuArray = [numero, data, 'foo'];
+
+var resultado = meuArray.toLocaleString();
+
+console.log(resultado);
+// saída '1337,July 26, 2015 at 20:02:23 GMT-3,foo'
+// se estiver no Brasil com o fuso horario GMT-0300 (BRT) de Brasília.
+
+ +

Para mais exemplos, veja as páginas {{jsxref("Intl")}}, {{jsxref("NumberFormat")}}, e {{jsxref("DateTimeFormat")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{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')}} 
+ +

Compatibilidade do Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/array/tosource/index.html new file mode 100644 index 0000000000..0eeea7211c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/tosource/index.html @@ -0,0 +1,113 @@ +--- +title: Array.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Array/toSource +tags: + - Não-padrão + - Referencia + - prototipos +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método toSource() retorna uma representação string do código fonte do array.

+ +

Sintaxe

+ +
arr.toSource()
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O método toSource retorna os seguintes valores:

+ + + +

Este método normalmente é chamando internamente pelo JavaScript e não explicitamente no código. Você pode chamar toSource durante o debug para examinar o conteúdo de um array.

+ +

Exemplos

+ +

Examinando o código fonte de um array

+ +

Para examinar o código fonte de um array:

+ +
var alpha = new Array('a', 'b', 'c');
+
+alpha.toSource();   //retorna ['a', 'b', 'c']
+
+ +

Especificações

+ +

Não é parte de nenhum padrão. Implementado no JavaScript 1.3.

+ +

Compatibilidade com os navegadores

+ +

A tabela de compatibilidade encontrada nesta página é gerada a partir de dados estruturados. Se você deseja contribuir com os dados, consulte https://github.com/mdn/browser-compat-data e envie-nos um "pull request".

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/array/tostring/index.html new file mode 100644 index 0000000000..d10cd2e032 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/tostring/index.html @@ -0,0 +1,115 @@ +--- +title: Array.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toString +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString +--- +
{{JSRef}}
+ +

O método toString() retorna uma string representando um array específico e seus elementos.

+ +

Sintaxe

+ +
arr.toString()
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O objeto {{jsxref("Array")}} substitui o método toString() de {{jsxref("Object")}}. Para objetos do tipo Array, o método toString() concatena todos os valores em apenas uma string. Segue exemplo abaixo, de como ele se comporta.

+ +
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
+var myVar = monthNames.toString(); // atribui 'Jan,Feb,Mar,Apr' para myVar.
+
+ +

JavaScript chama o método toString automaticamente quando um Array é para ser representado como um valor de texto ou quando um Array é designado em uma concatenação.

+ +

Semântica ECMAScript 5

+ +

Implementado no JavaScript 1.8.5 (Firefox 4), e compatível com a 5ª versão do ECMAScript, a função toString() é genérica e pode ser usada em qualquer Objeto. Se o objeto tem um método join(), ele será chamado e esse valor será devolvido. Do contrário, {{jsxref("Object.prototype.toString()")}} será chamado, e o valor será retornado.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
+ +

Browsers compatíveis

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html b/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html new file mode 100644 index 0000000000..a509f16afb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/unobserve/index.html @@ -0,0 +1,129 @@ +--- +title: Array.unobserve() +slug: Web/JavaScript/Reference/Global_Objects/Array/unobserve +translation_of: Archive/Web/JavaScript/Array.unobserve +--- +
{{JSRef}}
+ +
O método Array.unobserve() é usado para remover observers adicionados pelo {{jsxref("Array.observe()")}}.
+ +
 
+ +

Sintaxe

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

Parâmetros

+ +
+
arr
+
O array para remover os observers.
+
callback
+
A referência para o observer para parar de ser chamada a toda vez em que algo é modificado no array arr.
+
+ +

Descrição

+ +

Array.unobserve() deve ser chamado após o  {{jsxref("Array.observe()")}} a fim de remover um observers de um array.

+ +

O callback deve ser uma referencia à uma função e não a uma função anônima, porquê esta referencia será usada para remover o observer anterior. É inútil chamar o Array.unobserve() com uma função anônima como callback, não removerá nenhum observer.

+ +

Exemplos

+ +

Desobservando um array

+ +
var arr = [1, 2, 3];
+
+var observer = function(changes) {
+  console.log(changes);
+}
+
+Array.observe(arr, observer);
+​
+arr.push(4);
+// [{type: "splice", object: <arr>, index: 3, removed:[], addedCount: 1}]
+
+Array.unobserve(arr, observer);
+
+arr.pop();
+// O callback não foi chamado
+ +

Usando uma função anônima

+ +
var persons = ['Khalid', 'Ahmed', 'Mohammed'];
+
+Array.observe(persons, function (changes) {
+  console.log(changes);
+});
+
+persons.shift();
+// [{type: "splice", object: <arr>, index: 0, removed: [ "Khalid" ], addedCount: 0 }]
+
+Array.unobserve(persons, function (changes) {
+  console.log(changes);
+});
+
+persons.push('Abdullah');
+// [{type: "splice", object: <arr>, index: 2, removed: [], addedCount: 1 }]
+// O callback sempre será chamado
+
+ +

Compatibilidade com os navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/unshift/index.html b/files/pt-br/web/javascript/reference/global_objects/array/unshift/index.html new file mode 100644 index 0000000000..bdf6c0e4d9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/unshift/index.html @@ -0,0 +1,90 @@ +--- +title: Array.prototype.unshift() +slug: Web/JavaScript/Reference/Global_Objects/Array/unshift +tags: + - Array + - JavaScript + - Prototype + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Introdução

+ +

O método unshift() adiciona um ou mais elementos no início de um array e retorna o número de elementos (propriedade length) atualizado.

+ +

Sintaxe

+ +
arr.unshift([element1[, ...[, elementN]]])
+ +

Parâmetros

+ +
+
elementN
+
Os elementos a serem adicionados no começo do array.
+
+ +

Retorna

+ +

A nova propriedade {{jsxref("Array.length", "length")}} do objeto acima onde o método foi chamado.

+ +

Descrição

+ +

O método unshift insere os valores fornecidos no início de um objeto do tipo array.

+ +

unshift é intencionalmente genérico; este método pode ser chamado via {{jsxref("Function.call", "call", "", 1)}} ou {{jsxref("Function.apply", "apply", "", 1)}} em objetos que se assemelham aos arrays. Objetos que não contêm uma propriedade length que reflete a última de uma série consecutiva de propriedades numéricas, iniciada por 0, podem não comportar-se de maneira significativa.

+ +

Exemplos

+ +
var arr = [1, 2];
+
+arr.unshift(0); // result of call is 3, the new array length
+// arr is [0, 1, 2]
+
+arr.unshift(-2, -1); // = 5
+// arr is [-2, -1, 0, 1, 2]
+
+arr.unshift([-3]);
+// arr is [[-3], -2, -1, 0, 1, 2]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 3ª EdiçãoPadrãoDefinição inicial. Implementado no 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')}}
+ +

Compatibilidade entre browsers

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

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/array/values/index.html b/files/pt-br/web/javascript/reference/global_objects/array/values/index.html new file mode 100644 index 0000000000..d3e918e1b9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/array/values/index.html @@ -0,0 +1,121 @@ +--- +title: Array.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Array/values +translation_of: Web/JavaScript/Reference/Global_Objects/Array/values +--- +
{{JSRef}}
+ +

O método values() retorna um novo objeto de  Array Iterator que contém os valores para cada índice no array.

+ +

Sintaxe

+ +
arr.values()
+ +

Exemplos

+ +

Iteração usando for...of loop

+ +
var arr = ['w', 'y', 'k', 'o', 'p'];
+var eArr = arr.values();
+// seu navegador deve suportar for..of loop
+// e deixar variáveis let-scoped no for loops
+for (let letter of eArr) {
+  console.log(letter);
+}
+
+ +

Iteração alternativa

+ +
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
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-array.prototype.values', 'Array.prototype.values')}}{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Notas específicas do Firefox

+ + + +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/arraybuffer/index.html b/files/pt-br/web/javascript/reference/global_objects/arraybuffer/index.html new file mode 100644 index 0000000000..443a570305 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/arraybuffer/index.html @@ -0,0 +1,148 @@ +--- +title: ArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +tags: + - ArrayBuffer + - Constructor + - JavaScript + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +--- +

{{JSRef}}

+ +

O objeto ArrayBuffer é um tipo de dado usado para representar um genérico, buffer de dados binários de tamanho fixo. Você não pode manipular diretamente os conteúdos de um ArrayBuffer;  em vez disso, você cria um objeto ArrayBufferView que representa o buffer em um formato específico, e usa para ler e escrever os conteúdos do buffer.

+ +

{{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html")}}

+ + + +

Syntax

+ +
new ArrayBuffer(length)
+
+ +

Parameters

+ +
+
length
+
The size, in bytes, of the array buffer to create.
+
+ +

Return value

+ +

A new ArrayBuffer object of the specified size. Its contents are initialized to 0.

+ +

Exceptions

+ +

A {{jsxref("RangeError")}} is thrown if the length is larger than {{jsxref("Number.MAX_SAFE_INTEGER")}} (>= 2 ** 53) or negative.

+ +

Description

+ +

The ArrayBuffer constructor creates a new ArrayBuffer of the given length in bytes.

+ +

Getting an array buffer from existing data

+ + + +

Properties

+ +
+
ArrayBuffer.length
+
The ArrayBuffer constructor's length property whose value is 1.
+
{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
+
The constructor function that is used to create derived objects.
+
{{jsxref("ArrayBuffer.prototype")}}
+
Allows the addition of properties to all ArrayBuffer objects.
+
+ +

Methods

+ +
+
{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
+
Returns true if arg is one of the ArrayBuffer views, such as typed array objects or a {{jsxref("DataView")}}. Returns false otherwise.
+
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
+
+

Returns a new ArrayBuffer whose contents are taken from the oldBuffer's data and then is either truncated or zero-extended by newByteLength.

+
+
+ +

Instances

+ +

All ArrayBuffer instances inherit from {{jsxref("ArrayBuffer.prototype")}}.

+ +

Properties

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Properties')}}

+ +

Methods

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Methods')}}

+ +
+
{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
+
Has the same functionality as {{jsxref("ArrayBuffer.prototype.slice()")}}.
+
+ +

Exemplo

+ +

In this example, we create a 8-byte buffer with a {{jsxref("Global_Objects/Int32Array", "Int32Array")}} view referring to the buffer:

+ +
var buffer = new ArrayBuffer(8);
+var view   = new Int32Array(buffer);
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Substituído pelo ECMAScript 6
{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ES6')}}Definição inicial no ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade entre Navegadores

+ + + +

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

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, ArrayBuffer constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling an ArrayBuffer constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

+ +
var dv = ArrayBuffer(10);
+// TypedError: calling a builtin ArrayBuffer constructor
+// without new is forbidden
+ +
var dv = new ArrayBuffer(10);
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/asyncfunction/index.html b/files/pt-br/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..3a463c8184 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,173 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +tags: + - Constructor + - Construtor + - Experimental + - JavaScript + - Reference + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +
{{JSRef}}
+ +

O construtor AsyncFunction cria um novo objeto {{jsxref("Statements/async_function", "async function")}}. Em JavaScript cada função assíncrona é atualmente um objeto do tipo AsyncFunction.

+ +

Note queAsyncFunction não é um objeto global. Ele poderia ser obtido analisando o seguinte código:

+ +
Object.getPrototypeOf(async function(){}).constructor
+
+ +

Sintaxe

+ +
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
+ +

Parameters

+ +
+
arg1, arg2, ... argN
+
Nomes que vão ser usados pela função como argumentos formais. Cada um deve ser uma string que corresponde a um indentificador JavaScript válido ou uma lista das strings separadas com uma vírgula; por exemplo "x", "oValor", or "a,b".
+
functionBody
+
Uma string contendo as declarações JavaScript que compõem a definição da função.
+
+ +

Descrição

+ +

Objetos {{jsxref("Statements/async_function", "async function")}} criados com o construtor AsyncFunction são tratados quando a função é criada. Isso é menos eficiente que declarar uma função async com a {{jsxref("Statements/async_function", "expression async function")}} e chama-la com seu código, porque essas funções são tratadas com o resto do código.

+ +

Todos os argumentos passado para a função são tratados como nomes dos identificadores dos parâmetros na função que vai ser criada, na ordem que eles são passados.

+ +
+

Nota: {{jsxref("Statements/async_function", "async functions")}} criadas com o construtor AsyncFunction não cria closures para seus contextos de criação; elas sempre criadas no escopo global. Quando rodar eles, eles só poderão acessar suas variáveis local e as globais, mas não as que estão no escopo que o construtor foi AsyncFunction chamado. Isso é diferente de usar {{jsxref("Global_Objects/eval", "eval")}} com código para uma expressão async function.

+
+ +

Invocar o construtor AsyncFunction como uma função (sem usar o operador new) tem o mesmo efeito de invocá-lo como um construtor.

+ +

Propriedas

+ +
+
AsyncFunction.length
+
A propriedade tamanho do construtor da AsyncFunction cujo valor é 1.
+
{{jsxref("AsyncFunction.prototype")}}
+
Permite a adição de propriedades para todos os objetos async function.
+
+ +

AsyncFunction prototype object

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Propriedades')}}
+ +

AsyncFunction instances

+ +

Instância AsyncFunction herdam métodos e propriedades do {{jsxref("AsyncFunction.prototype")}}. Com todos os contrutores, que podem mudar o prototype do objeto construtor para fazer mudanças em todas as instâncias do AsyncFunction.

+ +

Exemplos

+ +

Criando uma async function a partir do construtor de uma AsyncFunction

+ +
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); // imprime 30 após 4 seconds
+});
+
+ +

Especificações

+ + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}{{Spec2('ESDraft')}}Definição inicial no ES2017.
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet Explorer EdgeOperaSafari (WebKit)
Basic support{{CompatChrome(55)}}{{CompatGeckoDesktop("52.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("52.0")}}{{CompatUnknown}}{{CompatOpera(42)}}{{CompatUnknown}}{{CompatChrome(55)}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/atomics/add/index.html b/files/pt-br/web/javascript/reference/global_objects/atomics/add/index.html new file mode 100644 index 0000000000..6d187893bb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/atomics/add/index.html @@ -0,0 +1,132 @@ +--- +title: Atomics.add() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/add +tags: + - Atomics + - Atômico + - JavaScript + - Memória Compartilhada + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add +--- +
{{JSRef}}
+ +

O método estátitico Atomics.add() adiciona um dado valor em uma determinada posição no array e retorna o valor antigo daquela posição. Esta operação atômica garante que nenhuma outra escrita ocorra até que o valor modificado seja escrito de volta.

+ +

Sintaxe

+ +
Atomics.add(typedArray, index, value)
+
+ +

Parâmetros

+ +
+
typedArray
+
Um array tipado de inteiros compartilhado. Pode ser {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}}, ou {{jsxref("Uint32Array")}}.
+
index
+
A posição no typedArray onde o value será adicionado.
+
value
+
Número que será adicionado.
+
+ +

Valor de retorno

+ +

O valor antigo na determinada posição (typedArray[index]).

+ +

Exceções

+ + + +

Exemplos

+ +
var sab = new SharedArrayBuffer(1024);
+var ta = new Uint8Array(sab);
+
+Atomics.add(ta, 0, 12); // retorna 0, o valor antigo
+Atomics.load(ta, 0); // 12
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}}{{Spec2('ESDraft')}}Definição inicial no ES2017.
+ +

Compatibilidade dos browsers

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("55")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] No Firefox da versão 46 até a versão 54, este recurso fica desabilitado por uma configuração. Em about:config, altere o javascript.options.shared_memory para true

+ +

[2] A implementação está sob desenvolvimento e necessita dessas flags de runtime: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/atomics/index.html b/files/pt-br/web/javascript/reference/global_objects/atomics/index.html new file mode 100644 index 0000000000..6f6a1dfabe --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/atomics/index.html @@ -0,0 +1,155 @@ +--- +title: Atomics +slug: Web/JavaScript/Reference/Global_Objects/Atomics +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

O objeto Atomics fornece operações atômicas como metodos estáticos. Eles são usados com objetos {{jsxref("SharedArrayBuffer")}}.

+ +

As operações atômicas estão localizadas no modulo Atomics. Diferente de outros global objects, Atomics não é um construtor. Você não deve usa-lo com o new operator ou invocar objetos Atomics como funções. Todas as propriedades e método do Atomics são estáticos (como é o caso com o objeto {{jsxref("Math")}}, por exemplo).

+ +

Métodos

+ +

Operações Atômicas

+ +

Quando a memória é compartilhada, multiplas threads podem ser lidas e escritas no mesmo dado da memória. Operações atômicas garantem que os valores previstos sejam lidos e escritos, estas operações são finalizadas antes da próxima operação iniciar e que as mesmas não sejam interrompidas.

+ +
+
{{jsxref("Atomics.add()")}}
+
Adiciona o valor recebido na posiçao recebida no array. Retorna o valor anterior nesta posição.
+
{{jsxref("Atomics.and()")}}
+
Calcula um bit a bit AND na posição recebida no array. Retorna o valor anterior nesta posição.
+
{{jsxref("Atomics.compareExchange()")}}
+
Armazena o valor recebido na posição recebida no array, se este foi igual ao valor recebido. Retorna o valor anterior nesta posição.
+
{{jsxref("Atomics.exchange()")}}
+
Armazena o valor recebido na posição recebida no array. Retorna o valor anterior.
+
+ +
+
{{jsxref("Atomics.load()")}}
+
Retorna o valor na posição recebida no array.
+
{{jsxref("Atomics.or()")}}
+
Calcula um bit a bit OR na posição recebida no array. Retorna o valor anterior nesta posição.
+
{{jsxref("Atomics.store()")}}
+
Armazena o valor recebido na posição recebida no array. Retorna o valor.
+
{{jsxref("Atomics.sub()")}}
+
Subtrai o valor recebido na posição recebida no array. Retorna o valor anterior nesta posição.
+
{{jsxref("Atomics.xor()")}}
+
Calcula um bit a bit XOR na posição recebida no array. Retorna o valor anterior nesta posição.
+
+ +

Wait e wake

+ +

Os métodos wait() e wake() são modelados no Linux futexes ("fast user-space mutex") e fornece formas de aguardar até que certas condições se tornem true e são tipicamente usadas como construtores de bloco.

+ +
+
{{jsxref("Atomics.wait()")}}
+
+

Verifica se a posição informada no array ainda contém a valor recebido e dorme à espera ou até o tempo limite. Retorna "ok", "not-equal", ou "timed-out". Se a espera não for permitida no agente de chamada ele irá lançar uma exceção de erro (muitos navegadores não permitem wait() na thread main do navegador).

+
+
{{jsxref("Atomics.wake()")}}
+
"Acorda" alguns agentes que estavam "dormindo" na lista de espera na posição recebida do array. Retorna o número de agentes que estão sendo "acordados".
+
{{jsxref("Atomics.isLockFree()", "Atomics.isLockFree(size)")}}
+
+

Uma otimização primitiva que pode ser usada para determinar se deve ser usado lock ou operações atômicas. Retorna true, se uma operação atômica em matrizes de um dado tamanho do elemento vai ser implementado utilizando uma operação atômica de hardware (como oposição a lock). Só para experientes.

+
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('Shared Memory', '#AtomicsObject', 'Atomics')}}{{Spec2('Shared Memory')}}Definição inicial.
+ +

Compatibilidade nos navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}} [2]{{CompatNo}}{{CompatGeckoDesktop("46")}} [1] [3]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("46")}} [1]{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

[1] 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

+ +

Observações de compatibilidade

+ +

[3] A especificação de compartilhamento de memória está sendo estabilizada. Anterior ao SpiderMonkey 48 {{geckoRelease(48)}}, a última API e semântica não foram implementadas ainda. As alterações entre as versões 46 e 48 do Firefox são:

+ + + +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/bigint/index.html b/files/pt-br/web/javascript/reference/global_objects/bigint/index.html new file mode 100644 index 0000000000..fc9cd37807 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/bigint/index.html @@ -0,0 +1,240 @@ +--- +title: BigInt +slug: Web/JavaScript/Reference/Global_Objects/BigInt +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt +--- +
{{JSRef}}
+ +

BigInt é um objeto nativo que fornece um modo de representar números inteiros maiores que 253, que é o maior número que o JavaScript consegue, com exatidão, representar com o tipo primitivo {{jsxref("Number")}}.

+ +

Sintaxe

+ +
BigInt(value);
+
+ +

Parâmetros

+ +
+
value
+
O valor numérico do objeto que está sendo criado. Pode ser uma string ou um número inteiro.
+
+ +
+

Observação: BigInt() não é usado com o operador {{jsxref("Operators/new", "new")}}.

+
+ +
+
+ +

Descrição

+ +

Um BigInt é criado com a acrescentação de n ao final de um inteiro literal — 10n — ou chamando a função BigInt().

+ +
const theBiggestInt = 9007199254740991n;
+
+const alsoHuge = BigInt(9007199254740991);
+// ↪ 9007199254740991n
+
+const hugeString = BigInt("9007199254740991");
+// ↪ 9007199254740991n
+
+const hugeHex = BigInt("0x1fffffffffffff");
+// ↪ 9007199254740991n
+
+const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111");
+// ↪ 9007199254740991n
+
+ +

Isso é parecido com um {{jsxref("Number")}} em algumas partes, mas difere-se em alguns assuntos importantes  — ele não pode ser usado com métodos no objeto {{jsxref("Math")}} e não pode ser misturado em operações ou qualquer instância de Number.

+ +
+

{{jsxref("Number")}} e BigInt não podem ser misturados em operações — eles devem ser manipulados com o mesmo tipo.

+ +

Tenha cuidado com a conversão e desconversão de valores, visto que a precisão de BigInt pode ser perdida com a conversào para Number.

+
+ +

Informações do tipo

+ +

Quando testado com typeof , um BigInt vai devolver "bigint":

+ +
typeof 1n === 'bigint'; // true
+typeof BigInt('1') === 'bigint'; // true
+
+ +

Quando envolvido em um Object, um BigInt vai ser considerado como um tipo normal de "object".

+ +
typeof Object(1n) === 'object'; // true
+
+ +

Operadores

+ +

Os seguintes operadores podem ser usados com BigInts (ou com BigInts envolvidos em objetos): +, `*`, `-`, `**`, `%` .

+ +
const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER);
+// ↪ 9007199254740991
+
+const maxPlusOne = previousMaxSafe + 1n;
+// ↪ 9007199254740992n
+
+const theFuture = previousMaxSafe + 2n;
+// ↪ 9007199254740993n, isso funciona agora!
+
+const multi = previousMaxSafe * 2n;
+// ↪ 18014398509481982n
+
+const subtr = multi – 10n;
+// ↪ 18014398509481972n
+
+const mod = multi % 10n;
+// ↪ 2n
+
+const bigN = 2n ** 54n;
+// ↪ 18014398509481984n
+
+bigN * -1n
+// ↪ –18014398509481984n
+
+ +

O operador /  também funciona com o esperado com números inteiros. No entanto, desde que esses sejam BigInts e não BigDecimals, essa operação vai arredondar para 0, o que significa que não vai retornar qualquer valor fracional.

+ +
+

Uma operação com um resultado fracional será arredondado com BigInt.

+
+ +
const expected = 4n / 2n;
+// ↪ 2n
+
+const rounded = 5n / 2n;
+// ↪ 2n, e não 2.5n
+
+
+ +

Comparações

+ +

Um BigInt não é estritamente igual a um {{jsxref("Global_Objects/Number", "Number")}}, mas é mais ou menos assim.

+ +
0n === 0
+// ↪ false
+
+0n == 0
+// ↪ true
+ +

Um {{jsxref("Global_Objects/Number", "Number")}} e um BigInt podem ser comparado normalmente.

+ +
1n < 2
+// ↪ true
+
+2n > 1
+// ↪ true
+
+2 > 2
+// ↪ false
+
+2n > 2
+// ↪ false
+
+2n >= 2
+// ↪ true
+ +

Eles podem ser misturados em arrays e sorteados.

+ +
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]
+
+ +

Observe que comparações com BigInts envolvidos em Object atuam com outros objetos, indicando somente a igualdade onde a mesma instância do objeto é comparada.

+ +
0n === Object(0n); // false
+Object(0n) === Object(0n); // false
+
+const o = Object(0n);
+o === o // true
+
+ +

Conditionals

+ +

A BigInt behaves like a {{jsxref("Global_Objects/Number", "Number")}} in cases where it is converted to a {{jsxref("Global_Objects/Boolean", "Boolean")}}: via the {{jsxref("Global_Objects/Boolean", "Boolean")}} function; when used with logical operators {{jsxref("Operators/Logical_Operators", "Logical Operators")}}  ||, `&&`, and !; or within a conditional test like an {{jsxref("Statements/if...else", "if statement")}}.

+ +
if (0n) {
+  console.log('Hello from the if!');
+} else {
+  console.log('Hello from the else!');
+}
+
+// ↪ "Hello from the else!"
+
+0n || 12n
+// ↪ 12n
+
+0n && 12n
+// ↪ 0n
+
+Boolean(0n)
+// ↪ false
+
+Boolean(12n)
+// ↪ true
+
+!12n
+// ↪ false
+
+!0n
+// ↪ true
+
+ +

Methods

+ +
+
BigInt.asIntN()
+
Wraps a BigInt between -2width-1 and 2width-1-1
+
BigInt.asUintN()
+
Wraps a BigInt between 0 and 2width-1
+
+ +

Properties

+ +
+
{{jsxref("BigInt.prototype")}}
+
Allows the addition of properties to a BigInt object.
+
+ +

BigInt instances

+ +

All BigInt instances inherit from BigInt.prototype. The prototype object of the BigInt constructor can be modified to affect all BigInt instances.

+ +

Methods

+ +

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/prototype', 'Methods')}}

+ +

Examples 

+ +

Calculating Primes

+ +
function isPrime(p) {
+  for (let i = 2n; i * i <= p; i++) {
+    if (p % i === 0n) return false;
+  }
+  return true;
+}
+
+// Takes a BigInt as an argument and returns a BigInt
+function nthPrime(nth) {
+  let maybePrime = 2n;
+  let prime = 0n;
+
+  while (nth >= 0n) {
+    if (isPrime(maybePrime)) {
+      nth -= 1n;
+      prime = maybePrime;
+    }
+    maybePrime += 1n;
+  }
+
+  return prime;
+}
+
+nthPrime(20n)
+// ↪ 73n
diff --git a/files/pt-br/web/javascript/reference/global_objects/bigint/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/bigint/prototype/index.html new file mode 100644 index 0000000000..ff8de05541 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/bigint/prototype/index.html @@ -0,0 +1,61 @@ +--- +title: BigInt.prototype +slug: Web/JavaScript/Reference/Global_Objects/BigInt/prototype +tags: + - BigInt + - JavaScript + - Propriedade + - Prototipo + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/prototype +--- +
{{JSRef}}
+ +

A propriedade BigInt.prototype representa o protótipo para o  construtor {{JSxRef("BigInt")}} .

+ +

{{JS_Property_Attributes(0, 0, 0)}}

+ +

Descrição

+ +

Todas instância de {{JSxRef("BigInt")}} herdam de BigInt.prototype. O objeto protótipo do construtor {{JSxRef("BigInt")}} pode ser modificado para afetar todas instâncias de {{JSxRef( "BigInt")}} .

+ +

Propriedades

+ +
+
BigInt.prototype.constructor
+
Retorna a função que cria instâncias deste objeto. Por padrão é o objeto
+ {{JSxRef("BigInt")}}.
+
+ +

Métodos

+ +
+
{{JSxRef("BigInt.prototype.toLocaleString()")}}
+
Retorna uma string com uma representação sensível ao idioma para este número. Sobrescreve o método {{JSxRef("Object.prototype.toLocaleString()")}}
+  
+
{{JSxRef("BigInt.prototype.toString()")}}
+
Retorna uma string respresentando o objeto específicado em um base específica. Sobrescreve o método {{JSxRef("Object.prototype.toString()")}} .
+
{{JSxRef("BigInt.prototype.valueOf()")}}
+
Retorna o valor primitivo de um objeto específicado. Sobrescreve o método {{JSxRef("Object.prototype.valueOf()")}}.
+
+ +

Especificações

+ + + + + + + + + + + + +
EspecificaçõesEstado
{{SpecName('ESDraft', '#sec-bigint.prototype', 'BigInt.prototype')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade

+ + + +

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

diff --git a/files/pt-br/web/javascript/reference/global_objects/boolean/index.html b/files/pt-br/web/javascript/reference/global_objects/boolean/index.html new file mode 100644 index 0000000000..5d8f195d2f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/boolean/index.html @@ -0,0 +1,194 @@ +--- +title: Boolean +slug: Web/JavaScript/Reference/Global_Objects/Boolean +tags: + - Boolean + - Constructor + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +
{{JSRef}}
+ +

O objeto Boolean é um objeto wrapper para um valor booleano.

+ +

Sintaxe

+ +
new Boolean([value])
+ +

Parâmetros

+ +
+
value
+
Opcional. O valor inicial do objeto Boolean.
+
+ +

Descrição

+ +

O valor passado como primeiro parâmetro é convertido para um valor boleano, se necessário. Se o valor é omitido ou é 0, -0, {{jsxref("null")}}, false, {{jsxref("NaN")}}, {{jsxref("undefined")}} ou é uma string vazia(""), o objeto terá um valor inicial de false. Todos outros valores, incluindo qualquer objeto ou string "false",  criam um objeto com valor inicial  true.

+ +

Não confunda os valores primitivos Boolean truefalse com os valores true and false do objeto Boolean.

+ +

Qualquer objeto cujo o valor não é {{jsxref("undefined")}} ou {{jsxref("null")}}, incluindo um objeto Boolean que o valor seja false, é avaliado para true quando passa por uma declaração condicional. Por exemplo, a condição a seguir {{jsxref("Statements/if...else", "if")}} a declaração é avaliada como true:

+ +
var x = new Boolean(false);
+if (x) {
+  // esse código é executado
+}
+
+ +

Esse comportamento não se aplica aos primitivos Boolean. Por exemplo, a condição a seguir {{jsxref("Statements/if...else", "if")}} a declaração é avaliada como false:

+ +
var x = false;
+if (x) {
+  // esse código não é executado
+}
+
+ +

Não use um objeto Boolean para converter um valor não-boleano para um valor boleano. Ao invés disso use Boolean como uma função para executar essa tarefa:

+ +
var x = Boolean(expression);     // preferido
+var x = new Boolean(expression); // não use
+
+ +

Se você especificar qualquer objeto, incluindo um objeto Boolean cujo valor é false, como valor inicial de um objeto Boolean, o novo objeto Boolean terá o valor de true.

+ +
var myFalse = new Boolean(false);   // valor inicial false
+var g = new Boolean(myFalse);       // valor inicial true
+var myString = new String('Hello'); // objeto String
+var s = new Boolean(myString);      // valor inicial true
+
+ +

Não use um um objeto Boolean no lugar de um primitivo Boolean.

+ +

Propriedades

+ +
+
Boolean.length
+
Propriedade Length cujo valor é 1.
+
{{jsxref("Boolean.prototype")}}
+
Representa o protótipo para o construtor Boolean.
+
+ +

Métodos

+ +

O objeto global Boolean contém métodos próprios, entretanto,  ele herda alguns métodos através da cadeia de protótipos:

+ +

Instâncias Boolean

+ +

Todas instâncias Boolean herdam de {{jsxref("Boolean.prototype")}}. Assim como todos os construtores, o protótipo do objeto dita as propriedades e métodos herdados.

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Methods')}}
+ +

Exemplos

+ +

Criando objetos Boolean com um valor inicial false

+ +
var bNoParam = new Boolean();
+var bZero = new Boolean(0);
+var bNull = new Boolean(null);
+var bEmptyString = new Boolean('');
+var bfalse = new Boolean(false);
+
+ +

Criando objetos Boolean com um valor inicial true

+ +
var btrue = new Boolean(true);
+var btrueString = new Boolean('true');
+var bfalseString = new Boolean('false');
+var bSuLin = new Boolean('Su Lin');
+var bArrayProto = new Boolean([]);
+var bObjProto = new Boolean({});
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no Java Script 1.0.
{{SpecName('ES5.1', '#sec-15.6', 'Boolean')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-boolean-objects', 'Boolean')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("6.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/boolean/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/boolean/prototype/index.html new file mode 100644 index 0000000000..614272be40 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/boolean/prototype/index.html @@ -0,0 +1,111 @@ +--- +title: Boolean.prototype +slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +
{{JSRef}}
+ +

A propriedade Boolean.prototype representa o prototype para o construtor de {{jsxref("Boolean")}}.

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

Descrição

+ +

Instancias de {{jsxref("Boolean")}} herdam de Boolean.prototype. Você pode usar os construtores do objeto prototype para adicionar propriedados ou metodos para todas as instancias de {{jsxref("Boolean")}} instances.

+ +

Propriedades

+ +
+
Boolean.prototype.constructor
+
Retorna a função que criou a instancia do prototype. Esta é a função {{jsxref("Boolean")}} por padrão.
+
+ +

Métodos

+ +
+
{{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna a string contendo o codigo do objeto {{jsxref("Boolean")}} ;  pode-se usar esta string para criar um objeto equivalente. Sobreescreve o método {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Boolean.prototype.toString()")}}
+
Retorna uma string com valor "true" ou "false" dependendo qual o valor do objeto. Sobreescreve o método {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Boolean.prototype.valueOf()")}}
+
Retorna o valor primitivo do objeto {{jsxref("Boolean")}}. Sobreescreve o método {{jsxref("Object.prototype.valueOf()")}}.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementano no 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')}} 
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/pt-br/web/javascript/reference/global_objects/boolean/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/boolean/tosource/index.html new file mode 100644 index 0000000000..5acf8e00fa --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/boolean/tosource/index.html @@ -0,0 +1,96 @@ +--- +title: Boolean.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método toSource() retorna uma representação string do código fonte do objeto.

+ +

Sintaxe

+ +
booleanObj.toSource()
+Boolean.toSource()
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O método toSource retorna os seguintes valores:

+ + + +

Este método normalmente é chamando internamente pelo JavaScript e não explicitamente no código fonte.

+ +

Especificações

+ +

Não é parte de nenhum padrão. Implementado no Javascript 1.3.

+ +

Compatibilidade com os navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/boolean/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/boolean/tostring/index.html new file mode 100644 index 0000000000..45820dc57d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/boolean/tostring/index.html @@ -0,0 +1,128 @@ +--- +title: Boolean.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toString +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toString +--- +
{{JSRef}}
+ +

O método toString()  retorna uma string representando o objeto Boolean específico.

+ +

Sintaxe

+ +
bool.toString()
+ +

Valor retornado

+ +

Uma string representando o objeto {{jsxref("Boolean")}} específico.

+ +

Descrição

+ +

O objeto {{jsxref("Boolean")}} sobrepõe o método toString do objeto {{jsxref("Object")}}; ele não herda {{jsxref("Object.prototype.toString()")}}. Para objetos Boolean, o método toString retorna uma representação do objeto como string.

+ +

O JavaScript chama o método toString automaticamente quando uma {{jsxref("Boolean")}} deve ser representado como texto ou quando uma {{jsxref("Boolean")}} é referenciada como uma concatenação de string.

+ +

Para objetos e valores {{jsxref("Boolean")}}, o método nativo toString retorna a string  "true" ou "false", dependendo do valor do objeto boleano.

+ +

Exemplos

+ +

Usando toString

+ +

No código a seguir, flag.toString() retorna "true":

+ +
var flag = new Boolean(true);
+var myVar = flag.toString();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{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')}} 
{{SpecName('ESDraft', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/boolean/valueof/index.html b/files/pt-br/web/javascript/reference/global_objects/boolean/valueof/index.html new file mode 100644 index 0000000000..e61d65033f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/boolean/valueof/index.html @@ -0,0 +1,115 @@ +--- +title: Boolean.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +--- +
{{JSRef}}
+ +

O método valueOf() retorna o valor primitivo de um objeto {{jsxref("Boolean")}}.

+ +

Sintaxe

+ +
bool.valueOf()
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O método valueOf do {{jsxref("Boolean")}} retorna o valor primitivo de um objeto {{jsxref("Boolean")}} ou um literal {{jsxref("Boolean")}} como tipo de dado Boolean.

+ +

Esse método é geralmente chamado internamente pelo JavaScript e não explicitamente no código.

+ +

Exemplos

+ +

Usando valueOf

+ +
x = new Boolean();
+myVar = x.valueOf(); // atribui o valor false à variável myVar
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoCondiçãoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/dataview/index.html b/files/pt-br/web/javascript/reference/global_objects/dataview/index.html new file mode 100644 index 0000000000..7f4974b123 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/dataview/index.html @@ -0,0 +1,168 @@ +--- +title: DataView +slug: Web/JavaScript/Reference/Global_Objects/DataView +tags: + - Constructor + - DataView + - JavaScript + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/DataView +--- +
{{JSRef}}
+ +

DataView provê uma interface de baixo nível para leitura e escrita de múltiplos tipos de número em um {{jsxref("ArrayBuffer")}}, independentemente da extremidade (endianness) da plataforma.

+ +

{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}

+ + + +

Sintaxe

+ +
new DataView(buffer [, byteOffset [, byteLength]])
+ +

Parâmetros

+ +
+
buffer
+
{{jsxref("ArrayBuffer")}} ou {{jsxref("SharedArrayBuffer")}} {{experimental_inline}} existente para usar como armazenamento de um novo objeto DataView.
+
byteOffset {{optional_inline}}
+
A mudança, em bytes, do primeiro byte determinado em um buffer, que será referenciado pela nova view. Se não for especificado, a view do buffer começará no primeiro byte.
+
byteLength {{optional_inline}}
+
O número de elementos no array de bytes. Se não especificado, o tamanho da view será do mesmo tamanho do buffer.
+
+ +

Retorno

+ +

Um novo objeto DataView que representa o buffer de dados especificado. (Provavelmente não foi uma descrição muito útil.)

+ +

Você pode pensar nesse objeto retornado como um "intérprete" de um array buffer de bytes - ele sabe como converter números para inserir em um buffer corretamente, tanto ao ler quanto ao gravar. Isso significa lidar com conversões integer, float, endianness e outros detalhes da representação de números em formato binário.

+ +

Exceções

+ +
+
{{jsxref("RangeError")}}
+
Lançado se o byteOffset ou byteLength especificados ultrapassarem o final do buffer.
+
Por exemplo, se o buffer tem 16 bytes de comprimento, o byteOffset é 8 e o byteLength é 10, esse erro será lançado porque a view resultante tenta estender 2 bytes acima do comprimento total do buffer.
+
+ +

Descrição

+ +

Endianness

+ +

Formatos de números Multi-byte são representados de maneira diferente na memória, dependendo da arquitetura da máquina, veja {{Glossary("Endianness")}} para mais informações. Assessores de DataView fornecem controle explícito de como o dado será acessado, independente do endianness da arquitetura em execução. 

+ +
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
+
+ +

Valores inteiros de 64 bits

+ +

Como JavaScript atualmente não inclui suporte padrão para valores inteiros de 64 bits, DataView não oferece operações nativas de 64 bits. Como solução alternativa, você poderia implementar sua própria função getUint64() para obter um valor com a precisão de {{jsxref("Number.MAX_SAFE_INTEGER")}}, o que pode ser bom para determinados casos.

+ +
function getUint64(dataview, byteOffset, littleEndian) {
+  // split 64-bit number into two 32-bit (4-byte) parts
+  const left =  dataview.getUint32(byteOffset, littleEndian);
+  const right = dataview.getUint32(byteOffset+4, littleEndian);
+
+  // combine the two 32-bit values
+  const combined = littleEndian? left + 2**32*right : 2**32*left + right;
+
+  if (!Number.isSafeInteger(combined))
+    console.warn(combined, 'exceeds MAX_SAFE_INTEGER. Precision may be lost');
+
+  return combined;
+}
+ +

Como alternativa, se você precisar de um intervalo completo de 64 bits, poderá criar um {{jsxref("BigInt")}}.

+ +
function getUint64BigInt(dataview, byteOffset, littleEndian) {
+  // split 64-bit number into two 32-bit (4-byte) parts
+  const left = dataview.getUint32(byteOffset, littleEndian);
+  const right = dataview.getUint32(byteOffset + 4, littleEndian);
+
+  // combine the two 32-bit values as their hex string representations
+  const combined = littleEndian ?
+    right.toString(16) + left.toString(16).padStart(8, '0') :
+    left.toString(16) + right.toString(16).padStart(8, '0');
+
+  return BigInt(`0x${combined}`);
+}
+
+ +

Propriedades

+ +

Todas as instâncias de DataView herdam {{jsxref("DataView.prototype")}} e permitem a adição de propriedades a todos os objetos DataView.

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Properties')}}

+ +

Métodos

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methods')}}

+ +

Exemplo

+ +
var buffer = new ArrayBuffer(16);
+var dv = new DataView(buffer, 0);
+
+dv.setInt16(1, 42);
+dv.getInt16(1); //42
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Substituído pelo ECMAScript 6
{{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ES6')}}Definição inicial no ECMA standard
{{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade entre navegadores

+ + + +

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

+ +

Notas de compatibilidade

+ +

Começando com o Firefox 40, DataView deve ser construído com o operador {{jsxref("Operators/new", "new")}} . Chamando DataView() como uma função sem o new,  irá lançar um {{jsxref("TypeError")}} de agora em diante.

+ +
var dv = DataView(buffer, 0);
+// TypeError: calling a builtin DataView constructor without new is forbidden
+ +
var dv = new DataView(buffer, 0);
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/@@toprimitive/index.html b/files/pt-br/web/javascript/reference/global_objects/date/@@toprimitive/index.html new file mode 100644 index 0000000000..bc2c7b5f35 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/@@toprimitive/index.html @@ -0,0 +1,77 @@ +--- +title: 'Date.prototype[@@toPrimitive]' +slug: Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/@@toPrimitive +--- +
{{JSRef}}
+ +

O método [@@toPrimitive]() converte o objeto Date para um valor primitivo.

+ +

Sintaxe

+ +
Date()[Symbol.toPrimitive](hint);
+
+ +

Valor de retorno

+ +

O valor primitivo do objeto {{jsxref("Date")}}. Dependendo do argumento, o método pode retornar uma cadeia de caracteres (string) ou um número.

+ +

Descrição

+ +

O método [@@toPrimitive]() do objeto {{jsxref("Date")}} retorna um valor primitivo, que pode ser tanto um tipo numérico quanto uma string.

+ +

Se hint é "string" ou "default", [@@toPrimitive]() tenta chamar o método {{jsxref("Object.prototype.toString()", "toString")}}. Se a propriedade toString não existe, ele tenta chamar o método {{jsxref("Object.prototype.valueOf()", "valueOf")}} e se o valueOf não existir, [@@toPrimitive]() joga um {{jsxref("TypeError")}}.

+ +

Se hint é "number", [@@toPrimitive]() tenta primeiro chamar valueOf, e se ele falha, chama toString.

+ +

O JavaScript chama o método [@@toPrimitive]() para converter um objeto para um valor primitivo. Você raramente precisa invocar o método [@@toPrimitive]() em si; JavaScript automaticamente o invoca quando encontra um objeto onde um valor primitivo é esperado.

+ +

Exemplos

+ +

Retornando primitivos de data

+ +
const testDate = new Date(1590757517834);
+// "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
+
+testDate[Symbol.toPrimitive]('string');
+// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
+
+testDate[Symbol.toPrimitive]('number');
+// Returns "1590757517834"
+
+testDate[Symbol.toPrimitive]('default');
+// Returns "Date Fri May 29 2020 14:05:17 GMT+0100 (British Summer Time)"
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype-@@toprimitive', 'Date.prototype.@@toPrimitive')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.@@toPrimitive")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getdate/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getdate/index.html new file mode 100644 index 0000000000..0e4244c42d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getdate/index.html @@ -0,0 +1,127 @@ +--- +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")}}
+ +

Resumo

+ +

O método getDate() retorna o dia do mês da data especificada de acordo com a hora local.

+ +

Sintaxe

+ +
dateObj.getDate()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorna

+ +

O valor retornado por getDate() é um inteiro entre 1 e 31.

+ +

Exemplos

+ +

Exemplo: Usando getDate()

+ +

O segundo statement abaixo atribui o valor 25 à variável day, baseado no valor do objeto {{jsxref("Global_Objects/Date", "Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var day = Xmas95.getDate();
+
+console.log(day); // 25
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado em 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')}} 
+ +

Compatibilidade com 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getday/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getday/index.html new file mode 100644 index 0000000000..594f2aa427 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getday/index.html @@ -0,0 +1,127 @@ +--- +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")}}
+ +

Resumo

+ +

O método getDay() retorna o dia da semana para a data especificada de acordo com a hora local, onde 0 representa o Domingo.

+ +

Sintaxe

+ +
dateObj.getDay()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorna

+ +

O valor retornado por getDay() é um inteiro que corresponde com o dia da semana: 0 para Domingo, 1 para Segunda-Feira, 2 para Terça-Feira, e assim por diante.

+ +

Exemplos

+ +

Exemplo: Usando getDay()

+ +

O segundo statement abaixo atribui o valor 1 à variável weekday (dia da semana), baseado no valor do objeto {{jsxref("Global_Objects/Date", "Date")}} Xmas95. A data 25 de Dezembro de 1995 é uma Segunda-Feira.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var weekday = Xmas95.getDay();
+
+console.log(weekday); // 1
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado em 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')}} 
+ +

Compatibilidade com 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getfullyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getfullyear/index.html new file mode 100644 index 0000000000..140fca67d4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getfullyear/index.html @@ -0,0 +1,127 @@ +--- +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")}}
+ +

Resumo

+ +

O método getFullYear() retorna o ano da data especificada de acordo com a hora local.

+ +

Use este método ao invés do {{jsxref("Date.prototype.getYear()", "getYear()")}}.

+ +

Sintaxe

+ +
dateObj.getFullYear()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorna

+ +

O valor retornado por getFullYear() é um número absoluto. Para datas entre os anos 1000 e 9999, getFullYear() retorna um número de quatro dígitos, por exemplo, 1995. Use esta função para ter certeza de que o ano é compatível com os anos depois de 2000.

+ +

Exemplos

+ +

Exemplo: Usando getFullYear()

+ +

O exemplo seguinte atribui o valor de quatro dígitos do ano corrente à variável year.

+ +
var today = new Date();
+var year = today.getFullYear();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado em 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')}} 
+ +

Compatibilidade com 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/gethours/index.html b/files/pt-br/web/javascript/reference/global_objects/date/gethours/index.html new file mode 100644 index 0000000000..49c79ae5ae --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/gethours/index.html @@ -0,0 +1,126 @@ +--- +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")}}
+ +

Resumo

+ +

O método getHours() retorna a hora para a data especificada, de acordo com a hora local.

+ +

Sintaxe

+ +
dateObj.getHours()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorna

+ +

O valor retornado por getHours() é um inteiro entre 0 e 23.

+ +

Exemplos

+ +

Exemplo: Usando getHours()

+ +

O segundo statement abaixo atribui o valor 23 à variável hours, baseado no valor do objeto {{jsxref("Global_Objects/Date", "Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var hours = Xmas95.getHours();
+
+console.log(hours); // 23
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado em 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')}} 
+ +

Compatibilidade com 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getmilliseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getmilliseconds/index.html new file mode 100644 index 0000000000..4bbd37b571 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getmilliseconds/index.html @@ -0,0 +1,117 @@ +--- +title: Date.prototype.getMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +--- +
{{JSRef}}
+ +

O método getMilliseconds() retorna os milissegundos em uma data específica de acordo com o horário local.

+ +

Sintaxe

+ +
dateObj.getMilliseconds()
+ +

Retorna

+ +

Um número, entre 0 e 999, representando os milissegundos de uma data de acordo com o horário local.

+ +

Exemplos

+ +

Usando o getMilliseconds()

+ +

O exemplo a seguir atribui a porção de milissegundos do horário atual à variável milliseconds:

+ +
var today = new Date();
+var milliseconds = today.getMilliseconds();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getminutes/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getminutes/index.html new file mode 100644 index 0000000000..c053d864c4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getminutes/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.getMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +--- +
{{JSRef}}
+ +

O método getMinutes() retorna os minutos em uma data específica de acordo com o horário local.

+ +

Sintaxe

+ +
dateObj.getMinutes()
+ +

Retorna

+ +

Um número inteiro, entre 0 e 59, representando os minutos em uma data de acordo com o horário local.

+ +

Exemplos

+ +

Usando o getMinutes()

+ +

The second statement below assigns the value 15 to the variable minutes, based on the value of the {{jsxref("Global_Objects/Date", "Date")}} object Xmas95.

+ +

No exemplo abaixo, a segunda linha atribui o valor 15 à variável minutes, baseado no valor de objeto {{jsxref("Global_Objects/Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var minutes = Xmas95.getMinutes();
+
+console.log(minutes); // 15
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getmonth/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getmonth/index.html new file mode 100644 index 0000000000..9685a3a383 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getmonth/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.getMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMonth +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth +--- +
{{JSRef}}
+ +
 
+ +

O método getMonth() retorna o mês na data especificada de acordo com o horário local, como um valor zero-based (onde o zero indica o primeiro mês do ano).

+ +

Sintaxe

+ +
dateObj.getMonth()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorno

+ +

O valor retornado pelo método getMonth() é um inteiro entre 0 e 11. 0 corresponde a Janeiro, 1 a Fevereiro, e assim sucessivamente.

+ +

Exemplos

+ +

Usando o getMonth()

+ +

A segunda declaração abaixo atribui o valor 11 à variavel month,  baseado no valor do objeto {{jsxref("Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var month = Xmas95.getMonth();
+
+console.log(month); // 11
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +


+ Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getseconds/index.html new file mode 100644 index 0000000000..4d4aa2b8c2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getseconds/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.getSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +--- +
{{JSRef}}
+ +

O método getSeconds() retorna os segundos de uma data específica de acordo com o horário local.

+ +

Sintaxe

+ +
dateObj.getSeconds()
+ +

Retorna

+ +

Um número inteiro, entre 0 e 59, representando os segundos de uma data específica de acordo com o horário local.

+ +

Exemples

+ +

Usando o getSeconds()

+ +

The second statement below assigns the value 30 to the variable seconds, based on the value of the {{jsxref("Global_Objects/Date", "Date")}} object Xmas95.

+ +

No exemplo a seguir, a segunda linha atribui o valor 30 à variável seconds, baseado no valor do objeto {{jsxref("Global_Objects/Date", "Date")}} Xmas95.

+ +
var Xmas95 = new Date('December 25, 1995 23:15:30');
+var seconds = Xmas95.getSeconds();
+
+console.log(seconds); // 30
+
+ +

Espeficicações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suport básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/gettime/index.html b/files/pt-br/web/javascript/reference/global_objects/date/gettime/index.html new file mode 100644 index 0000000000..15bf8855fb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/gettime/index.html @@ -0,0 +1,137 @@ +--- +title: Date.prototype.getTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTime +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime +--- +
{{JSRef}}
+ +

O método getTime() retorna o valor numérico correspondente ao horário da data especificada de acordo com o horário universal.

+ +

Você pode usar este método para atribuir uma data e horário a outro objeto {{jsxref("Date")}}. Este método é funcionalmente equivalente ao método {{jsxref("Date.valueof", "valueOf()")}}.

+ +

Sintaxe

+ +
dateObj.getTime()
+ +

Retorna

+ +

Um número representando os milissegundos passados entre 1 de Janeiro de 1970 00:00:00 UTC e a data atual.

+ +

Exemplos

+ +

Usando getTime() para duplicar datas

+ +

Construindo um objeto de data com um horário idêntico.

+ +
// Sendo o mês iniciado em zero, birthday será 10 de Janeiro de 1995
+var birthday = new Date(1994, 12, 10);
+var copy = new Date();
+copy.setTime(birthday.getTime());
+
+ +

Medindo tempo de execução

+ +

Subtrair duas chamadas subsequentes a getTime() em objetos {{jsxref("Date")}} recém criados resultará no intervalo de tempo entre essas duas chamadas. Isso pode ser usado para calcular o tempo de execução de algumas operações. Veja também {{jsxref("Date.now()")}} para evitar instanciar objetos {{jsxref("Date")}} desnecessariamente.

+ +
var end, start;
+
+start = new Date();
+for (var i = 0; i < 1000; i++) {
+  Math.sqrt(i);
+}
+end = new Date();
+
+console.log('Operation took ' + (end.getTime() - start.getTime()) + ' msec');
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado em 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html b/files/pt-br/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html new file mode 100644 index 0000000000..2a10c9b6d6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html @@ -0,0 +1,107 @@ +--- +title: Date.prototype.getTimezoneOffset() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +--- +
{{JSRef}}
+ +

O método getTimezoneOffset() retorna a diferença, em minutos, do deslocamento de fuso horário entre o UTC (Tempo Universal Coordenado) e a localidade atual.

+ +

Sintaxe

+ +
dateObj.getTimezoneOffset()
+ +

Parâmetros

+ +

Nenhum

+ +

Valor de retorno

+ +

O deslocamento de fuso horário é a diferença, em minutos, entre o UTC (Tempo Universal Coordenado) e o horário local. Perceba que isto significa que o deslocamento será negativo se o fuso horário local está à direita do UTC e positivo se está a esquerda. Por exemplo, se seu fuso horário é UTC+10(Padrão da Austrália Oriental), -600 será retornado. O Horário de verão evita que este valor seja sempre o mesmo para uma determinada localidade.

+ +

Exemplo

+ +

Utilizando getTimezoneOffset()

+ +
var x = new Date();
+var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãocomentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
+ +

Compatibilidade entre navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcdate/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcdate/index.html new file mode 100644 index 0000000000..8b370ec07d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcdate/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.getUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +--- +
{{JSRef}}
+ +

O método getUTCDate() retorna o dia (data) do mês na data especificada de acordo com o horário universal.

+ +

Sintaxe

+ +
dateObj.getUTCDate()
+ +

Retorna

+ +

Um número inteiro, entre 1 e 31, representando o dia do mês na data especificada de acordo com o horário universal.

+ +

Exemplos

+ +

Usando getUTCDate()

+ +

O exemplo a seguir atribui o dia da data atual à variável day:

+ +
var today = new Date();
+var day = today.getUTCDate();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcday/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcday/index.html new file mode 100644 index 0000000000..d7eb82b8b4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcday/index.html @@ -0,0 +1,117 @@ +--- +title: Date.prototype.getUTCDay() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +--- +
{{JSRef}}
+ +

O método getUTCDay() retorna o dia da semana na data especificada de acordo com o horário universal, onde 0 representa domingo.

+ +

Sintaxe

+ +
dateObj.getUTCDay()
+ +

Parâmetros

+ +

Nenhum.

+ +

Valor retornado

+ +

O valor retornado por getUTCDay() é um inteiro correspondente ao dia da semana: 0 para domingo, 1 para segunda-feira, 2 para terça-feira e assim por diante.

+ +

Exemplos

+ +

Usando getUTCDay()

+ +

O exemplo a seguir atribui a parte do dia da semana da data atual à variável diaDaSemana.

+ +
var hoje = new Date();
+var diaDaSemana = hoje.getUTCDay();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}}
+ +

Compatibilidade dos navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcfullyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcfullyear/index.html new file mode 100644 index 0000000000..4c6788fc72 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcfullyear/index.html @@ -0,0 +1,81 @@ +--- +title: Date.prototype.getUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +--- +
{{JSRef}}
+ +

O método getUTCFullYear() retorna o ano na data indicada de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-getutcfullyear.html")}}
+ + + +

Sintaxe

+ +
dateObj.getUTCFullYear()
+ +

Retorna

+ +

Um número que representa o ano na data indicada de acordo com o horário universal.

+ +

Descrição

+ +

O valor retornado por getUTCFullYear() é um número absoluto compatível com ano 2000, por exemplo, 1995.

+ +

 Exemplos

+ +

Usando getUTCFullYear()

+ +

O exemplo a seguir atribui o valor de 4 dígitos do ano atual à variável year.

+ +
var today = new Date();
+var year = today.getUTCFullYear();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de Browser

+ + + +

{{Compat("javascript.builtins.Date.getUTCFullYear")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutchours/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutchours/index.html new file mode 100644 index 0000000000..7f962f722e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutchours/index.html @@ -0,0 +1,63 @@ +--- +title: Date.prototype.getUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +tags: + - Date + - JavaScript + - Prototipo + - Prototype + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +--- +
{{JSRef}}
+ +
O método getUTCHours() retorna o número de horas na data especificada de acordo com o horário universal (UTC).
+ +

{{EmbedInteractiveExample("pages/js/date-getutchours.html")}}

+ + + +

Sintaxe

+ +
dateObj.getUTCHours()
+ +

Valor retornado

+ +

Um número inteiro, entre 0 e 23, representando as horas em uma data de acordo com o horário universal (UTC).

+ +

Exemplos

+ +

Usando getUTCHours()

+ +

O exemplo a seguir atribui a porção de horas do horário corrente à variável hours.

+ +
var today = new Date();
+var hours = today.getUTCHours();
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}
+ +

Compatibilidade do navegador

+ + + +

{{Compat("javascript.builtins.Date.getUTCHours")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html new file mode 100644 index 0000000000..9f9fd540bf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html @@ -0,0 +1,77 @@ +--- +title: Date.prototype.getUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +tags: + - JavaScript + - Prototipo + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +--- +
{{JSRef}}
+ +

o método getUTCMilliseconds() retorna os milisegundos na data especificada, de acordo com o horário universal (UTC).

+ +

Sintaxe

+ +
dateObj.getUTCMilliseconds()
+ +

Valor de retorno

+ +

Um número inteiro, entre 0 e 999, representando os milisegundos na data especificada de acordo com o horário universal (UTC).

+ +

Exemplos

+ +

Usando getUTCMilliseconds()

+ +

O exemplo a seguir associa a parte dos milissegundos do tempo atual à variável milissegundos.

+ +
var hoje = new Date();
+var milissegundos = today.getUTCMilliseconds();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Date.getUTCMilliseconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcminutes/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcminutes/index.html new file mode 100644 index 0000000000..98eaee648d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcminutes/index.html @@ -0,0 +1,62 @@ +--- +title: Date.prototype.getUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +tags: + - Date + - JavaScript + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +--- +
{{JSRef}}
+ +

O método getUTCMinutes() retorna os minutos na data especificada de acordo com o tempo universal.

+ +
{{EmbedInteractiveExample("pages/js/date-getutcminutes.html")}}
+ +

Sintaxe

+ +
dateObj.getUTCMinutes()
+ +

Valor retornado

+ +

Um número inteiro, entre 0 e 59, representando os minutos na data especificada de acordo com o horário universal (UTC).

+ +

Exemplos

+ +

Usando getUTCMinutes()

+ +

O seguinte exemplo atribui a parte dos minutos do tempo atual para a variável minutes.

+ +
var today = new Date();
+var minutes = today.getUTCMinutes();
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.getUTCMinutes")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcmonth/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcmonth/index.html new file mode 100644 index 0000000000..9eeed116d8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcmonth/index.html @@ -0,0 +1,77 @@ +--- +title: Date.prototype.getUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +tags: + - Design + - JavaScript + - Prototipo + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +--- +
{{JSRef}}
+ +

A função getUTCMonth() retorna o mês da data especificada de acordo com o horário universal, como um valor iniciado em zero (aonde zero indica o primeiro mês do ano).

+ +

Sintaxe

+ +
dateObj.getUTCMonth()
+ +

Valor retornado

+ +

Um número inteiro, entre 0 e 11, correspondente ao mês da data informada de acordo com o horário universal. 0 para Janeiro, 1 para Fevereiro, 2 para Março, e assim em diante.

+ +

Exemplos

+ +

Usando getUTCMonth()

+ +

O exemplo a seguir atribui a parte do mês da data atual a variável month.

+ +
var today = new Date();
+var month = today.getUTCMonth();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Date.getUTCMonth")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getutcseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getutcseconds/index.html new file mode 100644 index 0000000000..40b747c1cb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getutcseconds/index.html @@ -0,0 +1,75 @@ +--- +title: Date.prototype.getUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +--- +
{{JSRef}}
+ +

O método getUTCSeconds() retorna os segundos na data informada de acordo com a hora universal.

+ +
{{EmbedInteractiveExample("pages/js/date-getutcseconds.html")}}
+ +

Sintaxe

+ +
dateObj.getUTCSeconds()
+ +

Valor de retorno

+ +

Um número inteiro, entre 0 e 59, representando os segundos da data informada de acordo com a hora universal.

+ +

Exemplos

+ +

Usando getUTCSeconds()

+ +

The following example assigns the seconds portion of the current time to the variabl

+ +

O exemplo a seguir atribui a parte dos segundos da hora atual à variável seconds.

+ +
var today = new Date();
+var seconds = today.getUTCSeconds();
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navegadores

+ + + +

{{Compat("javascript.builtins.Date.getUTCSeconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/getyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/getyear/index.html new file mode 100644 index 0000000000..47ece39f41 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/getyear/index.html @@ -0,0 +1,169 @@ +--- +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}}
+ +

Resumo

+ +

O método getYear() retorna o ano especificado pela data de acordo com a hora local. Por conta do fato de que getYear() não retorna anos completos ("problema do ano 2000"), este método não é mais utilizado e foi substituido pelo método {{jsxref("Date.prototype.getFullYear", "getFullYear()")}}.

+ +

Sintaxe

+ +
dateObj.getYear()
+ +

Parâmetros

+ +

Nenhum.

+ +

Retorna

+ +

O método getYear() retorna o ano menos 1900; então:

+ + + +

Para levar em consideração anos antes e depois de 2000, você deve utilizar {{jsxref("Date.prototype.getFullYear", "getFullYear()")}} ao invés de getYear() para que o ano seja especificado por completo.

+ +

Retrocombatibilidade

+ +

Comportamento em JavaScript 1.2 e anteriores

+ +

O método getYear() retorna um ano de 2 ou 4 dígitos:

+ + + +

Exemplos

+ +

Exemplo: Anos entre 1900 e 1999

+ +

O segundo statement atribui o valor 95 à variável year.

+ +
var Xmas = new Date('December 25, 1995 23:15:00');
+var year = Xmas.getYear(); // returns 95
+
+ +

Exemplo: Anos depois de 1999

+ +

O segundo statement atribui o valor 100 à variável year.

+ +
var Xmas = new Date('December 25, 2000 23:15:00');
+var year = Xmas.getYear(); // returns 100
+
+ +

Exemplo: Anos antes de 1900

+ +

O segundo statement atribui o valor  -100 à variável year.

+ +
var Xmas = new Date('December 25, 1800 23:15:00');
+var year = Xmas.getYear(); // returns -100
+
+ +

Exemplo: Setando e recuperando um ano entre 1900 e 1999

+ +

O segundo statement atribui o valor 95 à variável year, representanto o ano 1995.

+ +
var Xmas.setYear(95);
+var year = Xmas.getYear(); // returns 95
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado em JavaScript 1.3.
{{SpecName('ES5.1', '#sec-B.2.4', 'Date.prototype.getYear')}}{{Spec2('ES5.1')}}Definido em (informativo) compatibilidade annex.
{{SpecName('ES6', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}{{Spec2('ES6')}}Definido em (normativo) annex para funcionalidades adicionais para futuros browsers web.
+ +

Compatibilidade com 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/index.html b/files/pt-br/web/javascript/reference/global_objects/date/index.html new file mode 100644 index 0000000000..b83fe9a4fd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/index.html @@ -0,0 +1,271 @@ +--- +title: Date +slug: Web/JavaScript/Reference/Global_Objects/Date +tags: + - Date + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Resumo

+ +

Cria uma instância JavaScript de Date que representa um único momento no tempo. Objetos Date são baseados no valor de tempo que é o número de milisegundos desde 1º de Janeiro de 1970 (UTC).

+ +

Construtor

+ +
new Date();
+new Date(valor);
+new Date(dataString);
+new Date(ano, mês, dia, hora, minuto, segundo, milissegundo);
+ +

{{ note('Note que objetos JavaScript Date só podem ser instanciados chamando JavaScript Date como um construtor: chamá-lo como uma função regular (ou seja, sem o operador new) irá retornar uma string ao invés de um objeto Date; ao contrário de outros tipos de objetos JavaScript, objetos JavaScript Date não têm sintaxe literal.') }}

+ +

Parâmetros para o constructor Date

+ +

Nota: Quando Date for chamado como um construtor com mais de um argumento, se os valores forem maiores do que seu limite lógico (e.g. se 13 for fornecido como um valor para mês ou 70 for o valor para minuto), o valor adjacente será ajustado. E.g. new Date(2013, 13, 1) é equivalente a new Date(2014, 1, 1), ambos criam uma data para 2014-02-01 (note que o mês começa em 0). Similarmente para outros valores: new Date(2013, 2, 1, 0, 70) é equivalente a new Date(2013, 2, 1, 1, 10), pois ambos criam uma data para 2013-03-01T01:10:00.

+ +
+
value
+
Um valor inteiro representando o número de milisegundos desde 1 de Janeiro de 1970 00:00:00 UTC (Era Unix ou Marco Zero).
+
+ +
+
dataString
+
Um valor do tipo String que representa uma data. A string deverá estar uma formato reconhecido pelo método {{jsxref("Date.parse()")}} (IETF-compliant RFC 2822 timestamps e também uma versão da ISO8601).
+
+ +
+
year
+
Um valor inteiro que representa o ano. Valores de 0 a 99 correspondem aos anos de 1900 a 1999. Veja o exemplo abaixo.
+
+ +
+
month
+
Um valor inteiro que representa o mês, começando com 0 para Janeiro até 11 para Dezembro.
+
+ +
+
day
+
Um valor inteiro que representa o dia do mês.
+
+ +
+
hour
+
Um valor inteiro que representa a hora do dia.
+
+ +
+
minute
+
Um valor inteiro que representa o segmento de um minuto de tempo.
+
+ +
+
second
+
Um valor inteiro que representa o segmento de segundo do tempo.
+
+ +
+
millisecond
+
Um valor inteiro que representa o segmento de milisegundo do tempo.
+
+ +

Descrição

+ + + +

Propriedades

+ +
+
{{jsxref("Date.prototype")}}
+
Permite adicionar propriedades a um objeto javaScript Date.
+
Date.length
+
O valor de Date.length é 7. Esse é o número de argumentos manipulados pelo construtor.
+
+ +

{{ jsOverrides("Function", "properties", "prototype") }}

+ +

Métodos

+ +
+
{{jsxref("Date.now()")}}
+
Retorna o valor numérico correspondente ao tempo corrente - o número de milisegundos passados desde 1 de Janeiro de 1970 00:00:00 UTC.
+
{{jsxref("Date.parse()")}}
+
Analisa uma string que representa uma data e retorna o número de milisegundos desde 1 de Janeiro, 1970, 00:00:00, hora local.
+
{{jsxref("Date.UTC()")}}
+
Aceita os mesmos parâmetros como a forma mais longa do construtor (i.e. 2 até 7) e retorna o número de milisegundos desde 1 de Janeiro, 1970, 00:00:00 UTC. 
+
+ +

{{ jsOverrides("Function", "Methods", "now", "parse", "UTC") }}

+ +

Instâncias JavaScript de Date 

+ +

Todas as instâncias Date são herdadas de {{jsxref("Date.prototype")}}. O objeto protótipo do construtor Date pode ser modificado para afetar todas as instâncias de Date.

+ +

Métodos

+ +

{{ page("/en-US/docs/JavaScript/Reference/Global_Objects/Date/prototype", "Methods") }}

+ +

Exemplos

+ +

Várias formas de se criar um objeto Date

+ +

Os seguintes exemplos mostram várias formas de se criar datas em JavaScript: 

+ +
+

Nota: a conversão de strings com o construtor de Date (Date.parse é equivalente ao contrutor) é fortemente desencorajada devido às inconsistências e diferenças dos navegadores.

+
+ +
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);
+
+ +

Anos com dois dígitos mapeados para 1900 - 1999

+ +

Para criar e obter datas entre os anos 0 e 99 os métodos {{jsxref("Date.prototype.setFullYear()")}} e {{jsxref("Date.prototype.getFullYear()")}} devem ser usados.

+ +
var data = new Date(98, 1); // Dom Fev 01 1998 00:00:00 GMT+0000 (GMT)
+
+// Métodos em desuso, 98 mapeia para 1998 aqui também
+data.setYear(98);           // Dom Fev 01 1998 00:00:00 GMT+0000 (GMT)
+
+data.setFullYear(98);       // Sab Fev 01 0098 00:00:00 GMT+0000 (BST)
+ +

Calculando o tempo decorrido

+ +

Os seguintes exemplos mostram como determinar o tempo decorrido entre duas datas no JavaScript em milissegundos.

+ +

Devido aos tamanhos diferentes dos dias (devido à mudança do horário de verão), meses e dias, expressar o tempo decorrido em unidades maiores que horas, minutos e segundos requer analisar os problemas e deve ser cuidadosamente investigado antes de se tentar utilizar.

+ +
// usando objetos Date
+var inicio = Date.now();
+
+// o evento para o tempo vai aqui:
+facaAlgoPorUmLongoTempo();
+var fim = Date.now();
+var decorrido = fim - inicio; // tempo decorrido em milisegundos
+
+ +
// utilizando métodos embutidos
+var inicio = new Date();
+
+// o evento para o tempo vai aqui:
+facaAlgoPorUmLongoTempo();
+var fim = new Date();
+var decorrido = fim.getTime() - inicio.getTime(); // tempo decorrido em milisegundos
+
+ +
// para testar uma função e obter o seu retorno
+function imprimirTempoDecorrido(fTeste) {
+	var nHoraInicial = Date.now(),
+        vRetorno = fTeste(),
+        nHoraFinal = Date.now();
+
+	alert("Tempo decorrido: " + String(nHoraFinal - nHoraInicial) + " milisegundos");
+	return vRetorno;
+}
+
+retornoDaSuaFuncao = imprimirTempoDecorrido(suaFuncao);
+
+ +
+

Nota: Em navegadores que suportam a API de Desempenho Web ({{domxref("window.performance", "Web Performance API", "", 1)}}) com o recurso de tempo de alta resolução, {{domxref("Performance.now()")}} pode fornecer medidas de tempo decorrido mais confiáveis e precisas do que {{jsxref("Date.now()")}}.

+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ESDraft', '#sec-date-objects', 'Date')}}{{Spec2('ESDraft')}} 
{{SpecName('ES6', '#sec-date-objects', 'Date')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9', 'Date')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no JavaScript 1.1.
+ +

Compatibilidade dos navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown()}} [1]{{CompatVersionUnknown()}} [1]{{CompatVersionUnknown()}} [2]{{CompatVersionUnknown()}} [1]{{CompatVersionUnknown()}} [1]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}{{CompatVersionUnknown()}}
+
+ +

[1] Alguns navegadores pode ter problemas quando verificam datas: 3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings

+ +

[2] ISO8601 Date Format não é suportado o Internet Explorer 8 e outras versões podem ter problemas quando convertem datas

diff --git a/files/pt-br/web/javascript/reference/global_objects/date/now/index.html b/files/pt-br/web/javascript/reference/global_objects/date/now/index.html new file mode 100644 index 0000000000..2eef32c0b7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/now/index.html @@ -0,0 +1,126 @@ +--- +title: Date.now() +slug: Web/JavaScript/Reference/Global_Objects/Date/now +tags: + - JavaScript + - Reference + - Referencia + - data + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/now +--- +
{{JSRef("Global_Objects", "Date")}}
+ +

Resumo

+ +

O método Date.now() retorna o número de milisegundos decorridos desde 1 de janeiro de 1970 00:00:00 UTC.

+ +

Sintaxe

+ +
var timeInMs = Date.now();
+
+ +

Parâmetros

+ +

Nenhum.

+ +

Descrição

+ +

O método now() retorna os milisegundos decorridos desde 1 de janeiro de 1970 00:00:00 UTC até agora como um  {{jsxref("Global_Objects/Number", "Number")}}.

+ +

Por que now é um método estático de Date, você sempre o usará como Date.now().

+ +

Polyfill

+ +

Este método foi padronizado no ECMA-262 5th edition. Em ambientes que não estão atualizados para suportar este método você pode suprir esta carência utilizando o seguinte:

+ +
if (!Date.now) {
+  Date.now = function now() {
+    return new Date().getTime();
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.9.4.4', 'Date.now')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.5
{{SpecName('ES6', '#sec-date.now', 'Date.now')}}{{Spec2('ES6')}}
+ +

Compatibilidade de Browser

+ +

Baseado em Kangax's compat table.

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico53910.504
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/parse/index.html b/files/pt-br/web/javascript/reference/global_objects/date/parse/index.html new file mode 100644 index 0000000000..ccba92e923 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/parse/index.html @@ -0,0 +1,214 @@ +--- +title: Date.parse() +slug: Web/JavaScript/Reference/Global_Objects/Date/parse +translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse +--- +
 {{JSRef("Global_Objects", "Date")}}
+ +

Resumo

+ +

O método Date.parse() analisa uma representação de data em string, e retorna o número de milisegundos desde 01 de Janeiro de 1970, 00:00:00 UTC ou NaN se a string não for reconhecida ou, em alguns casos, contiver valores inválidos de data (ex. 2015-02-31).

+ +

O uso de Date.parse não é recomendado, uma vez que até ES5 a análise de strings era inteiramente dependente de implementação. Ainda existem muitas diferenças de como diferentes plataformas analisam strings de data, então strings de data devem ser manualmente analisadas (uma biblioteca pode ajudar caso seja necessário atender a vários formatos)

+ +

Sintaxe

+ +

Chamada direta:

+ +
Date.parse(dateString)
+ +

Chamada implícita:

+ +
new Date(dateString)
+ +

Parâmetros

+ +
+
dateString
+
Uma string de representação de datas no format RFC2822 ou ISO 8601 (outros formatos podem ser utilizados, mas os resultados podem não ser os esperados).
+
+ +

Descrição

+ +

O método parse() analisa uma string de data (como "Dec 25, 1995") e retorna o número de milisegundos desde 01 de Janeiro de 1970, 00:00:00 UTC. Esta função é útil para definir valores de data baseados em valores de string, por exemplo em conjunto com o método {{jsxref("Date.prototype.setTime()", "setTime()")}} e o objeto {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Dada uma string representando um tempo, parse() retorna o valor temporal. É aceito o RFC2822 / IETF sintaxe de data (RFC2822 Section 3.3), ex.: "Mon, 25 Dec 1995 13:30:00 GMT". A função entende as abreviações dos fusos horários continentais dos EUA, mas para uso geral, use um deslocamento de fuso horário, por exemplo, "Seg, 25 Dez 1995 13:30:00 +0430" (4 horas, 30 minutos à leste do Meridiano de Greenwich). Se o fuso horário não é especificado e a string está em um formato ISO reconhecido pela ES5, então é adotado o formato UTC (Tempo Universal Coordenado). GMT e UTC são considerados equivalentes. O fuso horário do seu horário local é usado para interpreatar argumentos na RFC2822 Formato 3.3 (ou qualquer formato não reconhecido como ISO 8601 na ES5) que não contenha informação de fuso horário. + +

Suporte ao formato ECMAScript 5 ISO-8601

+ +

Astring Data e hora pode ser no formato ISO 8601. Por exemplo, "2011-10-10" (apenas data) ou "2011-10-10T14:48:00" (data e hora) podem ser passados ou convertidos. O fuso horario UTC é usado para interpretar  argumentos no formato ISO 8601 que não contenham informação de fuso horário (note que ECMAScript ed 6 draft especifica que  a string do tipo data e hora sem um fuso horário são tratados como data local, não UTC).

+ +

While time zone specifiers are used during date string parsing to interpret the argument, the value returned is always the number of milliseconds between January 1, 1970 00:00:00 UTC and the point in time represented by the argument.

+ +

Because parse() is a static method of {{jsxref("Global_Objects/Date", "Date")}}, it is called as Date.parse() rather than as a method of a {{jsxref("Global_Objects/Date", "Date")}} instance.

+ +

Differences in assumed time zone

+ +

Given a date string of "March 7, 2014", parse() assumes a local time zone, but given an ISO format such as "2014-03-07" it will assume a time zone of UTC. Therefore {{jsxref("Global_Objects/Date", "Date")}} objects produced using those strings will represent different moments in time unless the system is set with a local time zone of UTC. This means that two date strings that appear equivalent may result in two different values depending on the format of the string that is being converted (this behavior is changed in ECMAScript ed 6 so that both will be treated as local).

+ +

Fall-back to implementation-specific date formats

+ +

The ECMAScript specification states: If the String does not conform to the standard format the function may fall back to any implementation–specific heuristics or implementation–specific parsing algorithm. Unrecognizable strings or dates containing illegal element values in ISO formatted strings shall cause Date.parse() to return {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

However, invalid values in date strings not recognized as ISO format as defined by ES5 may or may not result in {{jsxref("Global_Objects/NaN", "NaN")}}, depending on the browser and values provided, e.g.:

+ +
// Non-ISO string with invalid date values
+new Date('23/25/2014');
+
+ +

will be treated as a local date of 25 November, 2015 in Firefox 30 and an invalid date in Safari 7. However, if the string is recognized as an ISO format string and it contains invalid values, it will return {{jsxref("Global_Objects/NaN", "NaN")}} in all browsers compliant with ES5:

+ +
// ISO string with invalid values
+new Date('2014-25-23').toISOString();
+// returns "RangeError: invalid date" in all es5 compliant browsers
+
+ +

SpiderMonkey's implementation-specific heuristic can be found in jsdate.cpp. The string "10 06 2014" is an example of a non–conforming ISO format and thus falls back to a custom routine. See also this rough outline on how the parsing works.

+ +
new Date('10 06 2014');
+
+ +

will be treated as a local date of 6 October, 2014 and not 10 June, 2014. Other examples:

+ +
new Date('foo-bar 2014').toString();
+// returns: "Invalid Date"
+
+Date.parse('foo-bar 2014');
+// returns: NaN
+
+ +

Examples

+ +

Example: Using Date.parse()

+ +

If IPOdate is an existing {{jsxref("Global_Objects/Date", "Date")}} object, it can be set to August 9, 1995 (local time) as follows:

+ +
IPOdate.setTime(Date.parse('Aug 9, 1995'));
+ +

Some other examples of parsing non–standard date strings:

+ +
Date.parse('Aug 9, 1995');
+ +

Returns 807937200000 in time zone GMT-0300, and other values in other time zones, since the string does not specify a time zone and is not ISO format, therefore the time zone defaults to local.

+ +
Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');
+ +

Returns 807926400000 no matter the local time zone as GMT (UTC) is provided.

+ +
Date.parse('Wed, 09 Aug 1995 00:00:00');
+ +

Returns 807937200000 in time zone GMT-0300, and other values in other time zones, since there is no time zone specifier in the argument and it is not ISO format, so is treated as local.

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');
+ +

Returns 0 no matter the local time zone as a time zone GMT (UTC) is provided.

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00');
+ +

Returns 14400000 in time zone GMT-0400, and other values in other time zones, since no time zone is provided and the string is not in ISO format, therfore the local time zone is used.

+ +
Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');
+ +

Returns 14400000 no matter the local time zone as a time zone GMT (UTC) is provided.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition.StandardInitial definition. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}}{{Spec2('ES5.1')}}ISO 8601 format added.
{{SpecName('ES6', '#sec-date.parse', 'Date.parse')}}{{Spec2('ES6')}}
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ISO 8601 format{{CompatVersionUnknown}}{{CompatGeckodesktop("2.0")}}{{CompatIE("9")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
ISO 8601 format{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setdate/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setdate/index.html new file mode 100644 index 0000000000..92748130fc --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setdate/index.html @@ -0,0 +1,80 @@ +--- +title: Date.prototype.setDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setDate +tags: + - Date + - JavaScript + - Métodos + - Prototype + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setDate +--- +
{{JSRef}}
+ +

O método setDate() configura o dia do objeto {{jsxref("Date")}} relativamente ao início do mês configurado previamente.

+ +
{{EmbedInteractiveExample("pages/js/date-setdate.html")}}
+ + + +

Sintaxe

+ +
dateObj.setDate(dayValue)
+ +

Parâmetros

+ +
+
dayValue
+
Um número inteiro que representa o dia do mês.
+
+ +

Valor de retorno

+ +

O número de milisegundos entre 1o de janeiro de 1970 00:00:00 UTC e a data indicada (o objeto {{jsxref("Date")}} é mudado no lugar).

+ +

Descrição

+ +

Se o dayValue estiver fora da extensão de valores de data para o mês, setDate() vai atualizar o objeto {{jsxref("Date")}} consequentemente.

+ +

Por exemplo, se 0 for fornecido para dayValue, a data será configurada para o último dia do mês anterior.

+ +

Se um número negativo for fornecido para dayValue, a data será configurada contando-se regressivamente desde o último dia do mês anterior. -1 resultará na data sendo configurada para um dia antes do último dia o mês anterior.

+ +

Exemplos

+ +

Usando setDate()

+ +
var theBigDay = new Date(1962, 6, 7); // 1962-07-07 (7th of July 1962)
+theBigDay.setDate(24);  // 1962-07-24 (24th of July 1962)
+theBigDay.setDate(32);  // 1962-08-01 (1st of August 1962)
+theBigDay.setDate(22);  // 1962-08-22 (22th of August 1962)
+theBigDay.setDate(0);   // 1962-07-31 (31th of July 1962)
+theBigDay.setDate(98);  // 1962-10-06 (6th of October 1962)
+theBigDay.setDate(-50); // 1962-08-11 (11th of August 1962)
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}
+ +

Compatibilidade de Browsers

+ + + +

{{Compat("javascript.builtins.Date.setDate")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setfullyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setfullyear/index.html new file mode 100644 index 0000000000..4f38399a21 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setfullyear/index.html @@ -0,0 +1,80 @@ +--- +title: Date.prototype.setFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +tags: + - Date + - JavaScript + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +--- +
{{JSRef}}
+ +

O método setFullYear() atribui o ano completo para a data especificada de acordo com o horário universal (UTC). Retorna uma nova data e hora.

+ +
{{EmbedInteractiveExample("pages/js/date-setfullyear.html")}}
+ + + +

Sintaxe

+ +
dateObj.setFullYear(yearValue[, monthValue[, dateValue]])
+ +

Parâmetros

+ +
+
yearValue
+
Um inteiro especificando o valor número de um ano, por exemplo, 1995.
+
monthValue
+
Opcional. Um inteiro entre 0 e 11 representando os meses Janeiro até Dezembro.
+
dateValue
+
Opcional. Um inteiro entre 1 e 31 representando o dia do mês. Se você especificar o parâmetro dateValue, você deve também especificar monthValue.
+
+ +

Valor retornado

+ +

O número de milisegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especificar os parâmetros monthValue e dateValue, os valores retornados dos métodos {{jsxref("Date.prototype.getMonth()", "getMonth()")}} e {{jsxref("Date.prototype.getDate()", "getDate()")}} são usados.

+ +

Se um parâmetro que você especificou está fora do alcance esperado, setFullYear() tenta atualizar os outros parâmetros e a informação de data no objeto {{jsxref("Date")}} adequadamente. Por exemplo, se você especificar 15 para o monthValue, o ano será incrementado em 1 (yearValue + 1), e 3 é usado para o mês.

+ +

Exemplos

+ +

Usando setFullYear()

+ +
var theBigDay = new Date();
+theBigDay.setFullYear(1997);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setFullYear")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/sethours/index.html b/files/pt-br/web/javascript/reference/global_objects/date/sethours/index.html new file mode 100644 index 0000000000..77b161e0ce --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/sethours/index.html @@ -0,0 +1,85 @@ +--- +title: Date.prototype.setHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setHours +tags: + - Date + - JavaScript + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setHours +--- +
{{JSRef}}
+ +

O método setHours() atribui as horas para uma data especificada de acordo com a hora local e retorna o número de milissegundos desde do dia 1 de Janeiro de 1970 00:00:00 UTC até o tempo representado pela instância {{jsxref("Date")}} atualizada.

+ +
{{EmbedInteractiveExample("pages/js/date-sethours.html")}}
+ + + +

Sintaxe

+ +
dateObj.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
+ +

Versões anteriores ao JavaScript 1.3

+ +
dateObj.setHours(hoursValue)
+ +

Parâmetros

+ +
+
hoursValue
+
Idealmente, um número inteiro entre 0 e 23, representando a hora. Se um valor maior que 23 for fornecido, a data e hora será incrementada pelas horas extras.
+
minutesValue
+
Opcional. Idealmente, um número inteiro entre 0 e 59, representando os minutos. Se um valor maior que 59 for fornecido, a data e hora será incrementada em minutos extras.
+
secondsValue
+
Opcional. Idealmente, um número inteiro entre 0 e 59, representando os segundos. Se um valor maior que 59 for fornecido, a data e hora será incrementada em segundos extras. Se você especificar o parâmetro secondsValue, também deverá especificar parâmetro minutesValue.
+
msValue
+
Opcional. Idealmente, um número entre 0 e 999, representando os milissegundos. Se um valor maior que 999 for fornecido, a data e hora será incrementada em milissegundos extras. Se você especificar o parâmetro msValue, você também deve especificar minutesValue e secondsValue.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre dia 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especifica os parâmetros minutesValue, secondsValue, e msValue, os valores retornados dos métodos {{jsxref("Date.prototype.getMinutes()", "getMinutes()")}}, {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}}, e {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} são usados.

+ +

Se um parâmetro que você especificar estiver fora do intervalo esperado, setHours() tenta atualizar as informações de data no objeto {{jsxref("Date")}}. Por exemplo, se você usa 100 para secondsValue, os minutos serão incrementados em 1 (minutesValue + 1), e 40 serão usados para os segundos.

+ +

Exemplos

+ +

Usando setHours()

+ +
var theBigDay = new Date();
+theBigDay.setHours(7);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setHours")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setmilliseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setmilliseconds/index.html new file mode 100644 index 0000000000..f632e02bf9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setmilliseconds/index.html @@ -0,0 +1,74 @@ +--- +title: Date.prototype.setMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +--- +
{{JSRef}}
+ +

O método setMilliseconds() atribui os milissegundos para a data específica de acordo com a hora local.

+ +
{{EmbedInteractiveExample("pages/js/date-setmilliseconds.html")}}
+ + + +

Sintaxe

+ +
dateObj.setMilliseconds(millisecondsValue)
+ +

Parâmetros

+ +
+
millisecondsValue
+
Um número entre 0 e 999, representando os milissegundos.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre dia 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você especifica um número fora do alcance esperado, a informação de data no objeto {{jsxref("Date")}} é atualizado de acordo. Por exemplo, se você especifica 1005, o número de segundos é incrementado em 1, e 5 é utilizado para os milissegundos.

+ +

Exemplos

+ +

Usando setMilliseconds()

+ +
var theBigDay = new Date();
+theBigDay.setMilliseconds(100);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setMilliseconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setminutes/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setminutes/index.html new file mode 100644 index 0000000000..ece5608638 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setminutes/index.html @@ -0,0 +1,84 @@ +--- +title: Date.prototype.setMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +--- +
{{JSRef}}
+ +

O método setMinutes() atribui os minutos para uma data específica de acordo com o horário local.

+ +
{{EmbedInteractiveExample("pages/js/date-setminutes.html")}}
+ + + +

Sintaxe

+ +
dateObj.setMinutes(minutesValue[, secondsValue[, msValue]])
+ +

Versões anteriores ao JavaScript 1.3

+ +
dateObj.setMinutes(minutesValue)
+ +

Parâmetros

+ +
+
minutesValue
+
Um inteiro entre 0 e 59, representando os mintuos.
+
secondsValue
+
Opcional. Um inteiro entre 0 e 59, representando os segundos. Se você especificar o parâmetro secondsValue, você também deve especificar minutesValue.
+
msValue
+
Opcional. Um número entre 0 e 999, representando os milissegundos. Se você especificar o parâmetro msValue, você deve também especificar minutesValue e secondsValue.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre dia 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especifica os parâmetros secondsValue e msValue, os valores retornados dos métodos {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} e {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} são usados.

+ +

Se um parâmetro que você especificou estiver fora do alcance esperado, setMinutes() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usa 100 para secondsValue, os minutos serão incrementados em 1 (minutesValue + 1), e 40 serão usados para segundos.

+ +

Exemplos

+ +

Usando setMinutes()

+ +
var theBigDay = new Date();
+theBigDay.setMinutes(45);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setMinutes")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setmonth/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setmonth/index.html new file mode 100644 index 0000000000..e9ac42302a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setmonth/index.html @@ -0,0 +1,87 @@ +--- +title: Date.prototype.setMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMonth +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth +--- +
{{JSRef}}
+ +

O método setMonth() atribui o mês para uma data específica de acordo com o ano corrente.

+ +
{{EmbedInteractiveExample("pages/js/date-setmonth.html")}}
+ +

Sintaxe

+ +
dateObj.setMonth(monthValue[, dayValue])
+ +

Versões anteriores ao JavaScript 1.3

+ +
dateObj.setMonth(monthValue)
+ +

Parâmetros

+ +
+
monthValue
+
Um inteiro baseado em zero representando o mês do ano a partir do começo do ano. Então, 0 representa Janeiro, 11 representa Dezembro, -1 representa Dezembro do ano passado, e 12 representa Janeiro do ano seguinte.
+
dayValue
+
Opcional. Um inteiro de 1 a 31, representando o dia do mês.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre dia 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especifica o parâmetro dayValue, o valor retornado do método {{jsxref("Date.prototype.getDate()", "getDate()")}} é utilizado.

+ +

Se um parâmetro que você especificou estiver fora do alcance esperado, setMonth() tenta atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usa 15 para monthValue, o ano será incrementado em 1, e 3 será usado para o mês.

+ +

O dia corrente do mês terá um impacto no comportamento deste método. Conceitualmente ele irá adicionar o número de dias dado pelo dia corrente do mês ao primeiro dia do novo mês especificado como parâmetro, retornando uma nova data. Por exemplo, se o valor corrente é 31 de agosto de 2016, chamando setMonth() com um valor de 1 irá retornar 2 de Março de 2016. Isso acontece porque Fevereiro de 2016 tem 29 dias.

+ +

Exemplos

+ +

Usando setMonth()

+ +
var theBigDay = new Date();
+theBigDay.setMonth(6);
+
+//Cuidado com transições de final de mês
+var endOfMonth = new Date(2016, 7, 31);
+endOfMonth.setMonth(1);
+console.log(endOfMonth); //Wed Mar 02 2016 00:00:00
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setMonth")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setseconds/index.html new file mode 100644 index 0000000000..b474ec29a2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setseconds/index.html @@ -0,0 +1,82 @@ +--- +title: Date.prototype.setSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +--- +
{{JSRef}}
+ +

O método setSeconds() atribui os segundos na data especificada de acordo com o tempo local.

+ +
{{EmbedInteractiveExample("pages/js/date-setseconds.html")}}
+ + + +

Sintaxe

+ +
dateObj.setSeconds(secondsValue[, msValue])
+ +

Versões anteriores ao JavaScript 1.3

+ +
dateObj.setSeconds(secondsValue)
+ +

Parâmetros

+ +
+
secondsValue
+
Um inteiro entre 0 e 59, representando os segundos.
+
msValue
+
Opcional. Um número entre 0 e 999, representando os milissegundos.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especifica o parâmetro msValue, o valor retornado do método {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}} é utilizado.

+ +

Se um parâmetro que você especificou está fora do alcance esperado, setSeconds() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 100 para secondsValue, os minutos guardados no objeto {{jsxref("Date")}} serão incrementados em 1, e 40 serão usados para os segundos.

+ +

Exemplos

+ +

Usando setSeconds()

+ +
var theBigDay = new Date();
+theBigDay.setSeconds(30);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setSeconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/settime/index.html b/files/pt-br/web/javascript/reference/global_objects/date/settime/index.html new file mode 100644 index 0000000000..cc4f4472ba --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/settime/index.html @@ -0,0 +1,95 @@ +--- +title: Date.prototype.setTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/setTime +tags: + - Date + - JavaScript + - Prototype + - Referencia + - Tempo + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setTime +--- +
{{JSRef}}
+ +
O método setTime() atribui ao objecto {{jsxref("Date")}} a hora representada pelo número de milisegundos desde 1 de janeiro de 1970 as 00:00:00 UTC.
+ +
 
+ +
{{EmbedInteractiveExample("pages/js/date-settime.html")}}
+ + + +

Sintáxe

+ +
dateObj.setTime(timeValue)
+ +

Parâmetros

+ +
+
timeValue
+
Um inteiro representando o número de milisegundos desde 1 de janeiro 1970, 00:00:00 UTC.
+
+ +

Valor retornado

+ +

O número de milisegundos entre 1 de janeiro de 1970 00:00:00 UTC e a data atualizada (efetivamente, o valor do argumento).

+ +

Descrição

+ +

Use o método setTime() para ajudar a atribuir data e hora para outro objeto {{jsxref("Date")}}.

+ +

Exemplos

+ +

Usando setTime()

+ +
var theBigDay = new Date('July 1, 1999');
+var sameAsBigDay = new Date();
+sameAsBigDay.setTime(theBigDay.getTime());
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos Browsers

+ + + +

{{Compat("javascript.builtins.Date.setTime")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcdate/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcdate/index.html new file mode 100644 index 0000000000..4190b96120 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcdate/index.html @@ -0,0 +1,74 @@ +--- +title: Date.prototype.setUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +--- +
{{JSRef}}
+ +

O método setUTCDate() atribui o dia do mês para uma data especifica de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcdate.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCDate(dayValue)
+ +

Parâmetros

+ +
+
dayValue
+
Um inteiro entre 1 e 31, representando o dia do mês.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se um parâmetro que você especificou está fora do alcance esperado, setUTCDate() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 40 para dayValue, e o mês guardado no objeto {{jsxref("Date")}} é Junho, o dia será trocado para 10 e o mês será incrementado para Julho.

+ +

Exemplos

+ +

Usando setUTCDate()

+ +
var theBigDay = new Date();
+theBigDay.setUTCDate(20);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCDate")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcfullyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcfullyear/index.html new file mode 100644 index 0000000000..657b65d9aa --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcfullyear/index.html @@ -0,0 +1,80 @@ +--- +title: Date.prototype.setUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +--- +
{{JSRef}}
+ +

O método setUTCFullYear() atribui o ano completo na data especificada de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcfullyear.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCFullYear(yearValue[, monthValue[, dayValue]])
+ +

Parâmetros

+ +
+
yearValue
+
Um inteiro especificando o valor numérico do ano, por exemplo, 1995.
+
monthValue
+
Opcional. Um inteiro entre 0 e 11 representando os meses Janeiro até Dezembro.
+
dayValue
+
Opcional. Um inteiro entre 1 e 31 representando o dia do mês. Se você especificar o parâmetro dayValue, vocẽ deve especificar monthValue também.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especificar os parâmetros monthValue e dayValue, os valores retornados dos métodos {{jsxref("Date.prototype.getUTCMonth()", "getUTCMonth()")}} e {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}} serão utilizados.

+ +

Se um parâmetro que você especificou está fora do alcance esperado, setUTCFullYear() tentará atualizar os outros parâmetros e a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você especificar 15 para o monthValue, o ano será incrementado em 1 (yearValue + 1), e 3 será usado para o mês.

+ +

Exemplos

+ +

Usando setUTCFullYear()

+ +
var theBigDay = new Date();
+theBigDay.setUTCFullYear(1997);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCFullYear")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutchours/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutchours/index.html new file mode 100644 index 0000000000..5d1304b708 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutchours/index.html @@ -0,0 +1,82 @@ +--- +title: Date.prototype.setUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +--- +
{{JSRef}}
+ +

O método setUTCHours() atribui a hora para a data especificada de acordo com o horário universal, e retorna o número de milissegundos desde 1 de Janeiro de 1970 00:00:00 UTC até o horário representado pela instância {{jsxref("Date")}} atualizada.

+ +
{{EmbedInteractiveExample("pages/js/date-setutchours.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
+ +

Parâmetros

+ +
+
hoursValue
+
Um inteiro entre 0 e 23, representando a hora.
+
minutesValue
+
Opcional. Um inteiro entre 0 e 59, representando os minutos.
+
secondsValue
+
Opcional. Um inteiro entre 0 e 59, representando os segundos. Se você especificar o parâmetro secondsValue, você também deve especificar minutesValue.
+
msValue
+
Opcional. Um número entre 0 e 999, representando os milissegundos. Se você especificar o parâmetro msValue, você também deve especificar minutesValue e secondsValue.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especificar os parâmetros minutesValue, secondsValue, e msValue, os valores retornados dos métodos {{jsxref("Date.prototype.getUTCMinutes()", "getUTCMinutes()")}}, {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}}, e {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} serão utilizados.

+ +

Se o parâmetro que você especificou estiver fora do alcance esperado, setUTCHours() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usa 100 para secondsValue, os minutos serão incrementados em 1 (minutesValue + 1), e 40 será usado para os segundos.

+ +

Exemplos

+ +

Usando setUTCHours()

+ +
var theBigDay = new Date();
+theBigDay.setUTCHours(8);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCHours")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html new file mode 100644 index 0000000000..3d52820944 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html @@ -0,0 +1,74 @@ +--- +title: Date.prototype.setUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +--- +
{{JSRef}}
+ +

O método setUTCMilliseconds() atribui os milissegundos para a data especificada de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcmilliseconds.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCMilliseconds(millisecondsValue)
+ +

Parâmetros

+ +
+
millisecondsValue
+
Um número entre 0 e 999, representando os milissegundos.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se o parâmetro que você especificou estiver fora do alcance esperado, setUTCMilliseconds() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 1100 para millisecondsValue, os segundos guardados no objeto {{jsxref("Date")}} serão incrementados em 1, e 100 serão usados para os milissegundos.

+ +

Exemplos

+ +

Usando setUTCMilliseconds()

+ +
var theBigDay = new Date();
+theBigDay.setUTCMilliseconds(500);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCMilliseconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcminutes/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcminutes/index.html new file mode 100644 index 0000000000..d0dd60beda --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcminutes/index.html @@ -0,0 +1,80 @@ +--- +title: Date.prototype.setUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +--- +
{{JSRef}}
+ +

O método setUTCMinutes() atribui os minutos para uma data específica de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcminutes.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCMinutes(minutesValue[, secondsValue[, msValue]])
+ +

Parâmetros

+ +
+
minutesValue
+
Um inteiro entre 0 e 59, representando os minutos.
+
secondsValue
+
Opcional. Um inteiro entre 0 e 59, reprensentando os segundos. Se vocẽ especificar o parâmetro secondsValue, você também deve especificar minutesValue.
+
msValue
+
Opcional. Um número entre 0 e 999, representando os milissegundos. Se você especificar o parâmetro msValue, você também deve especificar minutesValue e secondsValue.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se vocẽ não especificar os parâmetros secondsValue e msValue, os valores retornados dos métodos {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} e {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} são utilizados.

+ +

Se o parâmetro que você especificou estiver fora do alcance esperado, setUTCMinutes() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 100 para secondsValue, os minutos serão incrementados em 1 (minutesValue + 1), e 40 será usado para os segundos.

+ +

Exemplos

+ +

Usando setUTCMinutes()

+ +
var theBigDay = new Date();
+theBigDay.setUTCMinutes(43);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCMinutes")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcmonth/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcmonth/index.html new file mode 100644 index 0000000000..3dd9758665 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcmonth/index.html @@ -0,0 +1,78 @@ +--- +title: Date.prototype.setUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +--- +
{{JSRef}}
+ +

O método setUTCMonth() atribui o mês para a data especificada de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcmonth.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCMonth(monthValue[, dayValue])
+ +

Parâmetros

+ +
+
monthValue
+
Um inteiro entre 0 e 11, representando os meses de Janeiro até Dezembro.
+
dayValue
+
Opcional. Um inteiro de 1 a 31, representando o dia do mês.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especificar o parâmetro dayValue, o valor returnado do método {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}} é utilizado.

+ +

Se um parâmetro que você especificou está fora do alcance especificado, setUTCMonth() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 15 para monthValue, o ano irá incrementar em 1, e 3 será usado para o mês.

+ +

Exemplos

+ +

Usando setUTCMonth()

+ +
var theBigDay = new Date();
+theBigDay.setUTCMonth(11);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCMonth")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setutcseconds/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setutcseconds/index.html new file mode 100644 index 0000000000..2876f9a69b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setutcseconds/index.html @@ -0,0 +1,78 @@ +--- +title: Date.prototype.setUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +--- +
{{JSRef}}
+ +

O método setUTCSeconds() atribui os segundos para a data especificada de acordo com o horário universal.

+ +
{{EmbedInteractiveExample("pages/js/date-setutcseconds.html")}}
+ + + +

Sintaxe

+ +
dateObj.setUTCSeconds(secondsValue[, msValue])
+ +

Parâmetros

+ +
+
secondsValue
+
Um inteiro entre 0 e 59, representando os segundos.
+
msValue
+
Opcional. Um número entre 0 e 999, representando os milissegundos.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se você não especifica o parâmetro msValue, o valor retornado pelo método {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}} é utilizado.

+ +

Se o parâmetro que você especificou está fora do alcance esperado, setUTCSeconds() tentará atualizar a informação da data no objeto {{jsxref("Date")}}. Por exemplo, se você usar 100 para secondsValue, os minutos guardados no objeto {{jsxref("Date")}} irá ser incrementado em 1, e 40 será usado para os segundos.

+ +

Exemplos

+ +

Usando setUTCSeconds()

+ +
var theBigDay = new Date();
+theBigDay.setUTCSeconds(20);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setUTCSeconds")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/setyear/index.html b/files/pt-br/web/javascript/reference/global_objects/date/setyear/index.html new file mode 100644 index 0000000000..afd2bfa615 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/setyear/index.html @@ -0,0 +1,79 @@ +--- +title: Date.prototype.setYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setYear +tags: + - Date + - Deprecated + - Depreciado + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setYear +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método setYear() atribui o ano para a data especificada de acordo com o horário local. Devido setYear() não colocar o anos cheios ("problema do ano 2000"), ele não é mais utilizado e foi substituído pelo método {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}}.

+ +

Sintaxe

+ +
dateObj.setYear(yearValue)
+ +

Parâmetros

+ +
+
yearValue
+
Um inteiro.
+
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data atualizada.

+ +

Descrição

+ +

Se yearValue é um número entre 0 e 99 (inclusivo), então o ano para dateObj é atribuido para 1900 + yearValue. Caso contrário, o ano para dateObj é atribuido para yearValue.

+ +

Exemplos

+ +

Usando setYear()

+ +

As duas primeiras linhas atribuem o ano para 1996. O terceiro atribui o ano para 2000.

+ +
var theBigDay = new Date();
+
+theBigDay.setYear(96);
+theBigDay.setYear(1996);
+theBigDay.setYear(2000);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.setyear', 'Date.prototype.setYear')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.setYear")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/todatestring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/todatestring/index.html new file mode 100644 index 0000000000..ac4e3cbc11 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/todatestring/index.html @@ -0,0 +1,127 @@ +--- +title: Date.prototype.toDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toDateString +tags: + - Date + - JavaScript + - Prototipo + - Prototype + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString +--- +
{{JSRef}}
+ +

O método toDateString() retorna a porção da data de um objeto {{jsxref("Date")}} em um formato legível para humanos em inglês dos Estados Unidos.

+ +

Sintaxe

+ +
objetoDate.toDateString()
+ +

Descrição

+ +

Exemplares de {{jsxref("Date")}} referem-se a um ponto específico no tempo. Chamar {{jsxref("Date.prototype.toString()", "toString()")}} retorna a data num formato legível para humanos em inglês dos Estados Unidos. No SpiderMonkey, isso consiste na porção da data (dia, mês e ano) seguida pela porção da hora (horas, minutos, segundos e fuso horário). Ás vezes, deseja-se obter uma string apenas da porção da data; Isso pode ser conseguido com o método toDateString().

+ +

O método toDateString() é especialmente útil porque motores que implementam o padrão ECMA-262 podem divergir na string retornada pelo {{jsxref("Date.prototype.toString()", "toString()")}} de objetos {{jsxref("Date")}} , pois o formato é dependente da implentação e abordagens simples que repartem a string podem não produzir resultados consistentes nos vários motores.

+ +

Exemplos

+ +

Um uso básico de toDateString()

+ +
var d = new Date(1993, 6, 28, 14, 39, 7);
+
+console.log(d.toString());     // exibe Wed Jul 28 1993 14:39:07 GMT-0600 (PDT) no log
+console.log(d.toDateString()); // exibe Wed Jul 28 1993 no log
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{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')}} 
{{SpecName('ESDraft', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade entre navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome para AndroidFirefox Móvel (Gecko)IE MóvelOpera MóvelSafari Móvel
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/togmtstring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/togmtstring/index.html new file mode 100644 index 0000000000..1df4801950 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/togmtstring/index.html @@ -0,0 +1,70 @@ +--- +title: Date.prototype.toGMTString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +tags: + - Date + - Deprecated + - Depreciado + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método toGMTString() converte a data para uma cadeia de caracteres (string), usando as convenções de Internet para o Horário de Greenwich (GMT). O formato exato do valor retornado por toGMTString() varia de acordo com plataforma e navegador, em geral ele deve representar uma string legível para um ser humano.

+ +
+

Nota: toGMTString() está depreciado e não deve ser mais usado. Ele se mantém implementado somente para retrocompatibilidade; por favor use {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.

+
+ +

Sintaxe

+ +
dateObj.toGMTString()
+ +

Valor de retorno

+ +

Uma string representando a data seguindo a convenção de Internet para o Horário de Greenwich (GMT).

+ +

Exemplos

+ +

Simple example

+ +

Neste exemplo, o método toGMTString() converte a data para GMT (UTC) usando o deslocamento de fuso horário do sistema operacional e retorna uma string que é similar a seguinta forma. O formato exato depende da plataforma.

+ +
var today = new Date();
+var str = today.toGMTString();  // depreciado! use toUTCString()
+
+console.log(str);               // Mon, 18 Dec 1995 17:28:35 GMT
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toGMTString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/toisostring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/toisostring/index.html new file mode 100644 index 0000000000..14fb14cfc1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/toisostring/index.html @@ -0,0 +1,97 @@ +--- +title: Date.prototype.toISOString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toISOString +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString +--- +
{{JSRef}}
+ +

O método toISOString() retorna uma cadeia de caracteres (string) simplificada no formato ISO extendido (ISO 8601), que é sempre 24 ou 27 caracteres de tamanho (YYYY-MM-DDTHH:mm:ss.sssZ ou ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectivamente). O fuso horário é sempre o deslocamente zero UTC, como denotado pelo sufixo "Z".

+ +
{{EmbedInteractiveExample("pages/js/date-toisostring.html")}}
+ + + +

Sintaxe

+ +
dateObj.toISOString()
+ +

Valor de retorno

+ +

Uma string representando a data no formato ISO 8601 de acordo com o horário universal.

+ +

Polyfill

+ +

Este método foi padronizado na quinta edição da ECMA-262. Motores que não foram atualizados para suportar este método podem funcionar com uma gambiarra na ausência deste método da seguinte forma:

+ +
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';
+    };
+
+  })();
+}
+
+ +

Exemplos

+ +

Usando toISOString()

+ +
let today = new Date('05 October 2011 14:48 UTC')
+
+console.log(today.toISOString())  // Returna 2011-10-05T14:48:00.000Z
+
+ +

O exemplo acima usa uma conversão de uma string não-padrão que pode não ser convertida corretamente em navegadores que não sejam da Mozilla..

+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toISOString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tojson/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tojson/index.html new file mode 100644 index 0000000000..d35a98c99a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tojson/index.html @@ -0,0 +1,75 @@ +--- +title: Date.prototype.toJSON() +slug: Web/JavaScript/Reference/Global_Objects/Date/toJSON +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON +--- +
{{JSRef}}
+ +

O método toJSON() retorna uma representação representation do objeto  {{jsxref("Date")}} como string.

+ +
{{EmbedInteractiveExample("pages/js/date-tojson.html")}}
+ + + +

Sintaxe

+ +
dateObj.toJSON()
+ +

Retorno

+ +

Uma representação da data como string.

+ +

Descrição

+ +

Instâncias de {{jsxref("Date")}} referem-se a um específico ponto no tempo. Invocar toJSON() retorna uma string (usando {{jsxref("Date.prototype.toISOString()", "toISOString()")}}) representando o valor do objeto {{jsxref("Date")}}. Por padrão este método é destinado a serializar objetos {{jsxref("Date")}} em serializações {{Glossary("JSON")}}.

+ +

Examplos

+ +

Usando toJSON()

+ +
var jsonDate = (new Date()).toJSON();
+var backToDate = new Date(jsonDate);
+
+console.log(jsonDate); //2015-10-26T07:46:36.611Z
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES5.1', '#sec-15.9.5.44', 'Date.prototype.toJSON')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navagadores

+ + + +

{{Compat("javascript.builtins.Date.toJSON")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tolocaledatestring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tolocaledatestring/index.html new file mode 100644 index 0000000000..410807cb37 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tolocaledatestring/index.html @@ -0,0 +1,239 @@ +--- +title: Date.prototype.toLocaleDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +--- +
{{JSRef}}
+ +

O método toLocaleDateString() retorna uma string com a representação de parte da data baseando-se no idioma. Os novos argumentos locales e options deixam as aplicações especificarem o idioma cujas convenções de formatação devem ser usadas e permitem customizar o comportamento da função. Em implementações antigas, nas quais ignoram os argumentos locales e options,  o locale usado e a forma da string retornada são inteiramente dependente da implementação nativa.

+ +

Sintáxe

+ +
dateObj.toLocaleDateString([locales [, options]])
+ +

Parametros

+ +

Verifique a seção {{anch("Compatibilidade entre navegadores")}} para ver quais navegadores dão suporte aos argumentos locales e options, e o Example:  Verificação para suporte dos argumentos locales e options para detectar a funcionalidade.

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +
O valor padrão para cada propriedade do componente date-time é {{jsxref("undefined")}}, mas se as propriedades weekday, year, month, day são todas {{jsxref("undefined")}}, então year, month and day são assumidos como "numeric".
+ +

+ +

Return value

+ +

Uma representação em string de parte da data dada a instância {{jsxref("Global_Objects/Date", "Date")}} de acordo com as convenções específicas do idioma. 

+ +

Exemplos

+ +

Usando toLocaleDateString()

+ +

Em uso básico sem especificação de locale, uma string formatada no padrão do locale e com as opções padrões é retornada.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleDateString() sem argumentos depende da implementação,
+// o locale padrão, e o time zone padrão
+console.log(date.toLocaleDateString());
+// → "12/11/2012" se rondando em locale en-US com time zone de America/Los_Angeles
+
+ +

Checagem para o suporte dos argumentos locales e options

+ +

Os argumentos locales e options não são suportados em todos os browser ainda.  Para verificar se uma uma implementação já suporta eles, você pode usar o requisito de que tags de idioma ilegal são rejeitadas com uma exceção {{jsxref("RangeError")}}:

+ +
function toLocaleDateStringSupportsLocales() {
+  try {
+    new Date().toLocaleDateString('i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Usando locales

+ +

Esse exemplo mostra algumas das variações em formatos de data localizados. A fim de obter oformato do idioma usado na interface de usuário da usa aplicação, certifique-se de especificar esse idioma (e possivelmente algumas outros idiomas de reserva) usando o argumento locales

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// os formatos abaixo assumem o time zone local do locale;
+// America/Los_Angeles for the US
+
+// Inglês americano usa a ordem mês-dia-ano
+console.log(date.toLocaleDateString('en-US'));
+// → "12/19/2012"
+
+// Inglês Britânico usa a ordem dia-mês-ano
+console.log(date.toLocaleDateString('en-GB'));
+// → "20/12/2012"
+
+// Coreano usa a ordem ano-mês-dia
+console.log(date.toLocaleDateString('ko-KR'));
+// → "2012. 12. 20."
+
+// Árabe na maioria dos países de língua árabe usa dígitos árabes reais
+console.log(date.toLocaleDateString('ar-EG'));
+// → "٢٠‏/١٢‏/٢٠١٢"
+
+// para Japonês, aplicações podem querer usar o calendário japonês,
+// onde 2012 foi o ano 24 da era Heisei
+console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
+// → "24/12/20"
+
+// quando um idioma que pode não ser suportado é requerido, tal como
+// Balinês, inclua um idioma de reserva, nesse caso Indonésio
+console.log(date.toLocaleDateString(['ban', 'id']));
+// → "20/12/2012"
+
+ +

Usando options

+ +

O resultados gerados por toLocaleDateString() podem ser customizado usando o argumento options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// requer um dia da semana jutamente com uma data longa
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleDateString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// uma aplicação pode querer usar UTC e fazê-lo visível
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleDateString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+ +

Performance

+ +

Ao formatar um grande número de datas, é melhor criar um objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} e usar a função fornecido porsua propriedade {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementada no 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('ESDraft', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}{{Spec2('ESDraft')}}
{{SpecName('ES Int 1.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 1.0')}}Define os argumentos locales e options.
{{SpecName('ES Int 2.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int 2.0')}}
{{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleDateString', 'Date.prototype.toLocaleDateString')}}{{Spec2('ES Int Draft')}}
+ +

Compatibilidade com o navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
locales and options arguments{{CompatChrome("24")}} [1]{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatSafari("10")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
locales and options arguments{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatSafari("10")}}
+
+ +

[1] Chrome 24 also added support for passing timeZones other than UTC.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tolocalestring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tolocalestring/index.html new file mode 100644 index 0000000000..06d9b1f30c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tolocalestring/index.html @@ -0,0 +1,202 @@ +--- +title: Date.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +tags: + - Internacionalização + - JavaScript + - Prototype + - Referencia + - data + - i18n + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +--- +
{{JSRef}}
+ +

O método toLocaleString() retorna uma string com uma representação sensível ao idioma da data presente na mesma. Os novos argumentos locales e options permitem que as aplicações especifiquem o idioma cujas convenções de formatação devem ser utilizadas e personalizar o comportamento do método. Em implementações antigas, que ignoram os argumentos locales and options, o local utilizado e o formato da string retornada são completamente dependentes da implementação.

+ +
{{EmbedInteractiveExample("pages/js/date-tolocalestring.html")}}
+ + + +

Syntax

+ +
dateObj.toLocaleString([locales[, options]])
+ +

Parameters

+ +

Check the Browser compatibility section to see which browsers support the locales and options arguments, and the Example: Checking for support for locales and options arguments for feature detection.

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +

The default value for each date-time component property is {{jsxref("undefined")}}, but if the weekday, year, month, day, hour, minute, second properties are all {{jsxref("undefined")}}, then year, month, day, hour, minute, and second are assumed to be "numeric".

+ +

Return value

+ +

A string representing the given date according to language-specific conventions.

+ +

Examples

+ +

Using toLocaleString()

+ +

In basic use without specifying a locale, a formatted string in the default locale and with default options is returned.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleString() without arguments depends on the implementation,
+// the default locale, and the default time zone
+console.log(date.toLocaleString());
+// → "12/11/2012, 7:00:00 PM" if run in en-US locale with time zone America/Los_Angeles
+
+ +

Checking for support for locales and options arguments

+ +

The locales and options arguments are not supported in all browsers yet. To check whether an implementation supports them already, you can use the requirement that illegal language tags are rejected with a {{jsxref("RangeError")}} exception:

+ +
function toLocaleStringSupportsLocales() {
+  try {
+    new Date().toLocaleString('i');
+  } catch (e) {
+    return e instanceof RangeError;
+  }
+  return false;
+}
+
+ +

Using locales

+ +

This example shows some of the variations in localized date and time formats. In order to get the format of the language used in the user interface of your application, make sure to specify that language (and possibly some fallback languages) using the locales argument:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// formats below assume the local time zone of the locale;
+// America/Los_Angeles for the US
+
+// US English uses month-day-year order and 12-hour time with AM/PM
+console.log(date.toLocaleString('en-US'));
+// → "12/19/2012, 7:00:00 PM"
+
+// British English uses day-month-year order and 24-hour time without AM/PM
+console.log(date.toLocaleString('en-GB'));
+// → "20/12/2012 03:00:00"
+
+// Korean uses year-month-day order and 12-hour time with AM/PM
+console.log(date.toLocaleString('ko-KR'));
+// → "2012. 12. 20. 오후 12:00:00"
+
+// Arabic in most Arabic speaking countries uses real Arabic digits
+console.log(date.toLocaleString('ar-EG'));
+// → "٢٠‏/١٢‏/٢٠١٢ ٥:٠٠:٠٠ ص"
+
+// for Japanese, applications may want to use the Japanese calendar,
+// where 2012 was the year 24 of the Heisei era
+console.log(date.toLocaleString('ja-JP-u-ca-japanese'));
+// → "24/12/20 12:00:00"
+
+// when requesting a language that may not be supported, such as
+// Balinese, include a fallback language, in this case Indonesian
+console.log(date.toLocaleString(['ban', 'id']));
+// → "20/12/2012 11.00.00"
+
+ +

Using options

+ +

The results provided by toLocaleString() can be customized using the options argument:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// request a weekday along with a long date
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(date.toLocaleString('de-DE', options));
+// → "Donnerstag, 20. Dezember 2012"
+
+// an application may want to use UTC and make that visible
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(date.toLocaleString('en-US', options));
+// → "Thursday, December 20, 2012, GMT"
+
+// sometimes even the US needs 24-hour time
+console.log(date.toLocaleString('en-US', { hour12: false }));
+// → "12/19/2012, 19:00:00"
+
+ +

Avoid comparing formatted date values to static values

+ +

Most of the time, the formatting returned by toLocaleString() is consistent. However, this might change in the future and isn't guaranteed for all languages — output variations are by design and allowed by the specification. Most notably, the IE and Edge browsers insert bidirectional control characters around dates, so the output text will flow properly when concatenated with other text.

+ +

For this reason you cannot expect to be able to compare the results of toLocaleString() to a static value:

+ +
"1.1.2019, 01:00:00" === new Date("2019-01-01T00:00:00.000000Z").toLocaleString();
+// true in Firefox and others
+// false in IE and Edge
+ +
+

Note: See also this StackOverflow thread for more details and examples.

+
+ +

Performance

+ +

When formatting large numbers of dates, it is better to create an {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} object and use the function provided by its {{jsxref("DateTimeFormat.prototype.format", "format")}} property.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}{{Spec2('ESDraft')}}
{{SpecName('ES Int 1.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int 1.0')}}Defines locales and options arguments.
{{SpecName('ES Int 2.0', '#sec-13.3.1', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int 2.0')}}
{{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleString', 'Date.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Date.toLocaleString")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tolocaletimestring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tolocaletimestring/index.html new file mode 100644 index 0000000000..9b149abb00 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tolocaletimestring/index.html @@ -0,0 +1,180 @@ +--- +title: Date.prototype.toLocaleTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +tags: + - Internacionalização + - Prototype + - data + - data formatada + - fuso horário + - metodo + - time zone +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +--- +
{{JSRef}}
+ +
O método toLocaleTimeString() retorna uma string com uma representação sensível ao idioma de uma porção de tempo desta data. Os novos argumentos locales e options possibilitam aplicações especificarem que formato de linguagem deve ser usado, podendo customizar o comportamento da função. Em implementações antigas, que ignoram os argumentos locales e options, o local utilizado e o formato retornado da string são implementações completamente dependentes.
+ +
 
+ +
{{EmbedInteractiveExample("pages/js/date-tolocaletimestring.html")}}
+ + + +

Sintaxe

+ +
dateObj.toLocaleTimeString([locales[, options]])
+ +

Parâmetros

+ +

Confira a seção Browser compatibility para ver o suporte em browsers dos argumentos locales e options, e  Checking for support for locales and options arguments para ver suas features.

+ +
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
+ +

O valor default para cada propriedade do componente date-time é {{jsxref("undefined")}}, mas se as propriedades hour, minute, second são todas {{jsxref("undefined")}}, então hour, minute, e second espera-se que seja "numeric".

+ +

Valor retornado

+ +

Uma string representando uma porção de tempo de uma instância {{jsxref("Global_Objects/Date", "Date")}}, fornecida de acordo com as convenções específicas do idioma.

+ +

Exemplos

+ +

Usando toLocaleTimeString()

+ +

Em um uso simples, sem especificar uma localidade, é retornado uma string formatada de uma localidade default e com opções default.

+ +
var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
+
+// toLocaleTimeString() sem argumentos, depende da implementação,
+// da localidade padrão, e do fuso horário padrão
+console.log(date.toLocaleTimeString());
+// → "7:00:00 PM" se rodar em en-US com o fuso horário de America/Los_Angeles
+
+ +

Verificando o suporte para os argumentos locales e options

+ +

Os argumentos locales e options não são suportados em todos os browsers ainda. Para conferir se uma implementação já os suporta, você pode usar a exigência que tags ilegais de liguagem são rejeitadas com uma exceção {{jsxref("RangeError")}}:

+ +
function toLocaleTimeStringSupportsLocales() {
+  try {
+    new Date().toLocaleTimeString('i');
+  } catch (e) {
+    return e​.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Usando locales

+ +

Este exemplo mostra algumas das variações em um formato de tempo localizado. Para obter o formato do idioma usado na interface do usuário da sua aplicação, tenha certeza de especificar esse idioma (e possivelmente alguns idiomas de retorno) usando o argumento locales:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Os formatos abaixo assumem o fuso horário local da região;
+// America/Los_Angeles for the US
+
+// US English usa o formato 12 horas com AM/PM
+console.log(date.toLocaleTimeString('en-US'));
+// → "7:00:00 PM"
+
+// British English usa o formato 24 horas sem AM/PM
+console.log(date.toLocaleTimeString('en-GB'));
+// → "03:00:00"
+
+// Korean usa o formato 12 horas com AM/PM
+console.log(date.toLocaleTimeString('ko-KR'));
+// → "오후 12:00:00"
+
+// Arabic na maiorias dos países que falam árabe usa-se os dígitos arábicos reais
+console.log(date.toLocaleTimeString('ar-EG'));
+// → "٧:٠٠:٠٠ م"
+
+// quando solicitar um idioma que talvez não seja suportado, como o
+// Balinese, inclua um idioma de fallback, nesse caso Indonesian
+console.log(date.toLocaleTimeString(['ban', 'id']));
+// → "11.00.00"
+
+ +

Usando options

+ +

Os resultados fornecidos por toLocaleTimeString() podem ser customizados usando o argumento options:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// uma aplicação pode querer usar UTC e tornar isso visível
+var options = { timeZone: 'UTC', timeZoneName: 'short' };
+console.log(date.toLocaleTimeString('en-US', options));
+// → "3:00:00 AM GMT"
+
+// ás vezes, até em US precise usar o formato 24 horas
+console.log(date.toLocaleTimeString('en-US', { hour12: false }));
+// → "19:00:00"
+
+ +

Performance

+ +

Quando se formata um grande número de datas, é aconselhável criar um objeto {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} e usar a função fornecida pela propriedade dele: {{jsxref("DateTimeFormat.prototype.format", "format")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial, Implementado no 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('ESDraft', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int 1.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int 1.0')}}Define os argumentos locales e options.
{{SpecName('ES Int 2.0', '#sec-13.3.3', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#sec-Date.prototype.toLocaleTimeString', 'Date.prototype.toLocaleTimeString')}}{{Spec2('ES Int Draft')}} 
+ +

Compatibilidade em Browsers

+ + + +

{{Compat("javascript.builtins.Date.toLocaleTimeString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tosource/index.html new file mode 100644 index 0000000000..62c829b7ec --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tosource/index.html @@ -0,0 +1,53 @@ +--- +title: Date.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Date/toSource +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toSource +--- +
{{JSRef}} {{obsolete_header}}
+ +

O método toSource() retorna uma cadeia de caracteres (string) representando o código fonte do objeto.

+ +

Sintaxe

+ +
dateObj.toSource()
+Date.toSource()
+ +

Valor de retorno

+ +

Uma string representando o código fonte do objeto {{jsxref("Global_Objects/Date", "Date")}}.

+ +

Exemplos

+ +

Função nativa

+ +

Para o objeto {{jsxref("Date")}} embutido, toSource() returna a seguinte string indicando que o código fonte não está disponível:

+ +
function Date() {
+    [native code]
+}
+
+ +

Especificações

+ +

Não faz parte de nenhum padrão.

+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toSource")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/tostring/index.html new file mode 100644 index 0000000000..f06c2ab6ca --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/tostring/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toString +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toString +--- +
{{JSRef}}
+ +

O método toString() retorna uma cadeia de caracteres (string) representando o objeto {{jsxref("Date")}} especificado.

+ +
{{EmbedInteractiveExample("pages/js/date-tostring.html","shorter")}}
+ + + +

Sintaxe

+ +
dateObj.toString()
+ +

Valor de retorno

+ +

Uma string representando a data.

+ +

Descrição

+ +

Instâncias de {{jsxref("Date")}} herdam o método toString() de {{jsxref("Date.prototype")}}, não {{jsxref("Object.prototype")}}. Date.prototype.toString() returna uma string com a representação de Date no formato especificado na ECMA-262 que pode ser resumida como:

+ + + +

E.g. "Sat Sep 01 2018 14:53:26 GMT+1400 (LINT)"

+ +

Até o ECMAScript 2018 (edição 9), o formato da string retornada pelo Date.prototype.toString era dependente da implementação. Portanto, não se deve confiar que ela está no formato especificado.

+ +

O método toString() é automaticamente chamado quando a data deve ser representada como texto, e.g. console.log(new Date()), ou quando a data é utilizada em uma concatenação de string, como var today = 'Today is ' + new Date().

+ +

toString() é um método genérico, ele não requer que seu this seja uma instância de {{jsxref("Date")}}. Entretanto, ele deve ter uma propriedade interna [[TimeValue]] que não pode ser construída usando JavaScript nativo, então ela é efetivamente limitada a ser usada com instâncias {{jsxref("Date")}}. Se chamado em uma instância que não seja Date, um {{jsxref("TypeError")}} é jogado.

+ +

Exemplos

+ +

Usando toString()

+ +

O exemplo asseguir atribui o valor de toString() de um objeto {{jsxref("Date")}} para myVar:

+ +
var x = new Date();
+var myVar = x.toString(); // atribui uma string em myVar no mesmo formato que este:
+                          // Mon Sep 08 1998 14:36:22 GMT-0700 (PDT)
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/totimestring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/totimestring/index.html new file mode 100644 index 0000000000..852bf9ec95 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/totimestring/index.html @@ -0,0 +1,72 @@ +--- +title: Date.prototype.toTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +--- +
{{JSRef}}
+ +

O método toTimeString() retorna uma porção de tempo de um objeto {{jsxref("Date")}} de forma legível para um ser humano em Inglês Americano.

+ +
{{EmbedInteractiveExample("pages/js/date-totimestring.html","shorter")}}
+ + + +

Sintaxe

+ +
dateObj.toTimeString()
+ +

Valor de retorno

+ +

Uma string representando a porção de tempo da data de forma legível para um ser humano em Inglês Americano.

+ +

Descrição

+ +

Instâncias de {{jsxref("Date")}} referem-se a um ponto específico no tempo. Chamando {{jsxref("Date.prototype.toString()", "toString()")}} irá retornar uma data formatada de forma legível para um ser humano em Inglês Americano. No SpiderMonkey, isso consiste na porção da data (dia, mês e ano) seguido pela porção de tempo (horas, minutos, segundos e fuso horário). Algumas vezes é desejável obter a string da porção do tempo; tal coisa pode ser atingida utilizando o método toTimeString().

+ +

O toTimeString() método é especialmente útil por que motores parecidos que implementam a ECMA-262 podem ter strings diferentes obtidas de {{jsxref("Date.prototype.toString()", "toString()")}} para objetos {{jsxref("Date")}}, como o formato é dependente de implementação; abordagens de corte simples de strings pode não produzir resultados consistentes entre múltiplos motores.

+ +

Exemplos

+ +

Uso básico de 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)
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toTimeString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/pt-br/web/javascript/reference/global_objects/date/toutcstring/index.html new file mode 100644 index 0000000000..470841dc1a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/toutcstring/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.toUTCString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +--- +
{{JSRef}}
+ +

O método toUTCString() converte uma data para uma cadeia de caracteres (string), usando o fuso horário UTC.

+ +

Baseado na RFC7231 e modificado de acordo com a ECMA-262 toUTCString, ele pode ter valores negativos na versão de 2021.

+ +
{{EmbedInteractiveExample("pages/js/date-toutcstring.html","shorter")}}
+ + + +

Sintaxe

+ +
dateObj.toUTCString()
+ +

Valor de retorno

+ +

Uma string representando a data usando o fuso horário UTC.

+ +

Descrição

+ +

O valor retornado por toUTCString() é uma string no formato Www, dd Mmm yyyy hh:mm:ss GMT, onde:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Formato da StringDescrição
WwwDia da semana, em três letras (e.g. Sun, Mon, ...)
ddDia do mês, como dois dígitos com zero à esquerda se requisitado
MmmMês, em três letras (e.g. Jan, Feb, ...)
yyyyAno, como 4 ou mais dígitos com zeros à esquerda se requisitado
hhHora, como dois dígitos com zero à esquerda se requisitado
mmMinutos, como dois dígitos com zero à esquerda se requisitado
ssSegundos, como dois dígitos com zero à esquerda se requisitado
+ +

Antes do ECMAScript 2018, o formato do valor de retorno variava de acordo com a plataforma. O valor de retorno mais comum era um carimbo de data formatada na  RFC-1123, que é uma versão relativamente atualizada dos carimbos de data da RFC-822.

+ +

Exemplos

+ +

Usando toUTCString()

+ +
let today = new Date('Wed, 14 Jun 2017 00:00:00 PDT');
+let UTCstring = today.toUTCString(); // Wed, 14 Jun 2017 07:00:00 GMT
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.toUTCString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/utc/index.html b/files/pt-br/web/javascript/reference/global_objects/date/utc/index.html new file mode 100644 index 0000000000..4684f83afa --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/utc/index.html @@ -0,0 +1,145 @@ +--- +title: Date.UTC() +slug: Web/JavaScript/Reference/Global_Objects/Date/UTC +tags: + - JavaScript + - UTC +translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC +--- +

{{JSRef}}

+ +

O método Date.UTC() aceita os mesmos parâmetros que o construtor mais longo de Date e retorna o total de milisegundos desde 1º de Janeiro de 1970 às 00:00:00 (horário universal). O valor retornado por Date.UTC() pode ser usado como parâmetro para criar uma instância de {{jsxref("Date")}}.

+ +

Sintaxe

+ +
Date.UTC(ano, mês[, dia[, hora[, minuto[, segundo[, milisegundo]]]]])
+ +

Parâmetros

+ +
+
ano
+
Um valor inteiro representando o ano, após 1970.
+
mês
+
Um valor inteiro que representa o mês, começando com 0 para Janeiro até 11 para Dezembro.
+
dia
+
Opcional. Um valor inteiro entre 1 e 31 representando o dia do mês.
+
hora
+
Opcional. Um valor inteiro entre 0 e 23 representando a hora do dia.
+
minuto
+
Opcional. Um valor entre 0 e 59 representando os minutos.
+
segundo
+
Opcional. Um valor entre 0 e 59 representando os segundos.
+
milisegundo
+
Opcional. Um valor entre 0 e 999 representando os milisegundos.
+
+ +

Descrição

+ +

UTC() recebe argumentos de uma data separados por vírgula e retorna um número representando o total de milisegundos entre o dia 1º de Janeiro de 1970 às 00:00:00 (horário universal) e a data e hora que você especificou.

+ +

Você deve especificar o ano completo para o argumento ano. Por exemplo, 1998. Se o ano fornecido for um valor entre 0 e 99 o método irá converter este valor para o século 20 (1900 + ano); Por exemplo, se você utilizar 95, então o ano 1995 será utilizado.

+ +

O método UTC() se diferencia do construtor de {{jsxref("Date")}} de duas maneiras:

+ + + +

Se você fornecer um argumento fora do intervalo esperado, o método UTC() atualiza os demais argumentos para permitir este valor. Por exemplo, se você utilizar 15 para mês, será adicionado 1 ao argumento ano (ano + 1) e será utilizado 3 para o argumento mês.

+ +

UTC() é um método estático, por conta disto você sempre irá chamar Date.UTC() em vez de chamar um método de um objeto {{jsxref("Date")}} que você tenha criado.

+ +

Exemplos

+ +

Utilizando Date.UTC()

+ +

A seguinte expressão cria uma instância de {{jsxref("Date")}} utilizando UTC em vez do horário local:

+ +
var dataUniversal = new Date(Date.UTC(96, 11, 1, 0, 0, 0));
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-date.utc', 'Date.UTC')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.9.4.3', 'Date.UTC')}}{{Spec2('ES5.1')}} 
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no JavaScript 1.0.
+ +

Compatibilidade entre navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/date/valueof/index.html b/files/pt-br/web/javascript/reference/global_objects/date/valueof/index.html new file mode 100644 index 0000000000..a4e807b027 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/date/valueof/index.html @@ -0,0 +1,69 @@ +--- +title: Date.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Date/valueOf +tags: + - Date + - JavaScript + - Method + - Prototipo + - Prototype + - Referencia + - data + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Date/valueOf +--- +
{{JSRef}}
+ +

O método valueOf() retorna o valor primitivo do objeto {{jsxref("Date")}}.

+ +
{{EmbedInteractiveExample("pages/js/date-valueof.html")}}
+ +

Sintaxe

+ +
dateObj.valueOf()
+ +

Valor de retorno

+ +

O número de milissegundos entre 1 de Janeiro de 1970 00:00:00 UTC e a data.

+ +

Descrição

+ +

O método valueOf() retorna o valor primitivo do objeto {{jsxref("Date")}} como um tipo de dado numérico, o número de milissegundos desde a meia noite do dia 1 de Janeiro de 1970 UTC.

+ +

Este método é funcionalmente equivalente ao método {{jsxref("Date.prototype.getTime()")}}.

+ +

Este método é geralmente chamado internamente pelo JavaScript e não explícito em código.

+ +

Exemplos

+ +

Usando valueOf()

+ +
var x = new Date(56, 6, 17);
+var myVar = x.valueOf();      // atribui -424713600000 to myVar
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Date.valueOf")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/decodeuri/index.html b/files/pt-br/web/javascript/reference/global_objects/decodeuri/index.html new file mode 100644 index 0000000000..46abadbb77 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/decodeuri/index.html @@ -0,0 +1,99 @@ +--- +title: decodeURI() +slug: Web/JavaScript/Reference/Global_Objects/decodeURI +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI +--- +
{{jsSidebar("Objects")}}
+ +

A função decodeURI() decodifica um Uniform Resource Identifier (URI) criado anteriormente por {{jsxref("encodeURI", "encodeURI()")}} ou por uma rotina semelhante.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}}
+ + + +

Sintaxe

+ +
decodeURI(encodedURI)
+ +

Parâmetros

+ +
+
encodedURI
+
Um identificador de recurso uniforme codificado completo.
+
+ +

Valor retornado

+ +

Uma nova string representando a versão não codificada do URI (Uniform Resource Identifier) ​​codificado fornecido.

+ +

Exceções

+ +

Lança uma exceção {{jsxref("URIError")}} ("sequência de URI malformada") quando o encodedURI contém sequências de caracteres inválidos.

+ +

Descrição

+ +

Substitui cada sequência de escape no URI codificado pelo caractere que ele representa, mas não decodifica sequências de escape que não poderiam ter sido introduzidas por {{jsxref("encodeURI")}}. O caractere “#” não é decodificado a partir de sequência de escape.

+ +

Exemplos

+ +

Decodificando uma URL Cyrillic

+ +
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_шеллы"
+
+ +

Captura de erros

+ +
try {
+  var a = decodeURI('%E0%A4%A');
+} catch(e) {
+  console.error(e);
+}
+
+// URIError: sequência de URI malformada
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{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')}} 
+ +

Compatibilidade com os navegadores

+ + + +

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

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/pt-br/web/javascript/reference/global_objects/decodeuricomponent/index.html new file mode 100644 index 0000000000..71f6fcb6eb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/decodeuricomponent/index.html @@ -0,0 +1,118 @@ +--- +title: decodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

O método decodeURIComponent() decodifica um componente Identificador Uniforme de Recursos (URI) criado anteriormente por um {{jsxref("encodeURIComponent")}} ou por uma rotina semelhante.

+ +

Sintaxe

+ +
decodeURIComponent(encodedURI)
+ +

Parâmetros

+ +
+
encodedURI
+
Um componente codificado de um Identificador Uniforme de Recursos.
+
+ +

Descrição

+ +

Substitui cada sequência escapada no componente URI codificado com o caractere que a representa.

+ +

Exemplos

+ +

Decodificando um componente URL Cirílico

+ +
decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
+// "JavaScript_шеллы"
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial
{{SpecName('ES5.1', '#sec-15.1.3.2', 'decodeURIComponent')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de Navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/encodeuri/index.html b/files/pt-br/web/javascript/reference/global_objects/encodeuri/index.html new file mode 100644 index 0000000000..362493efd9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/encodeuri/index.html @@ -0,0 +1,122 @@ +--- +title: encodeURI() +slug: Web/JavaScript/Reference/Global_Objects/encodeURI +tags: + - Codificação + - JavaScript + - Texto + - URI + - URL + - encodeURI + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI +--- +
{{jsSidebar("Objects")}}
+ +

A função encodeURI() codifica a URI substituindo cada instância de certos caracteres por um, dois, três ou quatro sequências de escape representando a codificação UTF-8 do caracter (será somente quatro sequências de escape para caracteres compostos de dois caracteres substitutos).

+ +
{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}
+ + + +

Sintaxe

+ +
encodeURI(URI)
+ +

Parâmetros

+ +
+
URI
+
Uma URI completa.
+
+ +

Valor de retorno

+ +

Uma nova cadeia de caracteres representando a cadeia de caracteres provida, codificada como uma URI.

+ +

Descrição

+ +

A função encodeURI() não codifica caracteres que possuem significado especial (caracteres reservados) para a URI. O exemplo seguinte mostra todas as partes que o "esquema" da URI pode possivelmente conter. Note como certos caracteres são usados para dar significado especial:

+ +
http://username:password@www.example.com:80/path/to/file.php?foo=316&bar=this+has+spaces#anchor
+ +

Consequentemente, encodeURI() não codifica caracteres que são necessários para formular uma URI completa. Também, encodeURI() não codifica alguns caracteres adicionais, conhecidos como "marcas não reservadas (unreserved marks)", que não tem propósito reservado mas são permitidos na URI "como são". (Veja RFC2396)

+ +

encodeURI() escapa todos os caracteres exceto:

+ +
Não escapado:
+
+    A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
+
+
+ +

Exemplos

+ +

encodeURI vs encodeURIComponent

+ +

encodeURI() se difere de {{jsxref("encodeURIComponent", "encodeURIComponent()")}} como a seguir:

+ +
var set1 = ";,/?:@&=+$#"; // Caracteres reservados
+var set2 = "-_.!~*'()";   // Marcas não reservadas
+var set3 = "ABC abc 123"; // Caracteres alfanuméricos + Espaço
+
+console.log(encodeURI(set1)); // ;,/?:@&=+$#
+console.log(encodeURI(set2)); // -_.!~*'()
+console.log(encodeURI(set3)); // ABC%20abc%20123 (o espaço é codificado como %20)
+
+console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24%23
+console.log(encodeURIComponent(set2)); // -_.!~*'()
+console.log(encodeURIComponent(set3)); // ABC%20abc%20123 (o espaço é codificado como %20)
+
+ +

Note que encodeURI() por si só não pode formar requisições GET e POST, como para XMLHttpRequest, porque "&", "+", e "=" não são codificados, que são tratados como caracteres especiais em requisições GET e POST. encodeURIComponent(), entretanto, codifica esses caracteres.

+ +

Codificando um substituto solitário alto joga

+ +

Um {{jsxref("URIError")}} será jogado se uma tentativa de codificar um substituto que não é parte de um par alto-baixo, e.g.,

+ +
// par alto-baixo ok
+console.log(encodeURI('\uD800\uDFFF'));
+
+// substituto alto solitário joga "URIError: malformed URI sequence"
+console.log(encodeURI('\uD800'));
+
+// substituto baixo solitário joga "URIError: malformed URI sequence"
+console.log(encodeURI('\uDFFF'));
+ +

Codificando para IPv6

+ +

Se você deseja seguir a RFC3986 mais recente para URLs, que faz colchetes ser reservado (para IPv6) e então não será codificado quando formando algo que possa ser parte da URL (como o host), o seguinte código pode ajudar:

+ +
function fixedEncodeURI(str) {
+    return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
+}
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-encodeuri-uri', 'encodeURI')}}
+ +

Compatibilidade de navegador

+ + + +

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

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/pt-br/web/javascript/reference/global_objects/encodeuricomponent/index.html new file mode 100644 index 0000000000..9d08433bfa --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/encodeuricomponent/index.html @@ -0,0 +1,159 @@ +--- +title: encodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +--- +
{{jsSidebar("Objects")}}
+ +

O método encodeURIComponent() codifica  uma URI (Identificador recurso uniforme) substituindo cada ocorrência de determinados caracteres por um, dois, três, ou quatro seqüências de escape que representam a codificação UTF-8 do caractere (só será quatro seqüências de escape para caracteres compostos por dois caracteres "substituto").

+ +

Syntaxe

+ +
encodeURIComponent(str);
+ +

Parâmetros

+ +
+
str
+
String. Uma sequência URI.
+
+ +

Descrição

+ +

encodeURIComponent escapa todos os caracteres, exceto: alfabeto, dígitos decimais, - _ . ! ~ * ' ( )

+ +

Note-se que um{{jsxref("URIError")}} será gerada se uma tentativas para codificar um substituto que não faz parte de um par de alta-baixa, por exemplo,

+ +
// high-low par ok
+console.log(encodeURIComponent('\uD800\uDFFF'));
+
+// lone high surrogate throws "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uD800'));
+
+// lone low surrogate throws "URIError: malformed URI sequence"
+console.log(encodeURIComponent('\uDFFF'));
+
+ +

Para previnir requisões inesperadas ao servidor, deve-se chamar encodeURIComponent ou qualquer parâmetro fornecido pelo usuário que será passado como parte da URI. Por exemplo, um usuário poderia digitar "Thyme &time=again" para uma variável commentario. Ao não usar encodeURIComponent nessa variável irá ser obetido commentario=Thyme%20&time=again. Note que o ampersa  e o sinal de igual marcam um novo par de chave e valor. Então ao invés de ter um POST com a chave commentario igual a "Thyme &time=again", tem-se chaves em  POST, uma igual a "Thyme " e outra (time) igual a again.

+ +

Para application/x-www-form-urlencoded, espaços são substituídos por '+', então pode-se querer seguir um encodeURIComponent substituição com uma substituição adicional de "%20" com "+".

+ +

Para ser mais rigoroso à aderência da RFC 3986 (qual reserva !, ', (, ), e *), mesmo que esses caracteres não tenham usos formalizados de delimitação de URI, o seguinte pode ser usado com segurança:

+ +
function ajustadoEncodeURIComponent (str) {
+  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
+    return '%' + c.charCodeAt(0).toString(16);
+  });
+}
+
+ +

Exemplos

+ +

O exemplo seguinte provê o encoding especial requerido pelo UTF-8 nos parâmetros Content-Disposition e Link no cabeçalho de uma Response (e.g., UTF-8 filenames):

+ +
var fileName = 'my file(2).txt';
+var header = "Content-Disposition: attachment; filename*=UTF-8''"
+             + encodeRFC5987ValueChars(fileName);
+
+console.log(header);
+// logs "Content-Disposition: attachment; filename*=UTF-8''my%20file%282%29.txt"
+
+
+function encodeRFC5987ValueChars (str) {
+    return encodeURIComponent(str).
+        // Note that although RFC3986 reserves "!", RFC5987 does not,
+        // so we do not need to escape it
+        replace(/['()]/g, escape). // i.e., %27 %28 %29
+        replace(/\*/g, '%2A').
+            // The following are not required for percent-encoding per RFC5987,
+            // so we can allow for a little better readability over the wire: |`^
+            replace(/%(?:7C|60|5E)/g, unescape);
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentario
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição Inicial.
{{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}{{Spec2('ES6')}} 
+ +

Compatibilidade - Browser

+ +

{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/error/index.html b/files/pt-br/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..41cc7e5bb8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,229 @@ +--- +title: Error +slug: Web/JavaScript/Reference/Global_Objects/Error +tags: + - Custom Error + - Erro + - Error + - JavaScript + - Reference + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

O construtor de Error cria um objeto de erro. Instâncias de objetos Error são lançadas quando erros de tempo de execução ocorrem. O objeto Error também pode ser usado como objeto base para exceções definidas pelo usuário. Veja abaixo tipos de erro padrões embutidos.

+ +

Sintaxe

+ +
new Error([message[, fileName[, lineNumber]]])
+ +

Parâmetros

+ +
+
message
+
Opcional. Descrição do erro legível para humanos.
+
fileName {{non-standard_inline}}
+
Opcional. O valor da propriedade fileName  no objeto de erro criado. O padrão é o nome do arquivo contendo o código que chamou o construtor de Error().
+
lineNumber {{non-standard_inline}}
+
Opcional. O valor da propriedade lineNumber no objeto de Error criado. O padrão é o número da linha contendo a invocação do construtor Error().
+
+ +

Descrição

+ +

Erros em tempo de execução resultam em novos objetos Error sendo criados e lançados.

+ +

Esta página documenta o uso do objeto Error em si e seu uso como uma função construtora. Para uma lista de propriedades e métodos herdados por instâncias de Error, veja {{jsxref("Error.prototype")}}.

+ +

Tipos de erro

+ +

Além do construtor genérico de Error, existem outros seis construtores principais de erro  no JavaScript. Para exceções em client-side, veja Excessões na captura de Instruções.

+ +
+
{{jsxref("EvalError")}}
+
Cria uma instância representando um erro que ocorre na função global. {{jsxref("Global_Objects/eval", "eval()")}}.
+
{{jsxref("InternalError")}} {{non-standard_inline}}
+
Cria uma instância representando um erro que ocorre quando um erro interno na engine do JavaScript é lançado. Ex: "too much recursion".
+
{{jsxref("RangeError")}}
+
Cria uma instância representando um erro que ocorre quando um valor ou parâmetro numérico está fora de seus limites válidos.
+
{{jsxref("ReferenceError")}}
+
Cria uma instância representando um erro que ocorre ao de-referenciar uma referência inválida.
+
{{jsxref("SyntaxError")}}
+
Cria uma instância representando um erro que ocorre ao fazer o parse do código em {{jsxref("Global_Objects/eval", "eval()")}}.
+
{{jsxref("TypeError")}}
+
Cria uma instância representando um erro que ocorre quando uma variável ou parâmetro não é de um tipo válido.
+
{{jsxref("URIError")}}
+
Cria uma instância representando um erro que ocorre quando são passados parâmetros inválidos para {{jsxref("Global_Objects/encodeURI", "encodeURI()")}} ou {{jsxref("Global_Objects/decodeURI", "decodeURI()")}}.
+
+ +

Propriedades

+ +
+
{{jsxref("Error.prototype")}}
+
Permite a criação de propriedades para instâncias de Error.
+
+ +

Métodos

+ +

O objeto Error global não contém métodos próprios, entretanto, ele herda alguns métodos através da cadeia de prototypes.

+ +

Instâncias de Error

+ +
{{page('pt-BR/docs/JavaScript/Reference/Global_Objects/Error/prototype', 'Description')}}
+ +

Propriedades

+ +
{{page('pt-BR/docs/JavaScript/Reference/Global_Objects/Error/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('pt-BR/docs/JavaScript/Reference/Global_Objects/Error/prototype', 'Methods')}}
+ +

Exemplos

+ +

Lançando um erro genérico

+ +

Geralmente você cria um objeto Error com a intenção de lançá-lo usando a palavra-chave {{jsxref("Statements/throw", "throw")}}. Você pode capturar o erro usando uma construção de {{jsxref("Statements/try...catch", "try...catch")}}:

+ +
try {
+  throw new Error('Oooops!');
+} catch (e) {
+  alert(e.name + ': ' + e.message);
+}
+
+ +

Capturando um erro específico

+ +

Você pode escolher por capturar apenas tipos de erro específicos testando o tipo do erro com a propriedade {{jsxref("Object.prototype.constructor", "constructor")}} de erro ou, se você está escrevendo para engines de JavaScript modernas, a palavra-chave {{jsxref("Operators/instanceof", "instanceof")}}:

+ +
try {
+  Objeto.Metodo();
+} catch (e) {
+  if (e instanceof EvalError) {
+    alert(e.name + ': ' + e.message);
+  } else if (e instanceof RangeError) {
+    alert(e.name + ': ' + e.message);
+  }
+  // ... etc
+}
+
+ +

Tipos de erro customizados

+ +

Você pode escolher definir seus próprios tipos de erro derivando de Error para conseguir usar throw new MeuErro() e usar instanceof MeuErro para checar o tipo de erro na captura da exceção. A forma comum para isso está demonstrada abaixo

+ +
+

Note que as instâncias MeuErro lançadas vão reportar valores de lineNumberfileName incorretos, ao menos no Firefox.

+
+ +

Veja também "esta discussão no Stackoverflow (em inglês): What's a good way to extend Error in JavaScript?".

+ +
// Cria um novo objeto que herda o construtor de Error através do prototype.
+function MeuErro(message) {
+  this.name = 'MeuErro';
+  this.message = message || 'Mensagem de erro padrão';
+  this.stack = (new Error()).stack;
+}
+MeuErro.prototype = Object.create(MeuErro.prototype);
+MeuErro.prototype.constructor = MeuErro;
+
+try {
+  throw new MeuErro();
+} catch (e) {
+  console.log(e.name);     // 'MeuErro'
+  console.log(e.message);  // 'Mensagem de erro padrão'
+}
+
+try {
+  throw new MeuErro('Mensagem customizada');
+} catch (e) {
+  console.log(e.name);     // 'MeuErro'
+  console.log(e.message);  // 'Mensagem customizada'
+}
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementada no JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11', 'Error')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error-objects', 'Error')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/error/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..2a6ed43803 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,58 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - JavaScript + - Não padronizado + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método toSource() retorna código que pode resultar no mesmo erro.

+ +

Sintaxe

+ +
e.toSource()
+ +

Valor de retorno

+ +

Uma string contendo o código fonte do erro.

+ +

Exemplos

+ +

Usando toSource

+ +

Chamando método toSource de uma instância {{jsxref("Error")}} (incluindo NativeErrors) irá retornar uma string contendo o código fonte do erro. Essa string pode ser avaliada para criar (aproximadamente) um objeto igual. Naturalmente, a string contendo o fonte segue a estrutura do construtor {{jsxref("Error")}}. Por exemplo:

+ +
(newname(message ,fileName,lineNumber))
+
+ +

onde estes atributos correspondem as respectivas propriedades da instância do erro.

+ +
+

Nota: Fique alerta que as propriedades usadas pelo método toSource na criação da string são mutáveis e podem não refletir precisamente a função utilizada para criar a instância do erro ou nome de arquivo ou número de linha onde o erro atual ocorreu.

+
+ +

Especificações

+ +

Não faz parte de nenhum padrão.

+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Error.toSource")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/error/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..80aba76e10 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,100 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Error/toString +tags: + - JavaScript + - Method + - Prototipo + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +
{{JSRef}}
+ +

O método toString() retorna uma string representando o objeto {{jsxref("Error")}}.

+ +

Sintaxe

+ +
e.toString()
+ +

Valor de retorno

+ +

A string representando o objeto {{jsxref("Error")}} especificado.

+ +

Descrição

+ +

O objeto {{jsxref("Error")}} sobrescreve o método {{jsxref("Object.prototype.toString()")}} herdado por todos os objetos. Sua semântica é a seguinte (assumindo que {{jsxref("Object")}} e {{jsxref("String")}} tem seus valores originais):

+ +
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;
+};
+
+ +

Exemplos

+ +

Usando toString()

+ +
var e = new Error('fatal error');
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = undefined;
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = '';
+console.log(e.toString()); // 'fatal error'
+
+e.message = undefined;
+console.log(e.toString()); // ''
+
+e.name = 'hello';
+console.log(e.toString()); // 'hello'
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Error.toString")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/escape/index.html b/files/pt-br/web/javascript/reference/global_objects/escape/index.html new file mode 100644 index 0000000000..b966913b6d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/escape/index.html @@ -0,0 +1,127 @@ +--- +title: escape() +slug: Web/JavaScript/Reference/Global_Objects/escape +translation_of: Web/JavaScript/Reference/Global_Objects/escape +--- +
{{jsSidebar("Objects")}}
+ +
A função obsoleta escape() retorna uma nova string com certos caracteres substituídos por sua sequência hexadecial. Use {{jsxref("encodeURI")}} ou {{jsxref("encodeURIComponent")}} em seu lugar.
+ +
 
+ +

Sintaxe

+ +
escape(str)
+ +

Parâmetros

+ +
+
str
+
Uma string para ser codificada.
+
+ +

Descrição

+ +

A função escape é uma propriedade do global object. Caracteres especiais são codificados, com a exceção de: @*_+-./

+ +

O formato hexadecimal de caracteres, que o valor unitário do código é 0xFF or less, é uma sequência de escape de 2 digitos: %xx. Para caracteres com um código unitário maior, uma sequência de 4 digitos %uxxxx é usada.

+ +

Exemplos

+ +
escape("abc123");     // "abc123"
+escape("äöü");        // "%E4%F6%FC"
+escape("ć");          // "%u0107"
+
+// Caracteres Especiais
+escape("@*_+-./");    // "@*_+-./"
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}{{Spec2('ES5.1')}}Definido no (informativo) de compatibilidade Anexo B
{{SpecName('ES6', '#sec-escape-string', 'escape')}}{{Spec2('ES6')}}Definido no (normativo) Anexo B para recursos adicionais do ECMAScript para navegadores da web
{{SpecName('ESDraft', '#sec-escape-string', 'escape')}}{{Spec2('ESDraft')}}Definido no (normativa) Anexo B para recursos adicionais do ECMAScript para navegadores da web
+ +

Compatibilidade de Navegadores

+ +

{{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}}
+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/eval/index.html b/files/pt-br/web/javascript/reference/global_objects/eval/index.html new file mode 100644 index 0000000000..f4e0044f50 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/eval/index.html @@ -0,0 +1,255 @@ +--- +title: eval() +slug: Web/JavaScript/Reference/Global_Objects/eval +translation_of: Web/JavaScript/Reference/Global_Objects/eval +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Resumo

+ +

A função eval() computa um código JavaScript representado como uma string.

+ +

Sintaxe

+ +
eval(string)
+ +

Parâmetros

+ +
+
string
+
Uma sequência de caracteres que representa uma expressão JavaScript, declaração, ou sequência de declarações. A expressão pode incluir variáveis e propriedades de objetos existentes.
+
+ + + +

Retorno

+ +

É o valor computado do código passado para a função. Se o valor estiver vazio, retornará {{jsxref("undefined")}}.

+ + + +

Descrição

+ +

eval() é uma função de propriedade do objeto global (window).

+ +

O argumento da função eval() é uma string. Se a string representa uma expressão, eval() avalia a expressão. Se o argumento representa uma ou mais declarações em JavaScript, eval() avalia as declarações. Não chame o eval() para avaliar uma expressão aritmética; JavaScript avalia expressões aritméticas automaticamente.

+ +

Se você construir uma expressão aritmética como uma string, você pode usar eval() para calcular o resultado depois. Por exemplo, suponha que você tenha uma variável x. Você pode adiar a avaliação de uma expressão envolvendo x atribuindo o valor de string da expressão, dizer "3 * x + 2", a uma variável, e, em seguida, chamando eval() em um ponto posterior no seu script.

+ +

Se o argumento de eval() não é uma string, eval() retorna o argumento inalterado. No exemplo a seguir, o construtor String é especificado, e eval() retorna um objeto String em vez de avaliar a string.

+ +
eval(new String("2 + 2")); // retorna um objeto String contendo "2 + 2"
+eval("2 + 2");             // retorna 4
+
+ +

Você pode contornar esta limitação de forma genérica usando toString().

+ +
var expression = new String("2 + 2");
+eval(expression.toString()); // retorna 4
+
+ +

Se você usar a função eval indiretamente, invocando-a por outra referência além de eval, a partir do ECMAScript 5 funciona no escopo global ao invés do escopo local. Significa que, por exemplo, aquelas declarações de funções criam funções globais e que o código que está sendo avaliado não tem acesso às variáveis locais dentro do escopo onde está sendo chamada.

+ +
function test() {
+  var x = 2, y = 4;
+  console.log(eval('x + y'));  // Chamada direta, usa o escopo local, resulta em 6
+  var geval = eval; // equivalente a chamar eval no escopo global
+  console.log(geval('x + y')); // Chamada indireta, usa o escopo global, lança uma exceção ReferenceError porque `x` não foi declarado
+  (0, eval)('x + y'); // outro exemplo de chamada indireta
+}
+ +

Nunca use eval!

+ +

eval() é uma função perigosa, que executa o código passado com os privilégios do caller. Se você executar o eval() com uma sequência de caracteres que podem ser afetados por uma parte maliciosa, você pode acabar executando código malicioso na máquina do usuário com as permissões da sua página/extensão. Mais importante ainda, o código de terceiros pode ver o escopo em que eval() foi chamado, o que pode levar a possíveis ataques como  {{jsxref("Global_Objects/Function", "Function")}} não é suscetível.

+ +

eval() é geralmente mais lento do que as alternativas, uma vez que tem de invocar o interpretador JS, enquanto muitos outros construtores são otimizados por engines de JS modernos.

+ +

Os interpretadores modernos convertem javascript em código de máquina. Resumindo, o nome das variáveis será desmanchado. Portanto, o uso de eval forçará o navegador a fazer buscas caras para descobrir o endereço e seu valor no código de máquina. Além disso, novos valores podem ser introduzidos em eval como mudanças no tipo da variável, fazendo o navegador recalcular todo o código de máquina gerado anteriormente. Felizmente, existem alternativas mais seguras (e rápidas) ao eval() para usos comuns.

+ +

Acessando propriedades dos membros

+ +

Você não deve utilizar eval() para converter nomes de propriedades em propriedades. Considere o seguinte exemplo onde as propriedades do objeto a ser acessado não são conhecidas até o código ser executado. Isso pode ser feito com eval:

+ +
var obj = { a: 20, b: 30 };
+var propname = getPropName();  //retorna "a" ou "b"
+
+eval( "var result = obj." + propname );
+
+ +

No entanto, eval() não é necessário aqui. De fato, sua utilização não é recomendada. Ao invés disso, utilize os operadores de acesso, que são mais rápidos e seguros:

+ +
var obj = { a: 20, b: 30 };
+var propname = getPropName();  //retorna "a" ou "b"
+var result = obj[ propname ];  //  obj[ "a" ] é o mesmo como obj.a
+
+ +

Utilize funções ao invés de avaliar snippets de código

+ +

JavaScript possui first-class functions, o que significa que você pode passar os argumentos para outras APIs, armazená-los em variáveis e propriedades de objeto, e assim por diante. Muitas APIs de DOM foram desenvolvidas com isso em mente, então você pode (e deve) escrever:

+ +
// ao invés de setTimeout(" ... ", 1000) use:
+setTimeout(function() { ... }, 1000);
+
+// ao invés de elt.setAttribute("onclick", "...") use:
+elt.addEventListener("click", function() { ... } , false); 
+ +

Closures são úteis como forma de criar funcções parametrizáveis sem concatenar strings.

+ +

Analisando JSON (convertendo string para objetos JavaScript)

+ +

Se a string para a qual você está chamando o eval() contém dados (por exemplo, um array: "[1, 2, 3]"),  ao invés de código, você deve considerar mudar para JSON, que permite a string usar um subconjunto de sintaxe Javascript para representar dados. Veja também Downloading JSON and JavaScript in extensions.

+ +

Perceba que como a sintaxe JSON é limitada comparada com a sintaxe JavaScript, muitos literais JavaScript válidos não serão analisados como JSON. Por exemplo, trailing commas não são permitidas em JSON, e nomes de propriedades (keys) em literais de objetos devem ser colocados entre aspas. Certifique-se de usar um serializados JSON para gerar strings que serão analisadas como JSON mais tarde.

+ +

Passar dados em vez de códigos

+ +

Por exemplo, uma extensão concebida para raspar conteúdos de páginas web pode ter as regras de raspagem definidas no XPath em vez de código JavaScript.

+ +

Rodando o código com privilégios limitados

+ +

Se você precisa executar o código, considere executá-lo com privilégios limitados. Esse conselho se aplica principalmente para extensões e aplicações XUL, que podem usar Components.utils.evalInSandbox para obter o resultado.

+ +

Exemplos

+ +

Os exemplos a seguir mostram o retorno do document.write. No JavaScript rodando no server-side, você pode obter o mesmo resultado chamando o método write()ao invés de usar o document.write().

+ +

Exemplo: Usando eval

+ +

No código a seguir, ambas as declarações contendo eval() retornam 42. A primeira avalia a string "x + y + 1"; a segunda avalia a string "42".

+ +
var x = 2;
+var y = 39;
+var z = "42";
+eval("x + y + 1"); // returns 42
+eval(z);           // returns 42
+
+ +

Examplo: Using eval to evaluate a string of JavaScript statements

+ +

O exemplo a seguir usa eval() para avaliar a string str. Essa string consiste de instruções JavaScript que abrem uma caixa de diálogo de alerta e atribuem ao z o valor de 42 se x for cinco, e do contrário, atribui 0 a z. Quando a segunda instrução é executada, eval() fará com que essas instruções sejam executadas e também irá avaliar o conjunto de instruções e retornará o valor atribuído a z.

+ +
var x = 5;
+var str = "if (x == 5) {alert('z is 42'); z = 42;} else z = 0; ";
+
+document.write("<P>z is ", eval(str));
+ +

Exemplo: A última expressão é avaliada

+ +

eval() retorna o valor da última expressão avaliada.

+ +
var str = "if ( a ) { 1+1; } else { 1+2; }";
+var a = true;
+var b = eval(str);  // returns 2
+
+alert("b is : " + b);
+
+a = false;
+b = eval(str);  // returns 3
+
+alert("b is : " + b);
+ +

Exemplo: avaliar uma string definindo a função necessária "(" and ")" como prefixo e sufixo

+ +
var fctStr1 = "function a() {}"
+var fctStr2 = "(function a() {})"
+var fct1 = eval(fctStr1)  // return undefined
+var fct2 = eval(fctStr2)  // return a function
+
+ + + +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial
{{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-eval-x', 'eval')}}{{Spec2('ES6')}}
+ +

Compatibilidade de navegador

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Gecko-specific notes

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/evalerror/index.html b/files/pt-br/web/javascript/reference/global_objects/evalerror/index.html new file mode 100644 index 0000000000..d938b83d8f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/evalerror/index.html @@ -0,0 +1,163 @@ +--- +title: EvalError +slug: Web/JavaScript/Reference/Global_Objects/EvalError +tags: + - Desenvolvimento Web + - Erro + - EvalError + - JS + - JavaScript + - Referencia + - Web +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +
{{JSRef}}
+ +

O Objeto EvalError indica um erro em relação a função global {{jsxref("Global_Objects/eval", "eval()")}}. Esta exceção não é mais lançada pelo JavaScript, no entanto, o objeto EvalError ainda permanece compatível.

+ +

Sintaxe

+ +
new EvalError([message[, fileName[, lineNumber]]])
+ +

Parâmetros

+ +
+
message
+
Opcional. Descrição do erro legível para humanos
+
fileName {{non-standard_inline}}
+
Opcional. O nome do arquivo que contém o código que causa a exceção
+
lineNumber {{non-standard_inline}}
+
Opcional. O número da linha do código que causa a exceção
+
+ +

Propriedades

+ +
+
{{jsxref("EvalError.prototype")}}
+
Permite a adição de propriedades para um objeto EvalError.
+
+ +

Métodos

+ +

O global EvalError não contém métodos próprios, no entando, ele irá herdar alguns métodos através da cadeia de protótipos.

+ +

Instâncias do EvalError

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Methods')}}
+ +

Exemplos

+ +

EvalError não é usado na especificação ECMAScript e deste modo não será lançado pelo tempo de execução. No entando, o objeto em si permanece para compatibilidade com versões anteriores da especificação.

+ +

Criando um EvalError

+ +
try {
+  throw new EvalError('Hello', 'someFile.js', 10);
+} catch (e) {
+  console.log(e instanceof EvalError); // true
+  console.log(e.message);              // "Hello"
+  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"
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}{{Spec2('ES5.1')}}Não utilizada na especificação. Presente para compatibilidade com outras versões.
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ES6')}}Não utilizada na especificação. Presente para compatibilidade com outras versões.
{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MóvelOpera MóvelSafari Móvel
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/float32array/index.html b/files/pt-br/web/javascript/reference/global_objects/float32array/index.html new file mode 100644 index 0000000000..9bd9a6a33d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/float32array/index.html @@ -0,0 +1,200 @@ +--- +title: Float32Array +slug: Web/JavaScript/Reference/Global_Objects/Float32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array +--- +
{{JSRef}}
+ +

A array tipada Float32Array representa uma array de 32-bits contendo floats (correspondendo ao tipo de dados float em C) na ordem dos bytes da plataforma. Se o controle sobre a ordem dos bytes for precisa, use {{jsxref("DataView")}}. Os conteúdos iniciam em 0. Uma vez estabelecido, você pode referenciar os elementos na array usando os métodos do objeto ou usando a síntaxe padrão das arrays (Isto é, usando colchetes)

+ +

Síntaxe

+ +
new Float32Array(); // novo no ES2017
+new Float32Array(length);
+new Float32Array(typedArray);
+new Float32Array(object);
+new Float32Array(buffer [, byteOffset [, length]]);
+ +

Para mais informações sobre a síntaxe de construção e os parâmetros, veja TypedArray.

+ +

Propriedades

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}
+
Retorna um número valor do tamanho do elemento. 4 no caso de uma Float32Array.
+
Float32Array.length
+
Método estático cujo o valor é 0. Para o tamanho atual (número de elementos), veja {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Float32Array.name")}}
+
Retorna o valor em string do nome do constructor. No caso de Float32Array é  "Float32Array".
+
{{jsxref("TypedArray.prototype", "Float32Array.prototype")}}
+
Prototype para os objetos TypedArray.
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.from", "Float32Array.from()")}}
+
Cria uma nova Float32Array de um array-like ou um objeto iterável. Veja também {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Float32Array.of()")}}
+
Cria uma nova Float32Array with um número variável de argumentos. Veja também {{jsxref("Array.of()")}}.
+
+ +

Float32Array prototype

+ +

Todos os objetos Float32Array herdam de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Propriedades

+ +
+
Float32Array.prototype.constructor
+
Retorna a função cujo criou o protótipo da instância. Este é o construtor padrão da Array Float32Array.
+
{{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}
+
Retorna os {{jsxref("ArrayBuffer")}} referenciado pela Array Float32Array fixada na hora de sua construção e é somente leitura.
+
{{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}
+
Retorna o tamanho (em bytes) da Array Float32Array do começo de seu {{jsxref("ArrayBuffer")}}. Fixado na hora de sua construção e é somente leitura.
+
{{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}
+
Retorna o deslocamento (em bytes) da Array Float32Array do começo de seu {{jsxref("ArrayBuffer")}}. Fixado na hora de sua construção e é somente leitura.
+
{{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}
+
Retorna o número de elementos na Array Float32Array do começo de seu {{jsxref("ArrayBuffer")}}. Fixado na hora de sua construção e é somente leitura.
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}
+
Copia a sequência dos elementos dentro da Array. Veja também {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}
+
Retorna um novo objeto Array Iterator que contém os pares chave/valor para cada índex na array. Veja também {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}
+
Testa quando todos os elementos na array passam no teste proveniente de uma função. Veja também {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}
+
Preenche todos os elementos de uma array do índex inicial ao índex final com um valor estático. Veja também {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}
+
Cria uma nova array com todos os elementos dessa array para a função de filtragem que retornar true. Veja também {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}
+
Retorna o valor na array encontrado, se um elemento na array satizfaz o teste proveniente de uma função de teste ou undefined se não for encontrado. Veja também {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}
+
Retorna o index encontrado na array,  se um elemento na array satizfaz o teste proveniente de uma função de teste ou -1 se não for encontrado. Veja também {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}
+
Chama uma função para cada elemento na array. Veja também {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}} {{experimental_inline}}
+
Determina quando a array tipada inclui um certo elemento, retornando true ou false como apropriado. Veja também {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}
+
Retorna o primeiro (menor) index de um elemento dentro de uma array igual ao valor expecificado, ou -1 se nenhum for encontrado. Veja também {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}
+
Junta todos os elementos de uma array em uma string. Veja também {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}
+
Retorna um novo Array Iterator cujo contem as chaves para cada index na array. Veja também {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}
+
Retorna o último (maior) índex de um elemento dentro da array igual ao valor especificado, ou -1 se nenhum for encontrado. Veja também {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}
+
Cria uma nova array com os resultados da função chamada em cada elemento nesta array. Veja também {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Versão antiga não padrão de {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}
+
Aplica uma função contra um acumulador e cada valor na array (da esquerda para a direita) com o intuito de reduzí-la a um único valor. Veja também {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}
+
Aplica uma função contra um acumulador e cada valor na array (da direita para a esquerda) como o intuito de reduzí-la a um único valor. See also {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}
+
Reverte a ordem se todos os elementos em uma array - o primeiro se torna o último, e o último de torna o primeiro. Veja também {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}
+
Armazena múltiplos valores na array tipada, lendo os valores de entrada de uma array especificada.
+
{{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}
+
Extrai uma seção de uma array e retorna uma nova array. Veja também {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}
+
Retorna true se pelo menos um elemento nesta array satisfazer a função de teste proveniente de uma função de teste. Veja também {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}
+
Classifica os elementos de uma array no lugar e retorna a array. Veja também {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}
+
Retorna uma nova Array Float32Array a partir de um ponto inicial e um fim pelo índex do elemento.
+
{{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}
+
Retorna um novo objeto Array Iterator que contém os valores para cada índex na Array. Veja também {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}
+
Retorna uma string localizada representando a array e seus elementos. Veja também {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}
+
Retorna uma string representando a array e seus elementos. Veja também {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}
+
Retorna um novo objeto Array Iterator que contém os valores para cada índex na Array.
+
+ +

Exemplos

+ +

Diferentes modos de criar uma Array Float32Array:

+ +
// Pelo seu tamanho
+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
+
+// Por uma array
+var arr = new Float32Array([21,31]);
+console.log(arr[1]); // 31
+
+// Por uma outra TypedArray
+var x = new Float32Array([21, 31]);
+var y = new Float32Array(x);
+console.log(y[0]); // 21
+
+// Por um ArrayBuffer
+var buffer = new ArrayBuffer(16);
+var z = new Float32Array(buffer, 0, 4);
+
+// Por um iterável
+var iterable = function*(){ yield* [1,2,3]; }();
+var float32 = new Float32Array(iterable);
+// Float32Array[1, 2, 3]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Suplantada pelo ECMAScript 2015.
{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}{{Spec2('ES6')}}Definição inicial no padrão ECMA. Especificado que o new é requerido.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}O ECMAScript 7 mudou o construtor da Array Array32Float para o uso da operação ToIndex e ajudar nos construtores sem argumentos.
+ +

Compatibilidade dos navegadores

+ + + +

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

+ +

Notas de compatibilidade

+ +

Começando com o ECMAScript 2015, construtores da Array Float32Array requerem o uso do operador {{jsxref("Operators/new", "new")}}. Chamando o construtor da Array Float32Array como uma função, sem o new, irá gerar um erro {{jsxref("TypeError")}} de agora em diante.

+ +
var dv = Float32Array([1, 2, 3]);
+
+// TypeError: chamando o construtor da função interna Float32Array
+// sem o new é proibido
+ +
var dv = new Float32Array([1, 2, 3]);
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/float64array/index.html b/files/pt-br/web/javascript/reference/global_objects/float64array/index.html new file mode 100644 index 0000000000..63a7ae3f33 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/float64array/index.html @@ -0,0 +1,160 @@ +--- +title: Float64Array +slug: Web/JavaScript/Reference/Global_Objects/Float64Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array +--- +
{{JSRef}}
+ +

The Float64Array typed array represents an array of 64-bit floating point numbers (corresponding to the C double data type) in the platform byte order. If control over byte order is needed, use {{jsxref("DataView")}} instead. The contents are initialized to 0. Once established, you can reference elements in the array using the object's methods, or using standard array index syntax (that is, using bracket notation).

+ +

Constructor

+ +
+
Float64Array()
+
Cria um novo objeto Float64Array
+
+ +

Static properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}
+
Retorna um valor numerico de tamanho . 8 no caso de um Float64Array.
+
{{jsxref("TypedArray.name", "Float64Array.name")}}
+
Retorna uma string com o nome do contructor. no caso deFloat64Array type: "Float64Array".
+
+ +

Static methods

+ +
+
{{jsxref("TypedArray.from", "Float64Array.from()")}}
+
Cria um novo Float64Array a partir de um array-like ou um objeto iteravel . tambem como {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Float64Array.of()")}}
+
Cria um novo Float64Array com um numero variado de argumentos. tambem como {{jsxref("Array.of()")}}.
+
+ +

Instance properties

+ +
+
{{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}}
+
Returns the {{jsxref("ArrayBuffer")}} referenced by the Float64Array Fixed at construction time and thus read only.
+
{{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}}
+
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")}}
+
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")}}
+
Returns the number of elements hold in the Float64Array. Fixed at construction time and thus read only.
+
+ +

Instance 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()")}}
+
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.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

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}
+ +

Browser compatibility

+ + + +

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

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/apply/index.html b/files/pt-br/web/javascript/reference/global_objects/function/apply/index.html new file mode 100644 index 0000000000..a51af3db97 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/apply/index.html @@ -0,0 +1,249 @@ +--- +title: Function.prototype.apply() +slug: Web/JavaScript/Reference/Global_Objects/Function/apply +tags: + - Funções + - JavaScript + - Métodos +translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply +--- +
{{JSRef}}
+ +

O método apply() chama uma função com um dado valor this e arguments providos como uma array (ou um objeto parecido com um array).

+ +
+

Nota: A sintaxe desta função é quase idêntica a essa da {{jsxref("Function.call", "call()")}}, a diferença é que call() aceita uma  lista de argumentos, enquanto apply() aceita um array de argumentos.

+
+ +

Sintaxe

+ +
fun.apply(thisArg, [argsArray])
+ +

Parâmetros

+ +
+
thisArg
+
+

O valor de this é fornecido para a chamada de fun. Note que isso talvez não seja o valor real visto pelo método:  se um método é uma função em código {{jsxref("Functions/Strict_mode", "non-strict mode", "", 1)}} , {{jsxref("null")}} e {{jsxref("undefined")}} serão substituidos com o objeto global, e os valores primitivos serão embalados.

+
+
argsArray
+
Um objeto parecido com um array (array-like), especificando os argumentos com os quais fun deve ser chamado, ou {{jsxref("null")}} ou {{jsxref("undefined")}} se não houverem argumentos que possam ser passados para a função. Começando com ECMAScript5 esses argumentos podem ser um objeto genérico array-like ao invés de um array. Veja abaixo a informação de {{anch("Browser_compatibility", "compatibilidade de browsers")}}.
+
+ +

Descrição

+ +

Você pode atribuir um objeto this diferente quando chamar uma função existente. this refere-se ao objeto atual, o objeto da chamada. Com applyvocê pode escrever um método apenas uma vez e então herdá-lo em outro objeto, sem ter que reescrever o método para o novo objeto.

+ +

apply é muito parecido com {{jsxref("Function.call", "call()")}}, exceto pelo tipo de argumentos que ele suporta. Você pode usar um array de argumentos em vez de conjunto de parâmetros nomeados. Com apply, você pode usar um array literal, por exemplo, fun.apply(this, ['comer', 'bananas']), ou um objeto {{jsxref("Array")}}, por exemplo fun.apply(this, new Array('comer', 'bananas')).

+ +

Você pode também usar {{jsxref("Functions/arguments", "arguments")}} para o parâmetro argsArray. arguments é uma variável local de uma função.  Ele pode ser utilizado para todos os argumentos não especificados do objeto chamado. Assim, você não tem que saber os argumentos do objeto chamado quando você usa o método apply. Você pode usar arguments para passar todos os argumentos para o objeto da chamada. O objeto chamado fica então responsável por manipular os argumentos.

+ +

Desde a 5a versão do ECMAScript você pode utilizar qualquer tipo de objeto que é parecido com um array (array-like), então na prática isso significa que ele vai ter uma propriedade length e propriedades inteiras no intervalor (0... length). Como um exemplo, você pode agora usar um {{domxref("NodeList")}} ou um objeto personalizado como { 'length': 2, '0': 'comer', '1': 'bananas' }.

+ +

{{note("Muitos navegadores, incluindo o Chrome 14 e o Internet Explorer 9, ainda não aceitam objetos parecidos com array e irão lançar uma exceção.")}}.

+ +

Exemplos

+ +

Usando apply para cadeia de construtores

+ +

Você pode usar apply para encadear {{jsxref("Operators/new", "construtores", "", 1)}} em um objeto, similar ao Java. No exemplo seguinte nós iremos criar um método de {{jsxref("Global_Objects/Function", "Função")}} global chamado construct, que fará você capaz de usar um objeto parecido com um array com um construtor ao invés de uma lista de argumentos

+ +
Function.prototype.construct = function (aArgs) {
+  var oNew = Object.create(this.prototype);
+  this.apply(oNew, aArgs);
+  return oNew;
+};
+
+ +
+

Note: O método Object.create()  usado acima é relativamente novo. Para um método alternativo utilizando closures, por favor considere a seguinte alternativa.

+ +
Function.prototype.construct = function(aArgs) {
+  var fConstructor = this, fNewConstr = function() { fConstructor.apply(this, aArgs); };
+  fNewConstr.prototype = fConstructor.prototype;
+  return new fNewConstr();
+};
+
+ +

Exemplo de uso:

+ +
function MyConstructor() {
+  for (var nProp = 0; nProp < arguments.length; nProp++) {
+    this['property' + nProp] = arguments[nProp];
+  }
+}
+
+var myArray = [4, 'Hello world!', false];
+var myInstance = MyConstructor.construct(myArray);
+
+console.log(myInstance.property1);                // logs 'Hello world!'
+console.log(myInstance instanceof MyConstructor); // logs 'true'
+console.log(myInstance.constructor);              // logs 'MyConstructor'
+
+ +
+

Nota:  Este método não nativo Function.construct não irá funcionar com alguns construtores nativos (como {{jsxref("Date")}}, por exemplo). Nestes casos você tem que usar o método {{jsxref("Function.prototype.bind")}} (por exemplo, imagine ter um array como o seguinte, para ser usado com o construtor {{jsxref("Global_Objects/Date", "Date")}}: [2012, 11, 4]; Neste caso você tem que escrever algom como: new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))() - de qualquer maneira essa não é a melhor forma de fazer as coisas e provavelmente não deve ser utilizado em qualquer ambiente de produção

+
+ +

Usando apply e funções embutidas

+ +

A forma inteligente com que apply é utilizado permite à você usar funções nativas que de outra forma provavelmente teriam que ser escritas iterando sobre um array de valores. Aqui, como exemplo, iremos utilizar Math.max/Math.min para achar o valor máximo/mínimo value em um array.

+ +
/* número min/max em um array */
+var numbers = [5, 6, 2, 3, 7];
+
+/* utilizando Math.min/Math.max apply */
+var max = Math.max.apply(null, numbers); /* Isso está prestes a ser igual a Math.max(numbers[0], ...)
+                                            ou Math.max(5, 6, ...) */
+var min = Math.min.apply(null, numbers);
+
+/* vs. algoritmo simples baseado em loop */
+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];
+  }
+}
+
+ +

Mas tome cuidado: ao utilizar o apply desta forma, você corre o risco de exceder o limite de argumentos do JavaScript. As consequências de fazer applying em uma função com muitos argumentos (pense em algo como dezenas de centenas de argumentos) varia de acordo com os engines (JavaScriptCore tem um limite de argumentos de 65536 hard-coded), visto que o limite (na verdade, até mesmo a natureza de qualquer comportamento de um stack excessivamente grande) não é especificado. Algumas engines irão jogar uma excessão. De uma forma mais incisiva, outras engines irão limitar de forma arbitrária o número de argumentos que poderção ser aplicados à função. (Para ilustrar esse último caso: se uma engine dessas tem um limite de quatro argumentos [obviamente, os limites atuais são significativamente maiores], isso seria como se os argumentos 5, 6, 2, 3 do exemplo anterior fossem passados ao apply, ao invés do array completo.) Se o valor do seu array puder crescer à casa das dezenas de centenas, use uma estratégia híbrida: aplique suas funções em cada bloco de array por vez:

+ +
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]);
+
+ +

Usando apply em "monkey-patching"

+ +

Apply pode ser a melhor forma de monkey-patch uma função nativa do Firefox, ou de bibliotecas em JS. Dada uma função someobject.foo, você poderá modificar a função de uma maneira hackeresca, como por exemplo:

+ +
var originalfoo = someobject.foo;
+someobject.foo = function() {
+  // Faça coisas antes de chamar a função
+  console.log(arguments);
+  // Chama a função como se ela estivesse sido chamada normalmente:
+  originalfoo.apply(this, arguments);
+  // Rode as coisas que vem depois, aqui.
+}
+
+ +

Esse método é especialmente útil quando você quer fazer debug de eventos, ou interagir com algo que não tem nenhuma API como os diversos eventos .on([event]... events, por exemplo aqueles utilizáveis no Devtools Inspector).

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 3º Edição.PadrãoDefinição inicial, implementado no 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')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 objetos genéricos parecidos com array como  {{jsxref("Functions_and_function_scope/arguments", "arguments")}}{{CompatUnknown}}{{CompatGeckoDesktop("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
ES 5.1 objetos genéricos parecidos com array como  {{jsxref("Functions_and_function_scope/arguments", "arguments")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile("2.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/arguments/index.html b/files/pt-br/web/javascript/reference/global_objects/function/arguments/index.html new file mode 100644 index 0000000000..6fac474a16 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/arguments/index.html @@ -0,0 +1,130 @@ +--- +title: Function.arguments +slug: Web/JavaScript/Reference/Global_Objects/Function/arguments +translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments +--- +
{{JSRef}} {{deprecated_header}}
+ +

A propriedade function.arguments diz respeito a um objeto tipo array (array-like object) correspondente aos argumentos passados para uma função. Use somente a variável {{jsxref("Functions/arguments", "arguments")}} em vez disso.

+ +

Descrição

+ +

A sintaxe function.arguments está obsoleta. A forma recomendada de acessar o objeto  {{jsxref("Functions/arguments", "arguments")}} disponível dentro das funções, é simplesmente referenciar a variável {{jsxref("Functions/arguments", "arguments")}}.

+ +

No caso de recursão, ou seja, uma função f aparecer várias vezes na pilha de chamadas, o valor de f.arguments representa os argumentos correspondentes a invocação mais recente da função.

+ +

O valor da propriedade arguments é normalmente nulo (null) se não houver nenhuma invocação pendente da função em andamento (ou seja, a função foi chamada mas ainda não retornou).

+ +

Exemplos

+ +
function f(n) { g(n - 1); }
+
+function g(n) {
+  console.log('before: ' + g.arguments[0]);
+  if (n > 0) { f(n); }
+  console.log('after: ' + g.arguments[0]);
+}
+
+f(2);
+
+console.log('returned: ' + g.arguments);
+
+// Output
+
+// before: 1
+// before: 0
+// after: 0
+// after: 1
+// returned: null
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definiçao inicial. Implementado em JavaScript 1.0. Obsoleto em favor de {{jsxref("Functions/arguments", "arguments")}} em ES3.
{{SpecName('ES5.1', '#sec-10.6', 'arguments object')}}{{Spec2('ES5.1')}}{{jsxref("Functions/arguments", "arguments")}} object
{{SpecName('ES6', '#sec-arguments-object', 'arguments object')}}{{Spec2('ES6')}}{{jsxref("Functions/arguments", "arguments")}} object
{{SpecName('ESDraft', '#sec-arguments-object', 'arguments object')}}{{Spec2('ESDraft')}}{{jsxref("Functions/arguments", "arguments")}} object
+ +

Compatibilidade com navegadores

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html b/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html new file mode 100644 index 0000000000..93e4fb75b5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/arity/index.html @@ -0,0 +1,78 @@ +--- +title: Function.arity +slug: Web/JavaScript/Reference/Global_Objects/Function/arity +tags: + - Função + - JavaScript + - Não implementado + - Obsoleto + - Propriedade +translation_of: Archive/Web/JavaScript/Function.arity +--- +
{{JSRef("Global_Objects", "Function")}} {{obsolete_header}}
+ +

Resumo

+ +

A propriedade arity é usada para retornar o número de argumentos esperados por uma função, entretanto, ela não existe mais e foi substituida pela propriedade {{jsxref("Function.prototype.length")}}.

+ +

Especificações

+ +

Implementada no JavaScript 1.2. Depreciada no JavaScript 1.4.

+ +

Compatibilidade com navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/bind/index.html b/files/pt-br/web/javascript/reference/global_objects/function/bind/index.html new file mode 100644 index 0000000000..10f3ea1b8c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/bind/index.html @@ -0,0 +1,309 @@ +--- +title: Function.prototype.bind() +slug: Web/JavaScript/Reference/Global_Objects/Function/bind +translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind +--- +
{{JSRef}}
+ +

O método bind() cria uma nova função que, quando chamada, tem sua palavra-chave this definida com o valor fornecido, com uma sequência determinada de argumentos precedendo quaisquer outros que sejam fornecidos quando a nova função é chamada.

+ +

{{EmbedInteractiveExample("pages/js/function-bind.html", "taller")}}

+ +

Sintaxe

+ +
function.bind(thisArg[, arg1[, arg2[, ...]]])
+ +

Parâmetros

+ +
+
thisArg
+
O valor a ser passado como parâmetro this para a função de destino quando a função vinculada é chamada. O valor é ignorado se a função ligada é construída usando o operador {{jsxref("Operators/new", "new")}}.
+
arg1, arg2, ...
+
Argumentos que precedem outros argumentos fornecidos para a função vinculada ao invocar a função de destino.
+
+ +

Valor de retorno

+ +

Uma cópia da função fornecida com o valor this especificado e argumentos iniciais.

+ +

Descrição

+ +

A função bind() cria uma nova função vinculada (bound function). Uma função vinculada é um objeto de função exótico (termo da ECMAScript 2015) que encapsula o objeto de função original. Chamar uma função vinculada geralmente resulta na execução de sua função encapsulada.

+ +

Uma função vinculada tem as seguintes propriedades internas:

+ + + +

Quando a função vinculada é chamada, ela chama seu método interno [[Call]] na [[BoundTargetFunction]], na forma Call(boundThis, args), onde boundThis é [[BoundThis]] e args é [[BoundArguments]] seguido pelos argumentos passados pela chamada de função.

+ +

Uma função vinculada também pode ser construída usando-se o operador {{jsxref("Operators/new", "new")}}; ao fazê-lo, o resultado é o mesmo que seria se a função alvo tivesse sido construída. O valor de this fornecido é ignorado, porém os argumentos precedentes são fornecidos à função emulada.

+ +

Exemplos

+ +

Criando uma função vinculada

+ +

O uso mais simples de bind() é fazer com que uma função que, independentemente da chamada, é chamada com um determinado valor this. Um erro comum para programadores JavaScript novatos é extrair um método de um objeto e, em seguida, chamar essa função e esperar que ele use o objeto original como o seu this (por exemplo, usando esse método num código baseado em callback). Sem a devida atenção, no entanto, o objeto original é normalmente perdido. Criar uma função vinculada a partir da função, usando o objeto original, resolve perfeitamente esse problema:

+ +
this.x = 9; //this aqui se refere ao objeto global "window" do navegador
+var module = {
+  x: 81,
+  getX: function() { return this.x; }
+};
+
+module.getX(); // 81
+
+var retrieveX = module.getX;
+retrieveX();
+// retorna 9 - a função foi invocada no escopo global
+
+// Criando uma nova função com 'this' vinculada ao módulo
+// Programadores novatos podem confundir a variável x
+// global com a propriedade x do módulo
+var boundGetX = retrieveX.bind(module);
+boundGetX(); // 81
+
+ +

Funções parcialmente aplicadas

+ +

O próximo uso mais simples de bind() é criar uma função com argumentos iniciais pré-especificados. Esses argumentos (caso existam) acompanham o valor this fornecido e então são inseridos no início dos argumentos passados para a função alvo, seguidos pelos argumentos passados para a função vinculada, sempre que a função vinculada é chamada.

+ +
function list() {
+  return Array.prototype.slice.call(arguments);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+// Cria uma função com um argumento principal predefinido
+var leadingThirtysevenList = list.bind(null, 37);
+
+var list2 = leadingThirtysevenList();
+// [37]
+
+var list3 = leadingThirtysevenList(1, 2, 3);
+// [37, 1, 2, 3]
+
+ +

Com setTimeout

+ +

Por padrão, dentro de {{domxref("window.setTimeout()")}} a palavra-chave this vai ser definida com o objeto {{ domxref("window") }} (ou com o objeto global). Ao trabalhar com métodos de classes que requerem que this se refira à instâncias de classes, você pode vincular this explicitamente à função de callback, de modo a manter a instância.

+ +
function LateBloomer() {
+  this.petalCount = Math.ceil(Math.random() * 12) + 1;
+}
+
+// Declarar bloom depois de um intervalo de 1 segundo
+LateBloomer.prototype.bloom = function() {
+  window.setTimeout(this.declare.bind(this), 1000);
+};
+
+LateBloomer.prototype.declare = function() {
+  console.log('I am a beautiful flower with ' +
+    this.petalCount + ' petals!');
+};
+
+var flower = new LateBloomer();
+flower.bloom();
+// depois de 1 segundo, ativa o método 'declare'
+ +

Funções vinculadas usadas como construtores

+ +
+

Aviso: Esta seção demonstra capacidades do JavaScript e documenta alguns casos de borda do método bind(). Os métodos mostrados abaixo não são os melhores jeitos de se fazer as coisas e provavelmente não deveriam ser usados em nenhum ambiente produtivo.

+
+ +

Funções vinculadas são automaticamente adequadas para uso com o operador {{jsxref("Operators/new", "new")}} para construir novas instâncias criadas pela função alvo. Quando uma função vinculada é usada para construir um valor, o this fornecido é ignorado. Porém, argumentos fornecidos ainda são prefixados à chamada do construtor:

+ +
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'
+
+// não suportado no polyfill abaixo,
+// funciona bem com o bind nativo:
+
+var YAxisPoint = Point.bind(null, 0/*x*/);
+
+var emptyObj = {};
+var YAxisPoint = Point.bind(emptyObj, 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
+
+ +

Note que você não precisa fazer nada de especial para criar uma função vinculada para usar com {{jsxref("Operators/new", "new")}}. O corolário é que você não precisa fazer nada de especial para criar uma função vinculada que será chamada de forma clara, mesmo que você preferisse que a função vinculada fosse somente chamada usando-se {{jsxref("Operators/new", "new")}}.

+ +
// Exemplo pode ser executado diretamente no seu console JavaScript
+// ...continuando o exemplo acima
+
+// Ainda pode ser chamada como uma função normal
+// (apesar de que isso geralmente não é desejado)
+YAxisPoint(13);
+
+emptyObj.x + ',' + emptyObj.y;
+// >  '0,13'
+
+ +

Se você quer suportar o uso de uma função vinculada somente através de {{jsxref("Operators/new", "new")}}, ou somente a chamando, a função alvo deve impor essa restrição.

+ +

Criando atalhos

+ +

bind() itambém é útil em casos onde você quer criar um atalho para uma função que requer um valor específico de this.

+ +

Tome por exemplo {{jsxref("Array.prototype.slice")}}, que você quer usar para converter um objeto array-like em um vetor verdadeiro. Você poderia criar um atalho assim:

+ +
var slice = Array.prototype.slice;
+
+// ...
+
+slice.apply(arguments);
+
+ +

Com bind(), isso pode ser simplificado. No seguinte trecho de código, slice é uma função vinculada à função {{jsxref("Function.prototype.apply()", "apply()")}} de {{jsxref("Function.prototype")}}, com o valor this definido com a função {{jsxref("Array.prototype.slice()", "slice()")}} de {{jsxref("Array.prototype")}}. Isso significa que chamadas adicionais de apply() podem ser eliminadas:

+ +
// mesmo que "slice" no exemplo anterior
+var unboundSlice = Array.prototype.slice;
+var slice = Function.prototype.apply.bind(unboundSlice);
+
+// ...
+
+slice(arguments);
+
+ +

Polyfill

+ +

A função bind é uma adição à ECMA-262, 5ª. edição; como tal, pode não estar presente em todos os navegadores. Você pode contornar isso parcialmente inserindo o seguinte código no começo de seus scripts, permitindo o uso de muita parte da funcionalidade de bind() em implementações que não a suportam nativamente.

+ +
if (!Function.prototype.bind) {
+  Function.prototype.bind = function(oThis) {
+    if (typeof this !== 'function') {
+      // mais próximo possível da função interna
+      // IsCallable da 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
+                 ? this
+                 : oThis,
+                 aArgs.concat(Array.prototype.slice.call(arguments)));
+        };
+
+    fNOP.prototype = this.prototype;
+    fBound.prototype = new fNOP();
+
+    return fBound;
+  };
+}
+
+ +

Algumas das muitas diferenças (é bem possível que haja outras, já que esta lista não pretende seriamente ser completa) entre este algoritmo e o algoritmo especificado são:

+ + + +

Se você escolher utilizar esta implementação parcial, você não deve confiar em casos onde o comportamento é diferente da ECMA-262, 5ª. edição! Porém, com algum cuidado (e talvez com modificação adicional para atender necessidades específicas), esta implementação parcial pode ser uma ponte razoável para quando bind() for amplamente implementada de acordo com a especificação.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-function.prototype.bind', 'Function.prototype.bind')}}{{Spec2('ES6')}}
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("7")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatAndroid("4.0")}}{{CompatChrome("1")}}{{CompatGeckoMobile("2")}}{{CompatUnknown}}{{CompatOperaMobile("11.5")}}{{CompatSafari("6.0")}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/call/index.html b/files/pt-br/web/javascript/reference/global_objects/function/call/index.html new file mode 100644 index 0000000000..a0356bf585 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/call/index.html @@ -0,0 +1,194 @@ +--- +title: Function.prototype.call() +slug: Web/JavaScript/Reference/Global_Objects/Function/call +tags: + - Função + - JavaScript + - Método(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Function/call +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Introdução

+ +

O método call() invoca uma função com um dado valor this  e argumentos passados individualmente.

+ +
+

Nota: Apesar de a sintaxe desta função ser quase idêntica à de {{jsxref("Function.prototype.apply", "apply()")}}, a principal diferença é que call() aceita uma lista de argumentos, enquanto apply() aceita um único array de argumentos.

+
+ +

Sintaxe

+ +
fun.call(thisArg[, arg1[, arg2[, ...]]])
+ +

Parâmetros

+ +
+
thisArg
+
O valor de  this  proveu a chamada para fun. Note que this pode não ser o valor atual visto pelo método: se esse método é uma função em {{jsxref("Functions_and_function_scope/Strict_mode", "non-strict mode", "", 1)}} code, {{jsxref("Global_Objects/null", "null")}} e {{jsxref("Global_Objects/undefined", "undefined")}} serão reescritos com o objeto global, e valores primitivos serão encaixados.
+
arg1, arg2, ...
+
Argumentos para  o objeto.
+
+ +

Descrição

+ +

Você pode atribuir um objeto this diferente quando executar uma função existente. this refere-se ao objeto atual, o objeto em execução. Com call, você pode escrever um método uma vez e então herdá-lo em outro objeto, sem ter que reescrever o método para o novo objeto.

+ +

Exemplos

+ +

Exemplo: Usando call para encadear construtores para um objeto

+ +

Você pode usar call para encadear construtores para um objeto, similar ao  Java. No seguinte exemplo, o construtor do  objeto Product é definido com dois parâmetros, name e price. Outras duas funções Food e Toy executam Product passando this, name e price. O Produto inicializa as propriedades name e price,  ambos definem o category.

+ +
function Product(name, price) {
+  this.name = name;
+  this.price = price;
+
+  if (price < 0) {
+    throw RangeError('Cannot create product ' +
+                      this.name + ' with a negative price');
+  }
+
+  return this;
+}
+
+function Food(name, price) {
+  Product.call(this, name, price);
+  this.category = 'food';
+}
+
+Food.prototype = Object.create(Product.prototype);
+
+function Toy(name, price) {
+  Product.call(this, name, price);
+  this.category = 'toy';
+}
+
+Toy.prototype = Object.create(Product.prototype);
+
+var cheese = new Food('feta', 5);
+var fun = new Toy('robot', 40);
+
+ +

Exemplo: Usando o call para chamar funções anônimas

+ +

Neste exemplo, criamos uma função anônima que usa o call para executá-lo em todos os objetos em um array(vetor). O principal propósito da função anônima aqui é adicionar uma função print para todo o objeto, que está disponível para imprimir o índice correto do objeto no array. Não foi necessário passar o valor do objeto como this , mas isso foi feito apenas para explicação.

+ +
var animais = [
+  { especie: 'Lion', nome: 'King' },
+  { especie: 'Whale', nome: 'Fail' }
+];
+
+for (var i = 0; i < animais.length; i++) {
+  (function(i) {
+    this.print = function() {
+      console.log('#' + i + ' ' + this.especie
+                  + ': ' + this.nome);
+    }
+    this.print();
+  }).call(animais[i], i);
+}
+
+ +

Usando call para chamar a função e especificar o contexto de 'this'

+ +

No exemplo abaixo, quando vamos chamar a apresentação, o valor de this será associado ao objeto i.
+  

+ +
function apresentacao() {
+  var resposta = [this.pessoa, 'é um excelente', this.funcao].join(' ');
+  console.log(resposta);
+}
+
+var i = {
+  pessoa: 'Douglas Crockford', funcao: 'Desenvolvedor Javascript'
+};
+
+apresentacao.call(i); // Douglas Crockford é um excelente Desenvolvedor Javascript
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/caller/index.html b/files/pt-br/web/javascript/reference/global_objects/function/caller/index.html new file mode 100644 index 0000000000..c380d89d7f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/caller/index.html @@ -0,0 +1,129 @@ +--- +title: Function.caller +slug: Web/JavaScript/Reference/Global_Objects/Function/caller +tags: + - Função + - JavaScript + - Non-standard + - Propriedades +translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller +--- +
{{JSRef}} {{non-standard_header}}
+ +

A propriedade function.caller retorna a função que invocou a função especificada.

+ +

Descrição

+ +

Se a função f foi invocada pelo codigo mais alto nível, o valor de f.caller é {{jsxref("null")}}, caso contrario, o valor será a função a qual invocou f.

+ +

Esta propriedade substitui a propriedade obsoleta {{jsxref("Functions/arguments/caller", "arguments.caller")}} do objeto {{jsxref("Functions/arguments", "arguments")}}.

+ +

A propriedade especial __caller__, a qual retornou o objeto de ativação do chamador, permitindo assin reconstruir o stack, foi removido por motivo de segurança.

+ +

Notas

+ +

Note que no caso de recurção, você não pode reconstruir o stack de chamadas usando esta propriedade. Considere:

+ +
function f(n) { g(n - 1); }
+function g(n) { if (n > 0) { f(n); } else { stop(); } }
+f(2);
+
+ +

No momento em que stop() é chamado o stack será:

+ +
f(2) -> g(1) -> f(1) -> g(0) -> stop()
+
+ +

O seguinte é true:

+ +
stop.caller === g && f.caller === g && g.caller === f
+
+ +

então se você tentou recuperar o stack trace na função stop() assim:

+ +
var f = stop;
+var stack = 'Stack trace:';
+while (f) {
+  stack += '\n' + f.name;
+  f = f.caller;
+}
+
+ +

o loop nunca irá parar.

+ +

Exemplos

+ +

Verificando o valor da propriedade caller de uma função

+ +

O código a seguir verifica o valor da propriedade caller de uma função.

+ +
function myFunc() {
+  if (myFunc.caller == null) {
+    return 'The function was called from the top!';
+  } else {
+    return 'This function\'s caller was ' + myFunc.caller;
+  }
+}
+
+ +

Especificações

+ +

Não faz parte de nenhuma especificação. Implementado no JavaScript 1.5.

+ +

Compatibilidade com os navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}8.0{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/displayname/index.html b/files/pt-br/web/javascript/reference/global_objects/function/displayname/index.html new file mode 100644 index 0000000000..5cf33d8080 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/displayname/index.html @@ -0,0 +1,80 @@ +--- +title: Function.displayName +slug: Web/JavaScript/Reference/Global_Objects/Function/displayName +tags: + - Função + - JavaScript + - Non Standard + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName +--- +
{{JSRef}} {{non-standard_header}}
+ +

A propriedade function.displayName retorna o nome de exibição da função.

+ +

Descrição

+ +

Quando definida, a propriedade displayName retorna o nome de exibição da função.

+ +
function doSomething() {}
+
+console.log(doSomething.displayName); // "undefined"
+
+var popup = function(content) { console.log(content); };
+
+popup.displayName = 'Show Popup';
+
+console.log(popup.displayName); // "Show Popup"
+
+ +

Você pode definir uma função com uma nome de exibição em um {{jsxref("Functions", "function expression", "", 1)}}:

+ +
var object = {
+  someMethod: function() {}
+};
+
+object.someMethod.displayName = 'someMethod';
+
+console.log(object.someMethod.displayName); // logs "someMethod"
+
+try { someMethod } catch(e) { console.log(e); }
+// ReferenceError: someMethod is not defined
+
+ +

Você pode mudar dinamicamente odisplayName de uma função:

+ +
var object = {
+  // anonymous
+  someMethod: function(value) {
+    arguments.callee.displayName = 'someMethod (' + value + ')';
+  }
+};
+
+console.log(object.someMethod.displayName); // "undefined"
+
+object.someMethod('123')
+console.log(object.someMethod.displayName); // "someMethod (123)"
+
+ +

Exemplos

+ +

Geralmente, é preferida por consoles e perfis em vez de  {{jsxref("Function.name", "func.name")}} mostrar o nome de uma função.

+ +

Entrando com o seguinte em um console, isso deverá mostrar algo como  "function My Function()":

+ +
var a = function() {};
+a.displayName = 'My Function';
+
+a; // "function My Function()"
+ +

Especificações

+ +

Não faz parte de denhuma especificação.

+ +

Compatibilidade de Navegadores

+ +
+ + +

{{Compat("javascript.builtins.Function.displayName")}}

+
diff --git a/files/pt-br/web/javascript/reference/global_objects/function/index.html b/files/pt-br/web/javascript/reference/global_objects/function/index.html new file mode 100644 index 0000000000..fa6e32e2b1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/index.html @@ -0,0 +1,234 @@ +--- +title: Function +slug: Web/JavaScript/Reference/Global_Objects/Function +tags: + - Constructor + - Function + - JavaScript + - NeedsTranslation + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +
{{JSRef("Global_Objects", "Function")}}
+ +

Resumo

+ +

O construtor Function cria um novo objeto Function. Chamar o construtor diretamente pode criar funções dinamicamente, mas sofre com problemas de segurança e desempenho semelhante (mas muito menos significativo) a {{jsxref("eval")}}. No entanto, diferentemente de eval, a Função construtora cria funções que executam somente no escopo global.

+ +

Sintaxe

+ +
new Function ([arg1[, arg2[, ...argN]],] functionBody)
+ +

Parâmetros

+ +
+
arg1, arg2, ... argN
+
Nomes para serem usandos pela função como nomes formais de argumentos. Cada um deve ser uma string que corresponde para uma válida identidade JavaScript ou uma lista de certas strings separadas com uma vírgula; por exemplo "x", "theValue". our "a,b".
+
functionBody
+
Uma string que contém as instruções JavaScript que compõem a definição da função.
+
+ +

Descrição

+ +

Objetos Function criados com o construtor Function são parseados quando a função é criada. Isto é menos eficiente que criar com uma expressão de função ou um declaração de função e chamando-a dentro do seu código, porque tais funções são parseadas com o resto do código.

+ +

Todos os argumentos passados para a função são tratados como os nomes dos indetificadores dos parâmetros na função a ser criada, na mesma ordem na qual eles foram passados.

+ +
+

Nota: Funções criadas com o construtor Function não criam closures para o seu contexto de criação; elas sempre são criadas no escopo global. Quando executadas, elas terão acesso apenas às suas variáveis locais ou globais, não terão acesso às variáveis do escopo na qual o construtor Function foi chamado. Isto é diferente de usar {{jsxref("Global_Objects/eval", "eval")}} com o código de uma expressão de função.

+
+ +

Invocar o construtor Function como uma função (sem usar o operador new) tem o mesmo efeito de chamá-la como um construtor.

+ +

Propriedades e Métodos da Function

+ +

O objeto global Function não tem métodos ou propriedades próprias, no entanto, como ela é uma função, ela herda alguns métodos e propriedades através do prototype chain do {{jsxref("Function.prototype")}}.

+ +

Function prototype object

+ +

Propriedades

+ +
{{page('/en-US/docs/JavaScript/Reference/Global_Objects/Function/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/JavaScript/Reference/Global_Objects/Function/prototype', 'Methods')}}
+ +

Function instances

+ +

Function instances inherit methods and properties from {{jsxref("Function.prototype")}}. As with all constructors, you can change the constructor's prototype object to make changes to all Function instances.

+ +

Exemplos:

+ +

Exemplos: Especificando argumentos com o construtor Function

+ +

O código a seguir cria um objeto Function que recebe dois argumentos.

+ +
// O exemplo pode ser executado direto no seu console JavaScript
+
+// Cria uma função que recebe 2 argumentos e retorna a soma entre os dois:
+var adder = new Function('a', 'b', 'return a + b');
+
+// Chamada da função
+adder(2, 6);
+// > 8
+
+ +

Os argumentos "a" e "b" são os argumentos que serão usados no corpo da função, "return a + b".

+ +

Exemplo: Um atalho recursivo para modificar o DOM em massa

+ +

Creating functions with the Function constructor is one of the ways to dynamically create an indeterminate number of new objects with some executable code into the global scope from a function. The following example (a recursive shortcut to massively modify the DOM) is impossible without the invocation of the Function constructor for each new query if you want to avoid closures.

+ +
<!doctype html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>MDN Example - a recursive shortcut to massively modify the 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>Some text</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>
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardDefinição inicial. Implementado no JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.3', 'Function')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function-objects', 'Function')}}{{Spec2('ES6')}}
+ +

Compatibilidade

+ +
{{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/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html new file mode 100644 index 0000000000..b370305940 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/isgenerator/index.html @@ -0,0 +1,55 @@ +--- +title: Function.prototype.isGenerator() +slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator +tags: + - Função + - Não padronizados + - Obsoleto + - metodo +translation_of: Archive/Web/JavaScript/Function.isGenerator +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método não padronizado isGenerator() é usado para determinar se uma função é ou não um gerador. Ele foi removido do Firefox a partir da versão 58.

+ +

Sintaxe

+ +
fun.isGenerator()
+ +

Valor de retorno

+ +

Um {{jsxref("Boolean")}} que indica se dada função é ou nao um gerador.

+ +

Descrição

+ +

O método isGenerator() determina se uma função fun é ou não um gerador. Fez parte de uma Proposta Inicial de Harmonia, mas não foi incluído na especificação do ECMAScript 2015.

+ +

Exemplos

+ +
function f() {}
+
+function* g() {
+  yield 42;
+}
+
+console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false
+console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true
+
+ +

Specificações

+ +

Não faz parte de nenhuma especificação. Implementado no JavaScript 1.8.6.

+ +

Compatibilidade do Navegador

+ +
+ + +

{{Compat("javascript.builtins.Function.isGenerator")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/length/index.html b/files/pt-br/web/javascript/reference/global_objects/function/length/index.html new file mode 100644 index 0000000000..a116f07892 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/length/index.html @@ -0,0 +1,134 @@ +--- +title: Function.length +slug: Web/JavaScript/Reference/Global_Objects/Function/length +translation_of: Web/JavaScript/Reference/Global_Objects/Function/length +--- +
{{JSRef}}
+ +

A propriedade length especifica o número de argumentos esperados pela função.

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

Descrição

+ +

length é uma propriedade de um objeto função, e indica quantos argumentos a função espera, i.e. o número de parametros formais. Este número não incluí o {{jsxref("rest_parameters", "rest parameter", "", 1)}}. Por contraste, {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} é local para a função e fornece o número de argumentos que foram realmente passados.

+ +

Propriedade de Dados do construtor Function

+ +

O construtor {{jsxref("Function")}} é propriamente um objeto {{jsxref("Function")}}. A proproedade de dados do seu length tem o valor de 1. Os atributos da propriedade são: Escrita: false, Enumerável: false, Configurável: true.

+ +

Propriedades do objeto prototype de Function

+ +

A propriedade length do objeto prototype {{jsxref("Function")}} tem o valor de 0.

+ +

Exemplos

+ +
console.log(Function.length); /* 1 */
+
+console.log((function()        {}).length); /* 0 */
+console.log((function(a)       {}).length); /* 1 */
+console.log((function(a, b)    {}).length); /* 2 etc. */
+console.log((function(...args) {}).length); /* 0, rest parameter is not counted */
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}{{Spec2('ES6')}}The configurable attribute of this property is now true.
+ +

Compatibilidade com o Navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatGeckoDesktop(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Configurable: true{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(37)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja tambem

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/name/index.html b/files/pt-br/web/javascript/reference/global_objects/function/name/index.html new file mode 100644 index 0000000000..2ee74e0779 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/name/index.html @@ -0,0 +1,222 @@ +--- +title: Function.name +slug: Web/JavaScript/Reference/Global_Objects/Function/name +translation_of: Web/JavaScript/Reference/Global_Objects/Function/name +--- +
{{JSRef}}
+ +

A propriedade somente-leitura name de um objeto {{jsxref("Function")}} indica o nome da função como especificado quando esta foi criada, ou "anonymous" para funções criadas anonimamente.

+ +
{{EmbedInteractiveExample("pages/js/function-name.html")}}
+ + + +
{{js_property_attributes(0,0,1)}}
+ +
+

Note que em implementações não-standard anteriores à ES2015 o atributo configurable tinha também o valor false.

+
+ +

Exemplos

+ +

Nome de declaração da função

+ +

A propriedade name retorna o nome de uma declaração de função.

+ +
function doSomething() {}
+doSomething.name; // "doSomething"
+
+ +

Nome do construtor da função

+ +

Funções criadas com a sintaxe new Function(...) ou somente Function(...) criam objetos {{jsxref("Function")}} com o nome "anonymous".

+ +
(new Function).name; // "anonymous"
+ +

Nomes de função inferidos

+ +

Variáveis e métodos podem inferir o nome de uma função anônima a partir de sua posição sintática (novo na ECMAScript 2015).

+ +
var f = function() {};
+var object = {
+  someMethod: function() {}
+};
+
+console.log(f.name); // "f"
+console.log(object.someMethod.name); // "someMethod"
+
+ +

Você pode definir uma função com um nome numa {{jsxref("Operators/Function", "expressão de função", "", 1)}}:

+ +
var object = {
+  someMethod: function object_someMethod() {}
+};
+console.log(object.someMethod.name); // grava o log "object_someMethod"
+
+try { object_someMethod } catch(e) { console.log(e); }
+// ReferenceError: object_someMethod is not defined
+
+ +

Você não pode mudar o nome de uma função, pois a propriedade é somente-leitura:

+ + + +
var object = {
+  // anonymous
+  someMethod: function() {}
+};
+
+object.someMethod.name = 'otherMethod';
+console.log(object.someMethod.name); // someMethod
+
+ +

Para mudá-lo, você poderia no entanto usar {{jsxref("Object.defineProperty()")}}.

+ +

Nomes curtos de métodos

+ +
var o = {
+  foo(){}
+};
+o.foo.name; // "foo";
+ +

Nomes de funções vinculadas

+ +

{{jsxref("Function.bind()")}} produz uma função cujo nome é "bound " seguido do nome da função.

+ +
function foo() {};
+foo.bind({}).name; // "bound foo"
+
+ +

Nomes de função para getters e setters

+ +

Ao usar propriedades acessórias get e set, "get" ou "set" aparecerão no nome da função.

+ +
var o = {
+  get foo(){},
+  set foo(x){}
+};
+
+var descriptor = Object.getOwnPropertyDescriptor(o, "foo");
+descriptor.get.name; // "get foo"
+descriptor.set.name; // "set foo";
+ +

Nomes de funções em classes

+ +

Você pode usar obj.constructor.name para checar a "classe" de um objeto (porém leia com atenção os avisos abaixo):

+ +
function Foo() {}  // Sintaxe ES2015: class Foo {}
+
+var fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // grava o log "Foo"
+
+ +
+

Aviso: O interpretador vai definir a propriedade  interna Function.name somente se uma função não tiver uma propriedade já com o nome name (veja a seção 9.2.11 da ECMAScript2015 Language Specification). Porém, a ES2015 especifica que a palavra-chave static de maneira que métodos estáticos serão definidos como OwnProperty da função construtora de classe (ECMAScript2015, 14.5.14.21.b + 12.2.6.9).

+
+ +

Portanto não podemos obter o nome de virtualmente qualquer classe com um método estático name():

+ +
class Foo {
+  constructor() {}
+  static name() {}
+}
+
+ +

Com um método static name(), Foo.name não guarda mais o nome verdadeiro da classe mas uma referência ao objeto de função name(). A definição de classe acima, escrita em sintaxe ES2015, se comportará de maneira similar ao seguinte trecho de código em sintaxe ES5 no Chrome ou no Firefox:

+ +
function Foo() {}
+Object.defineProperty(Foo, 'name', { writable: true });
+Foo.name = function() {};
+
+ +

Tentar obter a classe de fooInstance via fooInstance.constructor.name não nos dará de maneira alguma o nome da classe, mas sim uma referência ao método estático da classe. Exemplo:

+ +
var fooInstance = new Foo();
+console.log(fooInstance.constructor.name); // grava o name() da função no log
+
+ +

Você pode ver também, a partir do exemplo de sintaxe ES5, que, no Chrome ou no Firefox, a nossa definição estática de Foo.name se torna writable. A predefinição interna na ausência de uma definição estática customizada é somente-leitura:

+ +
Foo.name = 'Hello';
+console.log(Foo.name); // logs "Hello" if class Foo has a static name() property but "Foo" if not.
+
+ +

Portanto, você não pode assumir que a propriedade interna Function.name sempre guardará um nome de classe..

+ +

Símbolos como nome de função

+ +

Se um {{jsxref("Symbol")}} é usado como nome de função e o símbolo tem uma descrição, o nome do método será a descrição entre colchetes.

+ +
var sym1 = Symbol("foo");
+var sym2 = Symbol();
+var o = {
+  [sym1]: function(){},
+  [sym2]: function(){}
+};
+
+o[sym1].name; // "[foo]"
+o[sym2].name; // ""
+ +

Compressores e minificadores JavaScript

+ +
+

Aviso: Tenha cuidado ao usar Function.name e transformações de código-fonte, como aquelas executadas por compressores (minificadores) ou obfuscadores de JavaScript. Estas ferramentas são comumente usadas como parte de processos de build  de JavaScript para reduzir os tamanhos de programas antes da implementação em produção. Tais transformações frequentemente mudam nomes de função durante o build.

+
+ +

Código fonte do tipo:

+ +
function Foo() {};
+var foo = new Foo();
+
+if (foo.constructor.name === 'Foo') {
+  console.log("'foo' is an instance of 'Foo'");
+} else {
+  console.log('Oops!');
+}
+
+ +

pode ser comprimido e se tornar:

+ +
function a() {};
+var b = new a();
+if (b.constructor.name === 'Foo') {
+  console.log("'foo' is an instance of 'Foo'");
+} else {
+  console.log('Oops!');
+}
+
+ +

Na versão descomprimida, o programa cai no bloco-verdade e grava o log 'foo' is an instance of 'Foo'. Todavia, na versão comprimida ele se comporta diferentemente, e cai no bloco else. Se você depende de Function.name, como no exemplo acima, tenha certeza que seu processo de build não mude nomes de função, ou então não assuma que uma função terá um nome determinado.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-name', 'name')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-function-instances-name', 'name')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
+ + +

{{Compat("javascript.builtins.Function.name")}}

+
diff --git a/files/pt-br/web/javascript/reference/global_objects/function/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/function/prototype/index.html new file mode 100644 index 0000000000..285bf56281 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/prototype/index.html @@ -0,0 +1,94 @@ +--- +title: Function.prototype +slug: Web/JavaScript/Reference/Global_Objects/Function/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +
{{JSRef}}
+ +

A propriedade Function.prototype representa o objeto prototype de {{jsxref("Function")}}.

+ +

Descrição

+ +

Objetos {{jsxref("Function")}} herdam de Function.prototypeFunction.prototype não pode ser modificado.

+ +

Propriedades

+ +
+
{{jsxref("Function.arguments")}} {{deprecated_inline}}
+
Um vetor correspondente aos argumentos passados a uma função. Isto é depreciado como propriedade de {{jsxref("Function")}}. Use em vez disso o objeto {{jsxref("Functions/arguments", "arguments")}} disponível dentro da função.
+
{{jsxref("Function.arity")}} {{obsolete_inline}}
+
Usado para especificar o número de argumentos esperados pela função. Foi removido, utilize em vez disso a propriedade {{jsxref("Function.length", "length")}}.
+
{{jsxref("Function.caller")}} {{non-standard_inline}}
+
Especifica a função que invocou a função sendo executada.
+
{{jsxref("Function.length")}}
+
Especifica o número de argumentos esperados pela função.
+
{{jsxref("Function.name")}}
+
O nome da função.
+
{{jsxref("Function.displayName")}} {{non-standard_inline}}
+
O nome de exibição da função.
+
Function.prototype.constructor
+
Especifica a função que cria o prototype do objeto. Veja {{jsxref("Object.prototype.constructor")}} para mais detalhes.
+
+ +

Métodos

+ +
+
{{jsxref("Function.prototype.apply()")}}
+
Chama uma função e define seu this com o valor fornecido. Argumentos podem ser passados como um objeto {{jsxref("Array")}}.
+
{{jsxref("Function.prototype.bind()")}}
+
Cria uma nova função que, quando chamada, tem seu this definido com o valor fornecido, com uma sequência de argumentos determinada precedendo quaisquer argumentos fornecidos quando a nova função é chamada.
+
{{jsxref("Function.prototype.call()")}}
+
Chama (executa) uma função e define seu this com o valor fornecido. Argumentos podem ser passados como são.
+
{{jsxref("Function.prototype.isGenerator()")}} {{non-standard_inline}}
+
Retorna true se a função é um gerador; se não, retorna false.
+
{{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna uma string representando o código-fonte da função. Sobrescreve o método {{jsxref("Object.prototype.toSource")}}.
+
{{jsxref("Function.prototype.toString()")}}
+
Retorna uma string representando o código-fonte da função. Sobrescreve o método {{jsxref("Object.prototype.toString")}}.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementada no JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.3.5.2', 'Function.prototype')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-function-instances-prototype', 'Function.prototype')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-function-instances-prototype', 'Function.prototype')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ +
+ + +

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

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/function/tosource/index.html new file mode 100644 index 0000000000..4fbeaaf1c1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/tosource/index.html @@ -0,0 +1,57 @@ +--- +title: Function.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Function/toSource +tags: + - Função + - JavaScript + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método toSource() retorna uma string que representa o código-fonte do objeto.

+ +

Sintaxe

+ +
function.toSource();
+Function.toSource();
+
+ +

Valor de Retorno

+ +

Uma string representa o código-fonte de um objeto.

+ +

Descrição

+ +

O métodotoSource retorna os seguintes valores:

+ + + +

Esse método, normalmente é chamado internamente pelo JavaScript e não explicitamente no código. Você pode chamar toSource enquanto depura para examinar o conteúdo de um objeto.

+ +

Especificações

+ +

Não faz parte de nenhum padrão. Implementado no JavaScript 1.3.

+ +

Compatibilidade em Navegadores

+ +
+ + +

{{Compat("javascript.builtins.Function.toSource")}}

+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/function/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/function/tostring/index.html new file mode 100644 index 0000000000..c4d6fbbfb6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/function/tostring/index.html @@ -0,0 +1,239 @@ +--- +title: Function.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Function/toString +tags: + - Função + - JavaScript + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString +--- +
{{JSRef}}
+ +

O método toString() retorna uma string representando o código fonte da função.

+ +
{{EmbedInteractiveExample("pages/js/function-tostring.html")}}
+ + + +

Sintaxe

+ +
function.toString()
+ +

Valor de retorno

+ +

Uma string representando o código fonte da função.

+ +

Descrição

+ +

O objeto da {{jsxref("Function")}} substitui o método {{jsxref("Object.prototype.toString", "toString")}} herdado de {{jsxref("Object")}}; ele não herda {{jsxref("Object.prototype.toString")}}. Para objetos {{jsxref("Function")}} definidos pelo usuário, o método toString retorna uma string contendo o seguimento de texto de origem que foi usado para definir a função

+ +

O JavaScript chama o método toString automaticamente quando uma {{jsxref("Function")}} pode ser representada como um valor de texto. e.x. quando uma função é concatenada com uma string.

+ +

O método toString() lançará uma exceção do tipo {{jsxref("TypeError")}} ("Function.prototype.toString called on incompatible object") se o valor this do objeto não é um objeto do tipo Function.

+ +
Function.prototype.toString.call('foo'); // TypeError
+
+ +

Se o método toString() é chamado por objetos de funções embutidas ou por uma função criada por Function.prototype.bindtoString() retorna uma string de uma função nativa que parece

+ +
"function () {\n    [native code]\n}"
+
+ +

Se o método toString() é chamado por uma função criada pelo contrutor de FunctiontoString() retorna o código fonte de uma declaração de função sintetizada chamada "anonymous" usando os parâmetros passados e o corpo da função.

+ +

Exemplos

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunçãoFunction.prototype.toString resultado
+
+function f(){}
+
+
+"function f(){}"
+
+
+class A { a(){} }
+
+
+"class A { a(){} }"
+
+
+function* g(){}
+
+
+"function* g(){}"
+
+
+a => a
+
+
+"a => a"
+
+
+({ a(){} }.a)
+
+
+"a(){}"
+
+
+({ *a(){} }.a)
+
+
+"*a(){}"
+
+
+({ [0](){} }[0])
+
+
+"[0](){}"
+
+
+Object.getOwnPropertyDescriptor({
+    get a(){}
+}, "a").get
+
+
+"get a(){}"
+
+
+Object.getOwnPropertyDescriptor({
+    set a(x){}
+}, "a").set
+
+
+"set a(x){}"
+
+
+Function.prototype.toString
+
+
+"function toString() { [native code] }"
+
+
+(function f(){}.bind(0))
+
+
+"function () { [native code] }"
+
+
+Function("a", "b")
+
+
+"function anonymous(a\n) {\nb\n}"
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}} +

Definição inicial. Implementado no JavaScript 1.1.

+
{{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ES6')}} +

Mais requisitos específicos foram incluídos para representação de string.

+
Function.prototype.toString revisions proposalRascunho +

Padroniza a função de string navida e fins de linha.

+
{{SpecName('ESDraft', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Function.toString")}}

+
+ +

Notas específicas do Firefox

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/generator/index.html b/files/pt-br/web/javascript/reference/global_objects/generator/index.html new file mode 100644 index 0000000000..6bcf4652df --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/generator/index.html @@ -0,0 +1,178 @@ +--- +title: Generator +slug: Web/JavaScript/Reference/Global_Objects/Generator +translation_of: Web/JavaScript/Reference/Global_Objects/Generator +--- +
{{JSRef}}
+ +

O objeto Generator é retornado por {{jsxref("Statements/function*", "generator function", "", 1)}} e conforme iterable protocol e o iterator protocol.

+ +

Síntaxe

+ +
function* gen() {
+  yield 1;
+  yield 2;
+  yield 3;
+}
+
+var g = gen(); // "Generator { }"
+ +

Métodos

+ +
+
{{jsxref("Generator.prototype.next()")}}
+
Retorna o valor fornecido pela expressão {{jsxref("Operators/yield", "yield")}}.
+
{{jsxref("Generator.prototype.return()")}}
+
Retorna o valor fornecido a finaliza o generator.
+
{{jsxref("Generator.prototype.throw()")}}
+
Lança um erro no generator.
+
+ +

Example

+ +

An infinite iterator

+ +
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
+// ...
+ +

Objeto legacy generator

+ +

Firefox (SpiderMonkey) também implementa a versão anterior do generator em JavaScript 1.7, onde o asterisco (*) na declaração da função não era necessário (somente era necessário usar a palavra reservada yield no corpo da função). Contudo, legacy generators estão obsoletos. Não os use, eles serão removidos ({{bug(1083482)}}).

+ +

Métodos legacy generator

+ +
+
Generator.prototype.next() {{non-standard_inline}}
+
Retorna o valor fornecido pela expressão {{jsxref("Operators/yield", "yield")}}. Isto corresponde ao next() do ES6.
+
Generator.prototype.close() {{non-standard_inline}}
+
Fecha o generator, então quando chamar next() um erro {{jsxref("StopIteration")}}  será lançado. Isto corresponde ao  método return() do ES6.
+
Generator.prototype.send() {{non-standard_inline}}
+
Usado para enviar um valor para o generator. Este valor é retordo pela expressão {{jsxref("Operators/yield", "yield")}}, e retorna o valor fornecido pelo pelo next {{jsxref("Operators/yield", "yield")}}. send(x) corresponde ao next(x) do ES6.
+
Generator.prototype.throw() {{non-standard_inline}}
+
Lança um erro no generator. Isto corresponde ao método throw() do ES6.
+
+ +

Exemplo do Legacy generator

+ +
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 (Como o generator está fechado)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES6', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ES6')}}Definição Inicial
{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ +

{{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)}}
+
+ +

Veja Também

+ +

Legacy generators

+ + + +

ES6 generators

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/globalthis/index.html b/files/pt-br/web/javascript/reference/global_objects/globalthis/index.html new file mode 100644 index 0000000000..2fa51a26e2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/globalthis/index.html @@ -0,0 +1,80 @@ +--- +title: globalThis +slug: Web/JavaScript/Reference/Global_Objects/globalThis +tags: + - JavaScript + - Reference + - global + - globalThis +translation_of: Web/JavaScript/Reference/Global_Objects/globalThis +--- +
{{jsSidebar("Objects")}}
+ +

A propriedade global globalThis retorna um objeto global de nível superior.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}
+ + + +

Sintaxe

+ +
globalThis
+
+ +

Descrição

+ +

Historicamente, o acesso ao escopo global exigiu uma sintaxe diferente em diferentes ambientes JavaScript. Na web você pode usar window, self ou frames - porém em Web Workers somente self funcionará. Em Node.js nada disso funciona e você deve usar global.
+ A palavra-chave this poderia ser usada dentro de funções em execução no modo sloppy, mas this será undefined em módulos, e dentro de funções em execução no strict mode.

+ +

A propriedade globalThis fornece uma maneira padrão de acessar o objeto global entre ambientes. Ao contrário de propriedades semelhantes, como window e self, é garantido que funcione em contextos window e non-window. Dessa forma, você pode acessar o objeto global de maneira consistente sem precisar saber em qual ambiente o código está sendo executado.

+ +

Para ajudá-lo a lembrar o nome, lembre-se que no escopo global, o valor de this é globalThis.

+ +

Nome

+ +

Várias outras opções de nomes populares, como self e global foram removidas da discussão devido ao seu potencial em quebrar a compatibilidade com o código existente.

+ +

Exemplos

+ +

Antes de globalThis, a única maneira confiável de obter o objeto global para um ambiente era Function('return this')(). No entanto, isso causa violações CSP em algumas configurações, então es6-shim usa uma verificação como essa, por exemplo:

+ +
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') {
+  // sem setTimeout neste ambiente!
+}
+
+ +

Com globalThis disponível, a busca global adicional entre ambientes não é mais necessária:

+ +
if (typeof globalThis.setTimeout !== 'function') {
+  // sem setTimeout neste ambiente!
+}
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
globalThis proposalStage 3 
+ +

Compatibilidade entre navegadores

+ +

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

diff --git a/files/pt-br/web/javascript/reference/global_objects/index.html b/files/pt-br/web/javascript/reference/global_objects/index.html new file mode 100644 index 0000000000..cd7eb82608 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/index.html @@ -0,0 +1,174 @@ +--- +title: Objetos Globais +slug: Web/JavaScript/Reference/Global_Objects +tags: + - JavaScript + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects +--- +

+ +
{{jsSidebar("Objects")}}
+ +

Resumo

+ +

Este capítulo documenta todos os objetos nativos do JavaScript padrão, assim como seus métodos e propriedades.

+ +
+

O termo "objetos globais" (ou objetos nativos por padrão) aqui não deve ser confundido com o de objeto global. Aqui, objetos globais se referem aos objetos no escopo global (somente se o modo estrito/strict mode do ECMAScript 5 não for usado; Nesse caso retorna {{jsxref("undefined")}}). O objeto global pode ser acessado usando o operador {{jsxref("Operators/this", "this")}} no escopo global. De fato, o escopo global consiste em propriedades do objeto global, incluindo propriedades herdadas, se houver.

+ +

Outros objetos no escopo global também são criados pelo desenvolvedor ou fornecido pela aplicação host. Os objetos disponíveis no host no contexto do browser são documentados na API reference. Para maiores informações sobre as distinções entre DOM e core JavaScript, veja visão geral das tecnologias JavaScript.

+ +

Objetos padrão (por categoria)

+ +

Propriedades de valor

+ +

Propriedades globais retornam um valor simples; eles não tem propriedades ou métodos.

+ + + +

Propriedades de função

+ +

Estas funções globais —funções que são chamadas globalmente ao invés de em um objeto—retornam diretamente seus resultados a quem chama.

+ + + +

Objetos fundamentais

+ +

Estes são objetos básicos e fundamentais nos quais todos os outros objetos são baseados. Isso inclui objetos que representam objetos genéricos, funções e erros.

+ + + +

Números e datas

+ +

Estes são objetos base para a representação de números, datas e cálculos matemáticos.

+ + + +

Processamento de texto

+ +

Estes objetos representam strings e manipulam as mesmas.

+ + + +

Coleções indexadas

+ +

Estes objetos representam coleções de dados que são ordenados pelo valor de um índice. Isso inclui arrays (tipados) e arrays baseados em outros construtores, como [].

+ + + +

Coleções chaveadas

+ +

Estes objetos representam coleções que usam chaves; estas contém elementos que são iteráveis na ordem de inserção.

+ + + +

Dados estruturados

+ +

Estes objetos representam e interagem com buffers de dados estruturados e dados codificados usando JavaScript Object Notation (JSON).

+ + + +

Controle de abstrações de objetos

+ + + +

Reflexão (reflection)

+ + + +

Internacionalização

+ +

Adições ao core do ECMAScript para funcionalidades sensíveis à linguagem.

+ + + +

Objetos não-padrão

+ + + +

Outros

+ + +
+ +

 

diff --git a/files/pt-br/web/javascript/reference/global_objects/infinity/index.html b/files/pt-br/web/javascript/reference/global_objects/infinity/index.html new file mode 100644 index 0000000000..71831a3f35 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/infinity/index.html @@ -0,0 +1,114 @@ +--- +title: Infinity +slug: Web/JavaScript/Reference/Global_Objects/Infinity +translation_of: Web/JavaScript/Reference/Global_Objects/Infinity +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Sumário

+ +

A propriedade global Infinity é um valor numérico que representa infinito.

+ +

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

+ +

Sintaxe

+ +
Infinity 
+ +

Descrição

+ +

Infinity é uma propriedade do objeto global, ou seja, é uma varíavel no escopo global.

+ +

O valor inicial de Infinity é {{jsxref("Number.POSITIVE_INFINITY")}}. O valor Infinity (positivo) é maior do que qualquer outro número. Este valor se comporta matematicamente como infinito; por exemplo, qualquer número positivo multiplicado por Infinity é Infinity, e qualquer coisa dividida por Infinity é 0.

+ +

Pela especificação ECMAScript 5, Infinity é somente leitura (implementado no JavaScript 1.8.5  / Firefox 4).

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1ª Edição.PadrãoDefinição inicial. Implementado no 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')}} 
+ +

Compatibilidade

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/int16array/index.html b/files/pt-br/web/javascript/reference/global_objects/int16array/index.html new file mode 100644 index 0000000000..a989e5be3e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/int16array/index.html @@ -0,0 +1,208 @@ +--- +title: Int16Array +slug: Web/JavaScript/Reference/Global_Objects/Int16Array +tags: + - Construtor + - JavaScript + - TypedArray + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array +--- +
{{JSRef}}
+ +

 

+ +

A matriz do tipo Int16Array representa uma matriz de inteiros assinados de 16 bits com dois complementos na ordem de bytes da plataforma. Se o controle sobre a ordem de bytes for necessário, use {{jsxref ("DataView")}}. O conteúdo é inicializado em 0. Uma vez estabelecido, você pode fazer referência a elementos na matriz usando os métodos do objeto ou usando a sintaxe de índice da matriz padrão (ou seja, usando a notação de colchetes).

+ +

Sintaxe

+ +
new Int16Array(); // novo no ES2017
+new Int16Array(length);
+new Int16Array(typedArray);
+new Int16Array(object);
+new Int16Array(buffer [, byteOffset [, length]]);
+ +

 

+ +

Para obter mais informações sobre a sintaxe do construtor e os parâmetros, consulte TypedArray.

+ +

Propriedades

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}
+
Retorna um valor numérico do tamanho do elemento. 2 no caso de um Int16Array.
+
Int16Array.length
+
Propriedade de comprimento estático cujo valor é 0. Para o comprimento real (número de elementos), consulte {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}.
+
{{jsxref("TypedArray.name", "Int16Array.name")}}
+
Retorna o valor da string do nome do construtor. No caso do tipo Int16Array: "Int16Array".
+
{{jsxref("TypedArray.prototype", "Int16Array.prototype")}}
+
Protótipo para os objetos TypedArray.
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.from", "Int16Array.from()")}}
+
Cria um novo Int16Array de um objeto semelhante a uma matriz ou iterável. Veja também {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of", "Int16Array.of()")}}
+
Cria um novo Int16Array com um número variável de argumentos. Veja também {{jsxref("Array.of()")}}.
+
+ +

Int16Array prototype

+ +

Todos Int16Array objetos herdam de {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.

+ +

Propriedades

+ +
+
Int16Array.prototype.constructor
+
Retorna a função que criou o protótipo de uma instância. Este é o construtor Int16Array por padrão.
+
{{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}} {{readonlyInline}}
+
Retorna o {{jsxref("ArrayBuffer")}} referenciado pelo Int16Array Fixado em tempo de construção e apenas leitura.
+
{{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}} {{readonlyInline}}
+
Retorna o tamanho (em bytes) de um Int16Array desde o ínicio {{jsxref("ArrayBuffer")}}. Fixado em tempo de construção e apenas leitura.
+
{{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}} {{readonlyInline}}
+
Retorna o deslocamento (em bytes) de um Int16Array desde o ínicio {{jsxref("ArrayBuffer")}}. Fixado em tempo de construção e apenas leitura.
+
{{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}} {{readonlyInline}}
+
Retorna o número de elementos em um Int16Array. Fixado em tempo de construção e apenas leitura.
+
+ +

Métodos

+ +
+
{{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}
+
Copia uma sequência de elementos da matriz dentro da matriz. Veja também {{jsxref("Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}
+
Retorna um novo Array Iterator objeto que contém os pares de chave / valor para cada índice na matriz. Veja também {{jsxref("Array.prototype.entries()")}}.
+
{{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}
+
Testa se todos os elementos na matriz passam no teste fornecido por uma função. Veja também {{jsxref("Array.prototype.every()")}}.
+
{{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}
+
Preenche todos os elementos de uma matriz de um índice inicial para um índice final com um valor estático. Veja também {{jsxref("Array.prototype.fill()")}}.
+
{{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}
+
Cria uma nova matriz com todos os elementos dessa matriz para os quais a função de filtragem fornecida retorna true. Veja também {{jsxref("Array.prototype.filter()")}}.
+
{{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}
+
Retorna o valor encontrado na matriz, se um elemento na matriz satisfizer a função de teste fornecida ou undefined se não encontrado. Veja também {{jsxref("Array.prototype.find()")}}.
+
{{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}
+
Retorna o índice encontrado na matriz, se um elemento na matriz satisfizer a função de teste fornecida ou -1, se não for encontrado. Veja também {{jsxref("Array.prototype.findIndex()")}}.
+
{{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}
+
Chama uma função para cada elemento na matriz. Veja também {{jsxref("Array.prototype.forEach()")}}.
+
{{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}} {{experimental_inline}}
+
Determina se uma matriz tipificada inclui um determinado elemento, retornando true ou false. Veja também {{jsxref("Array.prototype.includes()")}}.
+
{{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}
+
Retorna o primeiro (menos) índice de um elemento dentro da matriz igual ao valor especificado ou -1 se nenhum for encontrado. Veja também {{jsxref("Array.prototype.indexOf()")}}.
+
{{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}
+
Junta todos os elementos de um array em uma string. Veja também {{jsxref("Array.prototype.join()")}}.
+
{{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}
+
Retorna um novo Array Iterator que contém uma chave para cada índice no array. Veja também {{jsxref("Array.prototype.keys()")}}.
+
{{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}
+
Retorna o último (maior) índice de um elemento dentro da matriz igual ao valor especificado ou -1 se nenhum for encontrado. Veja também {{jsxref("Array.prototype.lastIndexOf()")}}.
+
{{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}
+
Cria uma nova matriz com os resultados da chamada de uma função fornecida em todos os elementos dessa matriz. Veja também {{jsxref("Array.prototype.map()")}}.
+
{{jsxref("TypedArray.move", "Int16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}
+
Versão não-padrão anterior de {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}.
+
{{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}
+
Aplique uma função contra um acumulador e cada valor da matriz (da esquerda para a direita) para reduzi-lo a um único valor. Veja também {{jsxref("Array.prototype.reduce()")}}.
+
{{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}
+
Aplique uma função contra um acumulador e cada valor da matriz (da direita para a esquerda) para reduzi-lo a um único valor. Veja também {{jsxref("Array.prototype.reduceRight()")}}.
+
{{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}
+
Inverte a ordem dos elementos de um array - o primeiro torna-se o último e o último torna-se o primeiro. Veja também {{jsxref("Array.prototype.reverse()")}}.
+
{{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}
+
Armazena vários valores na matriz tipada, lendo valores de entrada de uma matriz especificada.
+
{{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}
+
Extrai uma seção de uma matriz e retorna uma nova matriz. Veja também {{jsxref("Array.prototype.slice()")}}.
+
{{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}
+
Retorna true se pelo menos um elemento nessa matriz satisfizer a função de teste fornecida. Veja também {{jsxref("Array.prototype.some()")}}.
+
{{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}
+
Classifica os elementos de uma matriz e retorna a matriz. Veja também {{jsxref("Array.prototype.sort()")}}.
+
{{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}
+
Retorna um novo Int16Array a partir do índice de elemento inicial e final fornecido.
+
{{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}
+
Retorna um novo objeto  Array Iterator que contém os valores para cada índice na matriz. Veja também {{jsxref("Array.prototype.values()")}}.
+
{{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}
+
Retorna uma string localizada representando a matriz e seus elementos. Veja também {{jsxref("Array.prototype.toLocaleString()")}}.
+
{{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}
+
Retorna uma string representando a matriz e seus elementos. Veja também {{jsxref("Array.prototype.toString()")}}.
+
{{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}
+
Retorna um novo objeto Array Iterator que contém os valores para cada índice na lista.
+
+ +

Exemplos

+ +

Diferentes opções de criar um Int16Array:

+ +
// De um tamanho
+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
+
+// De uma array
+var arr = new Int16Array([21,31]);
+console.log(arr[1]); // 31
+
+// De um outro TypedArray
+var x = new Int16Array([21, 31]);
+var y = new Int16Array(x);
+console.log(y[0]); // 21
+
+// De um ArrayBuffer
+var buffer = new ArrayBuffer(8);
+var z = new Int16Array(buffer, 0, 4);
+
+// De um interável
+var iterable = function*(){ yield* [1,2,3]; }();
+var int16 = new Int16Array(iterable);
+// Int16Array[1, 2, 3]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Substituído pelo ECMAScript 2015.
{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}{{Spec2('ES2015')}}Definição inicial em um padrão ECMA. Especificado new como requerido.
{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}{{Spec2('ESDraft')}}ECMAScript 2017 mudou o construtor Int16Array para usar a operação ToIndex e permitir construtores sem argumentos.
+ +

Compatibilidade com os navegadores

+ + + +

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

+ +

Notas de compatibilidade

+ +

A partir do ECMAScript 2015, os construtores Int16Array precisam ser construídos com um operador {{jsxref("Operators/new", "new")}}. Chamar um construtor Int16Array como uma função sem o new, irá resultar em {{jsxref("TypeError")}}.

+ +
var dv = Int16Array([1, 2, 3]);
+// TypeError: calling a builtin Int16Array constructor
+// without new is forbidden
+ +
var dv = new Int16Array([1, 2, 3]);
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/internalerror/index.html b/files/pt-br/web/javascript/reference/global_objects/internalerror/index.html new file mode 100644 index 0000000000..12de103329 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/internalerror/index.html @@ -0,0 +1,92 @@ +--- +title: InternalError +slug: Web/JavaScript/Reference/Global_Objects/InternalError +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +
{{JSRef}} {{non-standard_header}}
+ +

O objeto InternalError indica que um erro ocorreu internamente na engine do JavaScript.

+ +

Isso ocorre quando algo é muito grande, por exemplo:

+ + + +

Construtor

+ +
+
InternalError()
+
Cria um um novo objeto InternalError.
+
+ +

Instance properties

+ +
+
{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}
+
Error message. Inherited from {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}
+
Error name. Inherited from {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}
+
Path to file that raised this error. Inherited from {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}
+
Line number in file that raised this error. Inherited from {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}
+
Column number in line that raised this error. Inherited from {{jsxref("Error")}}.
+
{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}
+
Stack trace. Inherited from {{jsxref("Error")}}.
+
+ +

Examples

+ +

Too much recursion

+ +

This recursive function runs 10 times, as per the exit condition.

+ +
function loop(x) {
+  if (x >= 10) // "x >= 10" is the exit condition
+    return;
+  // do stuff
+  loop(x + 1); // the recursive call
+}
+loop(0);
+ +

Setting this condition to an extremely high value, won't work:

+ +
function loop(x) {
+  if (x >= 1000000000000)
+    return;
+  // do stuff
+  loop(x + 1);
+}
+loop(0);
+
+// InternalError: too much recursion
+ +

For more information, see InternalError: too much recursion.

+ +

Specifications

+ +

Not part of any standard.

+ +

Browser compatibility

+ +
+
+ + +

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

+
+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/pt-br/web/javascript/reference/global_objects/intl/datetimeformat/index.html new file mode 100644 index 0000000000..6c060cd838 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/intl/datetimeformat/index.html @@ -0,0 +1,188 @@ +--- +title: Intl.DateTimeFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +--- +
{{JSRef}}
+ +

O objeto Intl.DateTimeFormat é um constructor para objetos que habilita o formato de data e hora no idioma padrão.

+ +
{{EmbedInteractiveExample("pages/js/intl-datetimeformat.html")}}
+ + + +

Constructor

+ +
+
Intl.DateTimeFormat()
+
Creates a new DateTimeFormat object.
+
+ +

Static methods

+ +
+
{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}
+
Returns an array containing those of the provided locales that are supported without having to fall back to the runtime's default locale.
+
+ +

Instance methods

+ +
+
{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format()")}}
+
Getter function that formats a date according to the locale and formatting options of this {{jsxref("DateTimeFormat", "DateTimeFormat")}} object.
+
{{jsxref("DateTimeFormat.formatToParts", "Intl.DateTimeFormat.prototype.formatToParts()")}}
+
Returns an {{jsxref("Array")}} of objects representing the date string in parts that can be used for custom locale-aware formatting.
+
{{jsxref("DateTimeFormat.resolvedOptions", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}
+
Returns a new object with properties reflecting the locale and formatting options computed during initialization of the object.
+
{{jsxref("DateTimeFormat.formatRange", "Intl.DateTimeFormat.prototype.formatRange()")}}
+
This method receives two Dates and formats the date range in the most concise way based on the locale and options provided when instantiating {{jsxref("DateTimeFormat", "DateTimeFormat")}}.
+
{{jsxref("DateTimeFormat.formatRangeToParts", "Intl.DateTimeFormat.prototype.formatRangeToParts()")}}
+
This method receives two Dates and returns an Array of objects containing the locale-specific tokens representing each part of the formatted date range.
+
+ +

Examples

+ +

Using DateTimeFormat

+ +

In basic use without specifying a locale, DateTimeFormat uses the default locale and default options.

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// toLocaleString without arguments depends on the implementation,
+// the default locale, and the default time zone
+console.log(new Intl.DateTimeFormat().format(date));
+// → "12/19/2012" if run with en-US locale (language) and time zone America/Los_Angeles (UTC-0800)
+
+ +

Using locales

+ +

This example shows some of the variations in localized date and time formats. In order to get the format of the language used in the user interface of your application, make sure to specify that language (and possibly some fallback languages) using the locales argument:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
+
+// Results below use the time zone of America/Los_Angeles (UTC-0800, Pacific Standard Time)
+
+// US English uses month-day-year order
+console.log(new Intl.DateTimeFormat('en-US').format(date));
+// → "12/19/2012"
+
+// British English uses day-month-year order
+console.log(new Intl.DateTimeFormat('en-GB').format(date));
+// → "19/12/2012"
+
+// Korean uses year-month-day order
+console.log(new Intl.DateTimeFormat('ko-KR').format(date));
+// → "2012. 12. 19."
+
+// Arabic in most Arabic speaking countries uses real Arabic digits
+console.log(new Intl.DateTimeFormat('ar-EG').format(date));
+// → "١٩‏/١٢‏/٢٠١٢"
+
+// for Japanese, applications may want to use the Japanese calendar,
+// where 2012 was the year 24 of the Heisei era
+console.log(new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(date));
+// → "24/12/19"
+
+// when requesting a language that may not be supported, such as
+// Balinese, include a fallback language, in this case Indonesian
+console.log(new Intl.DateTimeFormat(['ban', 'id']).format(date));
+// → "19/12/2012"
+
+ +

Using options

+ +

The date and time formats can be customized using the options argument:

+ +
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0, 200));
+
+// request a weekday along with a long date
+var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
+console.log(new Intl.DateTimeFormat('de-DE', options).format(date));
+// → "Donnerstag, 20. Dezember 2012"
+
+// an application may want to use UTC and make that visible
+options.timeZone = 'UTC';
+options.timeZoneName = 'short';
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → "Thursday, December 20, 2012, GMT"
+
+// sometimes you want to be more precise
+options = {
+  hour: 'numeric', minute: 'numeric', second: 'numeric',
+  timeZone: 'Australia/Sydney',
+  timeZoneName: 'short'
+};
+console.log(new Intl.DateTimeFormat('en-AU', options).format(date));
+// → "2:00:00 pm AEDT"
+
+// sometimes you want to be very precise
+options.fractionalSecondDigits = 3;
+console.log(new Intl.DateTimeFormat('en-AU', options).format(date));
+// → "2:00:00.200 pm AEDT"
+
+
+// sometimes even the US needs 24-hour time
+options = {
+  year: 'numeric', month: 'numeric', day: 'numeric',
+  hour: 'numeric', minute: 'numeric', second: 'numeric',
+  hour12: false,
+  timeZone: 'America/Los_Angeles'
+};
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → "12/19/2012, 19:00:00"
+
+
+// to specify options but use the browser's default locale, use 'default'
+console.log(new Intl.DateTimeFormat('default', options).format(date));
+// → "12/19/2012, 19:00:00"
+
+// sometimes it's helpful to include the period of the day
+options = {hour: "numeric", dayPeriod: "short"};
+console.log(new Intl.DateTimeFormat('en-US', options).format(date));
+// → 10 at night
+
+ +

The used calendar and numbering formats can also be set independently via options arguments:

+ +
var options = {calendar: 'chinese', numberingSystem: 'arab'};
+var dateFormat = new Intl.DateTimeFormat('default', options);
+var usedOptions = dateFormat.resolvedOptions();
+
+console.log(usedOptions.calendar);
+// → "chinese"
+
+console.log(usedOptions.numberingSystem);
+// → "arab"
+
+console.log(usedOptions.timeZone);
+// → "America/New_York" (the users default timezone)
+
+ +

Specifications

+ + + + + + + + + + + + +
Specification
{{SpecName('ES Int Draft', '#datetimeformat-objects', 'Intl.DateTimeFormat')}}
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Intl.DateTimeFormat")}}

+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/intl/index.html b/files/pt-br/web/javascript/reference/global_objects/intl/index.html new file mode 100644 index 0000000000..02e5b8f205 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/intl/index.html @@ -0,0 +1,168 @@ +--- +title: Intl +slug: Web/JavaScript/Reference/Global_Objects/Intl +translation_of: Web/JavaScript/Reference/Global_Objects/Intl +--- +
{{JSRef}}
+ +

O objeto Intl é o namespace para a API de Internacionalização do ECMAScript , que fornece comparação de string sensível à línguagem, formatação de números, e formatação de data e hora. Os construtores para os objetos {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, e {{jsxref("DateTimeFormat")}} são propriedades do objecto Intl. Esta página documenta essas propriedades, bem como funcionalidades comuns aos construtores de internacionalização e outras funções sensíveis de linguagem.

+ +

Propriedades

+ +
+
{{jsxref("Global_Objects/Collator", "Intl.Collator")}}
+
Construtor para collators, objetos que permitem comparação de string sensível a linguagem.
+
{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}
+
Construtor para objetos que permitem formatação de data e hora sensível a linguagem.
+
{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}
+
Construtor para objetos que permitem formatação de número sensível a linguagem.
+
+ +

Métodos

+ +
+
{{jsxref("Intl.getCanonicalLocales()")}}
+
Retorna os nomes canônicos de local (ex.: en-US, pt-BR).
+
+ +

Identificação e negociação de local

+ +

Os construtores de internacionalização, assim como diversos métodos de outros construtores que são sensíveis a idioma (listados em {{anch("See_also", "Veja também")}}) usam um padrão comum para identificar locais e determinar qual será utilizado: todos aceitam argumentos locales e options e negociam o(s) local(is) requisitado entre os locais suportados usando um algoritmo especificado na propriedade options.localeMatcher.

+ +

Argumento locales

+ +

O argumento locales deve ser uma string contendo uma tag de linguagem BCP 47 ou um array dessas tags. Se o argumento locales não for passado ou estiver indefinido, será utilizado o local padrão do runtime.

+ +

Uma tag de linguagem BCP 47 identifica um idioma ou local (a diferença entre ambos neste caso é difusa). Em sua forma mais comum, ela pode conter, nesta ordem: um código de idioma, um código de escrita e um código de país, todos eparados por hífen. Exemplos:

+ + + +

As subtags identificando idiomas, escritas, países (regiões) e (raramente utilizadas) variantes nas tags de linguagem BCP 47 podem ser consultadas no Registro de Subtags de Linguagem da IANA.

+ +

BCP 47 também permite extensões, e uma delas é relevante para as funções JavaScript de internacionalização: a extensão "u" (Unicode). Ela pode ser utilizada para requisitar uma customização do comportamento específico local de um objeto {{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, ou {{jsxref("DateTimeFormat")}}. Exemplos:

+ + + +

Locale negotiation

+ +

The locales argument, after stripping off all Unicode extensions, is interpreted as a prioritized request from the application. The runtime compares it against the locales it has available and picks the best one available. Two matching algorithms exist: the "lookup" matcher follows the Lookup algorithm specified in BCP 47; the "best fit" matcher lets the runtime provide a locale that's at least, but possibly more, suited for the request than the result of the Lookup algorithm. If the application doesn't provide a locales argument, or the runtime doesn't have a locale that matches the request, then the runtime's default locale is used. The matcher can be selected using a property of the options argument (see below).

+ +

If the selected language tag had a Unicode extension substring, that extension is now used to customize the constructed object or the behavior of the function. Each constructor or function supports only a subset of the keys defined for the Unicode extension, and the supported values often depend on the language tag. For example, the "co" key (collation) is only supported by {{jsxref("Collator")}}, and its "phonebk" value is only supported for German.

+ +

options argument

+ +

The options argument must be an object with properties that vary between constructors and functions. If the options argument is not provided or is undefined, default values are used for all properties.

+ +

One property is supported by all language sensitive constructors and functions: The localeMatcher property, whose value must be a string "lookup" or "best fit" and which selects one of the locale matching algorithms described above.

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES Int 1.0', '#sec-8', 'Intl')}}{{Spec2('ES Int 1.0')}}Initial definition.
{{SpecName('ES Int 2.0', '#sec-8', 'Intl')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#intl-object', 'Intl')}}{{Spec2('ES Int Draft')}}Added Intl.getCanonicalLocales in the 4th edition.
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatSafari("10.0")}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatChrome("26")}}{{CompatGeckoMobile("54")}} (nightly-only) [1]{{CompatNo}}{{CompatNo}}{{CompatSafari("10.0")}} [2]
+
+ +

[1] Starting with Gecko 44 {{geckoRelease(44)}}, the Intl API is available on b2gdroid.
+ [2] Safari 10.0 Release Notes

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/index.html new file mode 100644 index 0000000000..ac698fd883 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/index.html @@ -0,0 +1,242 @@ +--- +title: Intl.NumberFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +tags: + - Internacionalização + - JavaScript + - NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +
{{JSRef}}
+ +

O objeto Intl.NumberFormat é um construtor para objetos que habilita formatação de número sensível a linguagem.

+ +

{{EmbedInteractiveExample("pages/js/intl-numberformat.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.

+ + + +

Sintaxe

+ +
new Intl.NumberFormat([locales[, options]])
+Intl.NumberFormat.call(this[, locales[, options]])
+
+ +

Parâmetros

+ +
+
locales
+
+

Opcional. Uma string com uma tag de linguagem BCP 47 ou uma matriz delas. Para a forma geral e interpretação do argumento locales, veja {{jsxref("Intl", "Intl page", "#Locale_identification_and_negotiation", 1)}}. A seguinte chave extendida Unicode é permitida:

+ +
+
nu
+
O sistema de numeração que será usado. Os valores permitidos são: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
+
+
+
options
+
+

Opcional. Um objeto com alguns ou todas as seguintes propriedades:

+ +
+
localeMatcher
+
O algoritmo de comparação de localização para utilizar. Os valores permitidos são "lookup" e "best fit"; o padrão é "best fit". Para mais informações sobre esta opção, veja  {{jsxref("Global_Objects/Intl", "Intl page", "#Locale_negotiation", 1)}}.
+
style
+
O estilo do formato a ser utilizado. Os valores permitidos são "decimal" para formato de número simples, "currency" para formato monetário e "percent" para formato percentual; o padrão é "decimal".
+
currency
+
A moeda para usar na formatação monetária. Os valores permitidos são os códigos de moedas da ISO 4217, como "USD" para dólar estadunidense, "EUR" para euro, ou "CNY" para RMB chinês — veja a Lista de códigos de moedas e fundos atuais. Não há valor padrão; se o style for "currency", a propriedade currency deverá ser informada.
+
currencyDisplay
+
Como será mostrada a moeda na formatação monetária. Os valores permitidos são "symbol" para usar um símbolo de moeda localizado como €, "code" para usar o código de moeda ISO, "name" para usar o nome da moeda localizado como "dollar"; o padrão é "symbol".
+
useGrouping
+
Se usar separadores de agrupamento, como separadores de milhares ou milhares/cem mil/dez milhões. Os valores permitidos são true e false; o padrão é true.
+
+ +

As próximas propriedades se dividem em dois grupos: minimumIntegerDigits, minimumFractionDigits, e maximumFractionDigits no primeiro grupo, minimumSignificantDigits and maximumSignificantDigits em outro. Se pelo menos uma propriedade do segundo grupo for informado, então o primeiro grupo é ignorado.

+ +
+
minimumIntegerDigits
+
A quantidade mínima de dígitos inteiros para utilizar. É possível usar valores de 1 a 21; o padrão é 1.
+
minimumFractionDigits
+
A quantidade mínima de dígitos fracionados para utilizar. É possível usar valores de 0 a 20; o padrão para formatos de números simples e percentuais é 0; o padrão para formatos monetários é a menor unidade de dígitos fornecidos pela lista de códigos de moedas ISO 4217 (2 se a lista não fornecer a informação).
+
maximumFractionDigits
+
O número máximo de dígitos fracionados para utilizar. É possível usar valores de 0 a 20; o padrão para a formatação de número simples é o maior entre minimumFractionDigits e 3; o padrão para formatos monetários é o maior número de dígitos entre  minimumFractionDigits e o fornecido pela lista de códigos de moedas ISO 4217 (2 se a lista não fornecer a informação); o padrão para a formatação percentual é o maior número entre minimumFractionDigits e 0.
+
minimumSignificantDigits
+
A quantidade mínima de dígitos significantes para usar. Os valores permitidos são de 1 a 21; o padrão é 1.
+
maximumSignificantDigits
+
A quantidade máxima de dígitos significantes para usar. Os valores permitidos são de 1 a 21; o padrão é minimumSignificantDigits.
+
+
+
+ +

Descrição

+ +

Propriedades

+ +
+
{{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}
+
Pertime a inclusão de propriedades a todos os objetos.
+
+ +

Métodos

+ +
+
{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}
+
Retorna uma matriz contendo as localizações fornecidas que são suportadas sem retornar a localização padrão em tempo de execução.
+
+ +

Instâncias NumberFormat

+ +

Propriedades

+ +

As instâncias de NumberFormat herdam as seguntes propriedades de seu protótipo:

+ +
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Propriedades')}}
+ +

Methods

+ +

As instâncias de NumberFormat herdam os seguintes métodos de seu protótipo:

+ +
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Métodos')}}
+ +

Exemplos

+ +

Uso básico

+ +

No uso básico sem a especificação de uma localização, o método retornará uma string formatada com a localização e as opções padrão.

+ +
var numero = 3500;
+
+console.log(new Intl.NumberFormat().format(numero));
+// → '3,500' se a localização for U.S. English
+
+ +

Usando locales

+ +

Este exemplo mostra algumas variações de formatos de números localizados. A fim de obter o formato da linguagem utilizada na interface do usuário da sua aplicação, tenha certeza de especificar a língua (e possivelmente algumas línguas reservas) usando o argumento locales:

+ +
var numero = 123456.789;
+
+// O alemão usa vírgula como separador de decimal e ponto para milhares
+console.log(new Intl.NumberFormat('de-DE').format(numero));
+// → 123.456,789
+
+// O árabe usa dígitos reais árabes em muitos países que falam árabe
+console.log(new Intl.NumberFormat('ar-EG').format(numero));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// A Índia usa separadores de milhares/cem mil/dez milhões
+console.log(new Intl.NumberFormat('en-IN').format(numero));
+// → 1,23,456.789
+
+// A chave de extensão nu requer um sistema de numeração, ex. decimal chinês
+console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(numero));
+// → 一二三,四五六.七八九
+
+// Quando informada uma língua sem suporte, como balinês,
+// inclua uma língua reseva, neste caso indonésio
+console.log(new Intl.NumberFormat(['ban', 'id']).format(numero));
+// → 123.456,789
+
+ +

Usando options

+ +

Os resultados podem ser personalizados usando o argumento options:

+ +
var numero = 123456.789;
+
+// informando um formato de moeda
+console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(numero));
+// → 123.456,79 €
+
+// o yen japonês não tem uma unidade menor
+console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(numero));
+// → ¥123,457
+
+// limitando a três dígitos significativos
+console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(numero));
+// → 1,23,000
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 1.0')}}Definição inicial.
{{SpecName('ES Int 2.0', '#sec-11.1', 'Intl.NumberFormat')}}{{Spec2('ES Int 2.0')}}
{{SpecName('ES Int Draft', '#numberformat-objects', 'Intl.NumberFormat')}}{{Spec2('ES Int Draft')}}
+ +

Compatibilidade do navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Suporte básico{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ +
{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'Veja_tambem')}}
diff --git a/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html new file mode 100644 index 0000000000..badd2d1946 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html @@ -0,0 +1,125 @@ +--- +title: Intl.NumberFormat.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +tags: + - Internacionalização + - JavaScript + - NumberFormat + - Property + - Propriedade + - Prototipo + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +
{{JSRef}}
+ +

A propriedade Intl.NumberFormat.prototype representa o objeto do protótipo do construtor de {{jsxref("NumberFormat", "Intl.NumberFormat")}}.

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

Descrição

+ +

Veja {{jsxref("NumberFormat")}} para uma descrição sobre instâncias de Intl.NumberFormat.

+ +

As instâncias de {{jsxref("NumberFormat", "Intl.NumberFormat")}} herdam de Intl.NumberFormat.prototype. Modificações ao objeto do protótipo são herdados por todas as instâncias de {{jsxref("NumberFormat", "Intl.NumberFormat")}}.

+ +

Propriedades

+ +
+
Intl.NumberFormat.prototype.constructor
+
Uma referência a Intl.NumberFormat.
+
{{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}
+
Getter; retorna uma função que formata um número de acordo com a localização e as opçõe de formatação do objeto {{jsxref("NumberFormat")}}.
+
+ +

Métodos

+ +
+
{{jsxref("NumberFormat.resolvedOptions", "Intl.NumberFormat.prototype.resolvedOptions()")}}
+
Retorna um novo objeto com propriedades refletindo a localização e as opções de agrupamento obtidos durante a inicialização do objeto.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES Int 1.0', '#sec-11.2.1', 'Intl.NumberFormat.prototype')}}{{Spec2('ES Int 1.0')}}Definição inicial.
{{SpecName('ES Int 2.0', '#sec-11.2.1', 'Intl.NumberFormat.prototype')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#sec-Intl.NumberFormat.prototype', 'Intl.NumberFormat.prototype')}}{{Spec2('ES Int Draft')}} 
+ +

Compatibilidade do navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticasChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Suporte básico{{CompatChrome("24")}}{{CompatGeckoDesktop("29")}}{{CompatIE("11")}}{{CompatOpera("15")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticasAndroidChrome for AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatChrome("26")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/intl/relativetimeformat/index.html b/files/pt-br/web/javascript/reference/global_objects/intl/relativetimeformat/index.html new file mode 100644 index 0000000000..bc6b5c0b22 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/intl/relativetimeformat/index.html @@ -0,0 +1,171 @@ +--- +title: Intl.RelativeTimeFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat +tags: + - Internacionalização + - Intl +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat +--- +
{{JSRef}}
+ +

O objeto Intl.RelativeTimeFormat é um construtor de objetos que permitem uma formatação de tempo relativa sensível ao idioma.

+ +
{{EmbedInteractiveExample("pages/js/intl-relativetimeformat.html")}}
+ + + +

Sintaxe

+ +
new Intl.RelativeTimeFormat([locales[, options]])
+
+ +

Parâmetros

+ +
+
locales
+
+

Opcional. Uma string com uma tag da linguagem BCP 47, ou um array dessas strings. Para a forma geral e interpretação do argumento locales , acesse: {{jsxref("Global_Objects/Intl", "Página Intl", "#Locale_identification_and_negotiation", 1)}}.

+
+
options
+
Opcional. Um objeto com algumas ou todas as seguintes propriedades: +
    +
  • localeMatcher
    + O algoritmo para comparação de local a ser usado. Os valores possíveis são "lookup" e "best fit"; o padrão é "best fit". Para informações sobre esta opção, veja Intl.
  • +
  • numeric
    + O formato de saída da mensagem. Valores possíveis são: +
      +
    • "always" (padrão, e.g., há 1 dia),
    • +
    • ou "auto" (e.g., ontem). O valor"auto" permite que não seja sempre necessário o uso de valores númericos na saída.
    • +
    +
  • +
  • style
    + O comprimento da mensagem internacionalizada. Valores possíveis são: +
      +
    • "long" (padrão, e.g., in 1 month)
    • +
    • "short" (e.g., in 1 mo.),
    • +
    • ou "narrow" (e.g., in 1 mo.). O estilo narrow pode ser similar ao short em alguns locais.
    • +
    +
  • +
+
+
+ +

Descrição

+ +

Propriedades

+ +
+
{{jsxref("RelativeTimeFormat.prototype", "Intl.RelativeTimeFormat.prototype")}}
+
Permite a adição de propriedades para todos os objetos.
+
+ +

Métodos

+ +
+
{{jsxref("RelativeTimeFormat.supportedLocalesOf", "Intl.RelativeTimeFormat.supportedLocalesOf()")}}
+
Retorna um array contendo os valores disponíveis dentre os que foram passados como parâmetro sem ter de recorrer ao local padrão do ambiente.
+
+ +

Instâncias RelativeTimeFormat 

+ +

Propriedades

+ +

Instâncias RelativeTimeFormat herdam as seguintes propriedades do seu protótipo:

+ +

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat/prototype', 'Properties')}}

+ +

Métodos

+ +

Instâncias RelativeTimeFormat  herdam as seguintes propriedades do seu protótipo:

+ +

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/RelativeTimeFormat/prototype', 'Methods')}}

+ +

Exemplos

+ +

Uso básico do format

+ +

O exemplo a seguir mostra como criar um formatador de tempo relativo usando a língua portuguesa.

+ +
// Crie um formatador de tempo relativo no seu local
+// com os valores padrão sendo passados explicitamente.
+const rtf = new Intl.RelativeTimeFormat("pt", {
+    localeMatcher: "best fit", // outros valores: "lookup"
+    numeric: "always", // outros valores: "auto"
+    style: "long", // outros valores: "short" ou "narrow"
+});
+
+// Formatação de tempo relativa usando valor negativo (-1).
+rtf.format(-1, "day");
+// > "há 1 dia"
+
+// Formatação de tempo relativa usando valor positivo (1).
+rtf.format(1, "day");
+// > "em 1 dia"
+ +

Usando a opção auto

+ +

Se a opção numeric:auto é passada, serão produzidas as strings ontem ou amanhã ao invés de há 1 dia ou em 1 dia. Isso permite que não seja necessário sempre utilizar valores numéricos na saída.

+ +
// Crie um formatador de tempo relativo no seu local
+// com o valor "auto" passado para a propriedade numeric.
+const rtf = new Intl.RelativeTimeFormat("pt", { numeric: "auto" });
+
+// Formatação de tempo relativa usando valor negativo (-1).
+rtf.format(-1, "day");
+// > "ontem"
+
+// Formatação de tempo relativa usando valor positivo (1).
+rtf.format(1, "day");
+// > "amanhã"
+
+ +

Usando formatToParts

+ +

O exemplo a seguir mostra como criar um formatador de tempo relativo que retorna partes formatadas

+ +
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
+
+// Formatação de tempo relativa usando a unidade day.
+rtf.formatToParts(-1, "day");
+// > [{type: "literal", value: "ontem"}]
+
+rtf.formatToParts(100, "day");
+// > [{type: "literal", value: "em "},
+// >  { type: "integer", value: "100", unit: "day" },
+// >  {type: "literal", value: " dias"]
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoEstágioComentário
Intl.RelativeTime proposalStage 3 
+ +

Compatibilidade com Browsers

+ +
+ + +

{{Compat("javascript.builtins.Intl.RelativeTimeFormat")}}

+ +

 

+ +

Veja também

+ + + +

 

+
diff --git a/files/pt-br/web/javascript/reference/global_objects/isfinite/index.html b/files/pt-br/web/javascript/reference/global_objects/isfinite/index.html new file mode 100644 index 0000000000..962bbca928 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/isfinite/index.html @@ -0,0 +1,128 @@ +--- +title: isFinite() +slug: Web/JavaScript/Reference/Global_Objects/isFinite +translation_of: Web/JavaScript/Reference/Global_Objects/isFinite +--- +
{{jsSidebar("Objects")}}
+ +

A função global isFinite() determina se o valor transmitido é um número finito. Se necessário, o parâmetro é primeiro convertido a um número.

+ +

Sintaxe

+ +
isFinite(testValue)
+ +

Parametros

+ +
+
testValue
+
O valor a ser testado para a finitude
+
+ +

Descrição

+ +

isFinite é uma função de nível superior é não é associada com qualquer objeto.

+ +

Você pode usar esta função para determinar se um número é um número finito. A função isFinite examina o número em seu argumento. Se o argumento é NaN, positivo infinito, ou negativo infinito, este método retorna false; de outra forma , ele retorna true.

+ +

Exemplos

+ +
isFinite(Infinity);  // false
+isFinite(NaN);       // false
+isFinite(-Infinity); // false
+
+isFinite(0);         // true
+isFinite(2e64);      // true
+isFinite(null);      // true
+
+
+isFinite("0");       // true, teria sido false com o
+                     // mais robusto Number.isFinite("0")
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}{{Spec2('ES6')}} 
+ +

Browser compatibilidade

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/isnan/index.html b/files/pt-br/web/javascript/reference/global_objects/isnan/index.html new file mode 100644 index 0000000000..5e36f9da27 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/isnan/index.html @@ -0,0 +1,109 @@ +--- +title: isNaN() +slug: Web/JavaScript/Reference/Global_Objects/isNaN +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/isNaN +--- +
{{jsSidebar("Objects")}}
+ +

A função isNAN() determina se o valor é {{jsxref("Global_Objects/NaN", "NaN")}} ou não. Tenha cuidado, o cast em isNaN tem regras para serem observadas. Você pode ficar interessado no {{jsxref("Number.isNaN()")}} que foi definido no ECMAScript 6 ou você pode usar typeof para determinar se o valor é Not-A-Number, NaN.

+ +
{{EmbedInteractiveExample("pages/js/globalprops-isnan.html")}}
+ +

Syntaxe

+ +
isNaN(value)
+ +

Parâmetros

+ +
+
value
+
O valor a ser testado.
+
+ +

Valor retornado

+ +

true se o valor for {{jsxref("NaN")}}; otherwise, false.

+ +

Descrição

+ +

A necessidade da função isNaN

+ +

Ao contrário de todas as outras possibilidades de valores no JavaScript, não é possivel confiar nos operadores de igualdade (== e ===) para determina se o valor é {{jsxref("Global_Objects/NaN", "NaN")}} ou não, porque ambos, NaN == NaN e NaN === NaN, terá como valor de retorno: false. Daí a necessidade da funçao isNAN.

+ +

Origem dos valores NaN

+ +

Os valores NaN são gerados quando operações aritiméticas tem como valores: undefined ou unrepresentable. Como valores, não fazem necessariamente condições de estouro. NaN também resulta da tentativa de coerção para valores numéricos, de valores não numéricos, para que o valor numérico primitivo seja disponível.

+ +

Por exemplo, divida zero por zero e o resultado será NaN , mas se dividir outros números por zero ele não será.

+ +

Comportamento confuso do caso especial

+ +

Desde as primeiras versões da especificação da função isNaN , o seu comportamento para argumentos não numéricos tem sido confuso. Quando o argumento para a função isNaN não é do tipo Number, o valor é primeiro convertido para um número. O valor resultante é em seguida testado para determinar se se trata de {{jsxref("Number.isNaN()")}}. Assim, para os não-números que quando forçados ao tipo numérico resultado em um valor numérico não-NaN válido (particularmente strings vazias e primitivas booleanas, que quando submetidas ao cast dão valores numéricos zero ou um), o "falso" valor retornado pode ser inesperado; a cadeia vazia , por exemplo, é certamente "not-a-number" A confusão decorre do fato de que o termo, " não é um número " , tem um significado específico para os números representados como valores de ponto flutuante IEEE- 794 . A função deve ser interpretada como respondendo à pergunta: "este valor, quando convertido para um valor numérico, um valor IEEE -794 ' not-a-number"?

+ +

A ultima versão do ECMAScript (ES6) contém A função {{jsxref("Number.isNaN()")}}. Number.isNaN(x) será a real forma para testar se x é NaN ou não. Mesmo com Number.isNaN, porém, o significado de NaN continua ser a precisão numérica, e não simplesmente, "não é um número = NaN, not a number". Paralelamente , na expressão Number.isNaN, a expressão (x != x) é a forma mais confiável para testar se a variável x é NaN ou não, assim o resultado não é sujeito ao falso positivo que faz isNaN não ser confiável.

+ +

A polyfill for isNaN would be (the polyfill leverages the unique never-equal-to-itself characteristic of NaN):

+ +
var isNaN = function(value) {
+    var n = Number(value);
+    return n !== n;
+};
+ +

Exemplos

+ +
isNaN(NaN);       // true
+isNaN(undefined); // true
+isNaN({});        // true
+
+isNaN(true);      // false
+isNaN(null);      // false
+isNaN(37);        // false
+
+// strings
+isNaN("37");      // false: "37" is converted to the number 37 which is not NaN
+isNaN("37.37");   // false: "37.37" is converted to the number 37.37 which is not NaN
+isNaN("");        // false: the empty string is converted to 0 which is not NaN
+isNaN(" ");       // false: a string with spaces is converted to 0 which is not NaN
+
+// dates
+isNaN(new Date());                // false
+isNaN(new Date().toString());     // true
+
+// Esse é um falso positivo e é a razão para isNaN não seja totalmente confiável.
+isNaN("blabla")   // true: "blabla" é convertido para número.
+                  // A análise desse número falha e retorna NaN como resultado.
+
+ +

Useful special-case behavior

+ +

There is a more usage oriented way to think of isNaN(): If isNaN(x) returns false, you can use x in an arithmetic expression not making the expression return NaN. If it returns true, x will make every arithmetic expression return NaN. This means that in JavaScript, isNaN(x) == true is equivalent to x - 0 returning NaN (though in JavaScript x - 0 == NaN always returns false, so you can't test for it). Actually, isNaN(x), isNaN(x - 0), isNaN(Number(x)), Number.isNaN(x - 0), and Number.isNaN(Number(x)) always return the same and in JavaScript isNaN(x) is just the shortest possible form to express each of these terms.

+ +

You can use this, for example, to test whether an argument to a function is arithmetically processable (usable "like" a number), or if it's not and you have to provide a default value or something else. This way you can have a function that makes use of the full versatility JavaScript provides by implicitly converting values depending on context.

+ +

Specifications

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-isnan-number', 'isNaN')}}
+ +

Browser compatibility

+ + + +

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

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/iterador/index.html b/files/pt-br/web/javascript/reference/global_objects/iterador/index.html new file mode 100644 index 0000000000..1d00706e61 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/iterador/index.html @@ -0,0 +1,184 @@ +--- +title: Iterator +slug: Web/JavaScript/Reference/Global_Objects/Iterador +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.
+ +

A função Iterator retorna um objeto que implementa o protocolo legado do iterador e itera sobre propriedades enumeraveis do objeto.

+ +

Syntax

+ +
Iterator(object, [keyOnly])
+ +

Parametros

+ +
+
Objeto
+
Objeto que itera sobre as propriedades
+
Se keyOnly for um valor verdadeiro, Iterator.prototype.next retorna somente o nome_da_propriedade.
+
+ +

Description

+ +

Returns Iterator instance that iterates over object. Iterator 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 {{jsxref("Generator")}} instance, it returns object itself.

+ +

Properties

+ +
+
Iterator.prototype[@@iterator]
+
Returns a function that returns iterator object, that conforms to {{jsxref("Iteration_protocols", "iterator protocol", "", 1)}}.
+
+ +

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

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/json/index.html b/files/pt-br/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..52b1fa0a7f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,241 @@ +--- +title: JSON +slug: Web/JavaScript/Reference/Global_Objects/JSON +tags: + - JSON + - JavaScript + - NeedsTranslation + - Object + - Reference + - Référence(2) + - TopicStub + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Resumo

+ +

O Objeto JSON contém métodos para parsing JavaScript Object Notation ({{glossary("JSON")}}) e conversão de valores para JSON. Ele não pode ser chamado ou construído e, além de suas propriedades de dois métodos, ele não possui uma funcionalidade interessante.

+ +

Descrição

+ +

JavaScript Object Notation

+ +

JSON é uma sintaxe para serialização de objetos, matrizes, números, strings, booleanos, e {{jsxref ("null")}}. Baseia-se em sintaxe Javascript, mas é distinta desta: alguns Javascript não são JSON, e alguns JSON não são Javascript. 

+ + + + + + + + + + + + + + + + + + + + + + + +
JavaScript e JSON diferenças
JavaScript tipoJSON diferenças
Objetos e ArraysOs nomes das propriedades devem ser strings com aspas duplas; as vírgulas à direita são proibidas.
NúmerosZeros à esquerda são proibidos; um ponto decimal deve ser seguido por pelo menos um dígito.
Strings +

Apenas um conjunto limitado de caracteres pode ser escapado; certos caracteres de controle são proibidos; o separador de linha Unicode (U+2028) e o separador de parágrafo (U+2029) caracteres são permitidos; strings devem ter aspas duplas.Veja o exemplo a seguir, onde {{jsxref("JSON.parse()")}} funciona bem e um {{jsxref("SyntaxError")}} é lançado ao avaliar o código como JavaScript: var code = '"\u2028\u2029"'; JSON.parse(code); // works fine eval(code); // fails

+
+ +

A sintaxe completa do JSON é a seguinte:

+ +
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
+
+ +

Espaços em branco podem estar presentes em qualquer lugar, exceto dentro de um JSONNumber (números não devem conter espaço em branco) ou JSONString (onde ele é interpretado como o caractere  correspondente na string, ou causaria um erro). O caractere de tabulação (U+0009), retorno de carro (U+000D), retorno de linha (U+000A), e espaço (U+0020) são os únicos caracteres em branco válidos.

+ +

Métodos

+ +
+
{{jsxref("JSON.parse()")}}
+
Analisar uma seqüência como JSON, opcionalmente transformar o valor produzido e suas propriedades, e retornar o valor.
+
{{jsxref("JSON.stringify()")}}
+
Retorna uma string JSON correspondente ao valor especificado, opcionalmente, pode incluir apenas determinados propriedades ou substituir valores de propriedade de acordo com a definição feita pelo usuário.
+
+ +

Polyfill

+ +

O objeto JSON não é suportado em navegadores mais antigos. Você pode contornar este problema inserindo o  seguinte código no início de seus scripts, permitindo o uso de JSON e navegadores sem suporte (como Internet Explorer 6).

+ +

O algoritmo a seguir é uma imitação do objeto nativo JSON:

+ +
if (!window.JSON) {
+  window.JSON = {
+    parse: function(sJSON) { return eval('(' + sJSON + ')'); },
+    stringify: (function () {
+      var toString = Object.prototype.toString;
+      var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; };
+      var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'};
+      var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); };
+      var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g;
+      return function stringify(value) {
+        if (value == null) {
+          return 'null';
+        } else if (typeof value === 'number') {
+          return isFinite(value) ? value.toString() : 'null';
+        } else if (typeof value === 'boolean') {
+          return value.toString();
+        } else if (typeof value === 'object') {
+          if (typeof value.toJSON === 'function') {
+            return stringify(value.toJSON());
+          } else if (isArray(value)) {
+            var res = '[';
+            for (var i = 0; i < value.length; i++)
+              res += (i ? ', ' : '') + stringify(value[i]);
+            return res + ']';
+          } else if (toString.call(value) === '[object Object]') {
+            var tmp = [];
+            for (var k in value) {
+              if (value.hasOwnProperty(k))
+                tmp.push(stringify(k) + ': ' + stringify(value[k]));
+            }
+            return '{' + tmp.join(', ') + '}';
+          }
+        }
+        return '"' + value.toString().replace(escRE, escFunc) + '"';
+      };
+    })()
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-json-object', 'JSON')}}{{Spec2('ES6')}} 
+ +

Navegador compatível

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("8.0")}}{{CompatOpera("10.5")}}{{CompatSafari("4.0")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Baseado em Kangax's compat table.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/json/parse/index.html b/files/pt-br/web/javascript/reference/global_objects/json/parse/index.html new file mode 100644 index 0000000000..ab6f8a8076 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/json/parse/index.html @@ -0,0 +1,123 @@ +--- +title: JSON.parse() +slug: Web/JavaScript/Reference/Global_Objects/JSON/parse +tags: + - JSON + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse +--- +
{{JSRef}}
+ +

O método JSON.parse() analisa uma string JSON, construindo o valor ou um objeto JavaScript descrito pela string. Uma função reviver opcional pode ser fornecida para executar uma transformação no objeto resultante antes de ser retornada.

+ +
{{EmbedInteractiveExample("pages/js/json-parse.html")}}
+ + + +

Sintaxe

+ +
JSON.parse(text[, reviver])
+ +

Parâmetros

+ +
+
text
+
A string para analisar como JSON. Veja o objeto {{jsxref("JSON")}} para uma descrição da sintaxe JSON.
+
reviver {{optional_inline}}
+
Se for uma função, isso prescreve como o valor originalmente produzido pela análise é transformado antes de ser retornado.
+
+ +

Valor retornado

+ +

O {{jsxref("Object")}} correspondente ao text JSON fornecido.

+ +

Exceções

+ +

Lança uma exceção {{jsxref("SyntaxError")}} se a string a ser analisada não for um JSON válido.

+ +

Exemplos

+ +

Usando JSON.parse()

+ +
JSON.parse('{}');              // {}
+JSON.parse('true');            // true
+JSON.parse('"foo"');           // "foo"
+JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
+JSON.parse('null');            // null
+
+ +

Usando o parâmetro reviver

+ +

Se um reviver for especificado, o valor calculado pela análise será transformado antes de ser retornado. Especificamente, o valor computado e todas as suas propriedades (começando com as propriedades mais aninhadas e prosseguindo para o próprio valor original) são executadas individualmente através do reviver. Em seguida, ele é chamado, com o objeto contendo a propriedade sendo processada como this, e com o nome da propriedade como uma string, e o valor da propriedade como argumentos. Se a função  reviver retornar {{jsxref("undefined")}} (ou não retornar nenhum valor, por exemplo, se a execução cair no final da função), a propriedade será excluída do objeto. Caso contrário, a propriedade é redefinida para ser o valor de retorno.

+ +

Se o reviver apenas transformar alguns valores e não outros, certifique-se de retornar todos os valores não transformados como estão, caso contrário, eles serão excluídos do objeto resultante.

+ +
JSON.parse('{"p": 5}', (key, value) =>
+  typeof value === 'number'
+    ? value * 2 // retorna o valor * 2 para números
+    : value     // retorna tudo sem alteração
+);
+
+// { p: 10 }
+
+JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
+  console.log(key); // mostra o nome da propriedade atual, o último é "".
+  return value;     // retorna o valor da propriedade inalterada.
+});
+
+// 1
+// 2
+// 4
+// 6
+// 5
+// 3
+// ""
+
+ +

JSON.parse() não é permitido vírgulas à direta

+ +
// ambos retornarão um SyntaxError
+JSON.parse('[1, 2, 3, 4, ]');
+JSON.parse('{"foo" : 1, }');
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.7.
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos navegadores

+ +
+ + +

{{Compat("javascript.builtins.JSON.parse")}}

+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/json/stringify/index.html b/files/pt-br/web/javascript/reference/global_objects/json/stringify/index.html new file mode 100644 index 0000000000..ca3138e1bf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/json/stringify/index.html @@ -0,0 +1,253 @@ +--- +title: JSON.stringify() +slug: Web/JavaScript/Reference/Global_Objects/JSON/stringify +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify +--- +
{{JSRef("Global_Objects", "JSON")}}
+ +

Resumo

+ +

O método JSON.stringify() converte valores em javascript para uma String  JSON. Esses valores podem ser substituidos especificando a função replacer, ou incluindo somente as propriedades específicas, quando o array do replacer for especificado.

+ +

Sintaxe

+ +
JSON.stringify(valor[, replacer[, espaço]])
+ +

Parâmetros

+ +
+
valor
+
O valor a ser convertido para uma string JSON.
+
replacer {{optional_inline}}
+
Uma função que altera o comportamento do processo de transformação em string, ou um array de objetos {{jsxref("String")}} e {{jsxref("Number")}} que servem como uma lista branca para selecionar as propriedades do objeto valor a ser incluído na string JSON. Se este valor for nulo ou não fornecido, todas as propriedades do objeto são incluídas na string JSON resultante.
+
espaço {{optional_inline}}
+
Um objeto {{jsxref("String")}} ou {{jsxref("Number")}} que é usado para inserir espaço em branco na saída da string JSON para propósito de legibilidade. Se isto for um Number, indica o número de caracteres espaço para usar como espaço em branco; este número é limitado em 10 se for maior que isso. Valores menores que 1 indicam que nenhum espaço deve ser usado. Se isto for uma String, a string (ou os primeiros 10 caracteres da string, se for maior que isso) é usado como espaço em branco. Se esse parâmetro não for fornecido (ou for null), nenhum espaço em branco é usado.
+
+ +

Descrição

+ +

JSON.stringify() converte um valor para uma notação JSON que o representa:

+ + + +
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]'
+
+// Symbols:
+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 'a symbol';
+  }
+});
+// '{}'
+
+ +

O parâmetro replacer parameter

+ +

O parâmetro replacer pode ser uma função ou uma matriz. Como função, são necessários dois parâmetros, a chave e os valores que estão sendo especificados. O objeto no qual a chave foi encontrada é fornecido como substituto desse parâmetro. Inicialmente, ele é chamado com uma chave vazia que representa o objeto que está sendo codificado e, em seguida, é chamado para cada propriedade no objeto ou matriz que está sendo codificada. Ele deve retornar o valor que deve ser adicionado à cadeia JSON, da seguinte maneira:

+ + + +
+

Nota: Você não pode usar a função replacer para remover valoeres em uma array. Se você retornar undefinednull será usado no lugar.

+
+ +

Exemplo de uma função

+ +
function replacer(key, value) {
+  if (typeof value === "string") {
+    return undefined;
+  }
+  return value;
+}
+
+var foo = {fundação: "Mozilla", modelo: "caixa", semana: 45, transporte: "carro", mês: 7};
+var jsonString = JSON.stringify(foo, replacer);
+
+ +

O resultado do JSON é:  {"semana":45,"mês":7}.

+ +

Exemplo em uma array

+ +

Se replacer é usado em uma array, os valores da array indicam os nomes das propriedades no objeto, que devem ser incluídas na sequência JSON resultante.

+ +
JSON.stringify(foo, ['week', 'month']);
+// '{"week":45,"month":7}', only keep "week" and "month" properties
+
+ +

O argumento space 

+ +

O argumento space O argumento pode ser usado para controlar o espaçamento na sequência final. Se for um número, os níveis sucessivos na stringficação serão recuados por esse número de caracteres de espaço (até 10). Se for uma sequência, os níveis sucessivos serão recuados por essa sequência (ou pelos dez primeiros caracteres).

+ +
JSON.stringify({ a: 2 }, null, ' ');
+// '{
+//  "a": 2
+// }'
+
+ +

O uso de um caractere de tabulação imita a aparência padrão de impressão pretty-print.

+ +
JSON.stringify({ uno: 1, dos: 2 }, null, '\t');
+// r:
+// '{
+//     "uno": 1,
+//     "dos": 2
+// }'
+
+ +

Comportamento de toJSON()

+ +

Se um objeto sendo stringificado tiver uma propriedade denominada toJSON() cujo valor é uma função, o método toJSON() personaliza o comportamento da stringificação JSON, em vez de o objeto ser serializado, o valor retornado pelo método toJSON() quando chamado será serializado. Por exemplo:

+ +
var obj = {
+  foo: 'foo',
+  toJSON: function() {
+    return 'bar';
+  }
+};
+JSON.stringify(obj);        // '"bar"'
+JSON.stringify({ x: obj }); // '{"x":"bar"}'
+
+ +

Examplo de uso de JSON.stringify() com localStorage

+ +

No caso em que você deseja armazenar um objeto criado por seu usuário e permitir que ele seja restaurado mesmo após o fechamento do navegador, o exemplo a seguir é um modelo para a aplicabilidade de JSON.stringify():

+ +
+

As funções não são um tipo de dados JSON válido, portanto, elas não funcionarão. Também alguns objetos como {{jsxref("Date")}} será uma string depois {{jsxref("JSON.parse()")}}.

+
+ +
// Criando um exemplo em JSON
+var seção = {
+  'telas': [],
+  'estado': true
+};
+session.screens.push({ 'nome': 'telaA', 'largura': 450, 'altura': 250 });
+session.screens.push({ 'nome': 'telaB', 'largura': 650, 'altura': 350 });
+session.screens.push({ 'nome': 'telaC', 'largura': 750, 'altura': 120 });
+session.screens.push({ 'nome': 'telaD', 'largura': 250, 'altura': 60 });
+session.screens.push({ 'nome': 'telaE', 'largura': 390, 'altura': 120 });
+session.screens.push({ 'nome': 'telaF', 'largura': 1240, 'altura': 650 });
+
+// Convertendo a string JSON em JSON.stringify()
+// Salvando com localStorage no nome da sessão
+localStorage.setItem('seção', JSON.stringify(seção));
+
+// Exemplo de como transformar a String gerada por meio de:
+// JSON.stringify() e salva em localStorage no objeto JSON novamente
+var seçãoRestaurada = JSON.parse(localStorage.getItem('seção'));
+
+// Agora, a variável seçãoRestaurada contém o objeto que foi salvo
+// no localStorage
+console.log(seçãoRestaurada);
+
+ +

Especificações 

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}{{Spec2('ES5.1')}} +

Definição inicial. Implementado em JavaScript 1.7.

+
{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}{{Spec2('ES6')}}
+ +

Compatibilidade em navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
NavegadorChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("8.0")}}{{CompatOpera("10.5")}}{{CompatSafari("4.0")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Baseado na Kangax's compat table.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/clear/index.html b/files/pt-br/web/javascript/reference/global_objects/map/clear/index.html new file mode 100644 index 0000000000..19482e19c8 --- /dev/null +++ b/files/pt-br/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: + - ECMAScript 2015 + - JavaScript + - Mapa + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear +--- +
{{JSRef}}
+ +

O método clear() remove todos os elementos de um objeto Map.

+ +

Sintaxe

+ +
meuMapa.clear();
+ +

Valor retornado

+ +

{{jsxref("undefined")}}.

+ +

Exemplos

+ +

Usando o método clear

+ +
var meuMapa = new Map();
+meuMapa.set('bar', 'baz');
+meuMapa.set(1, 'foo');
+
+meuMapa.size;       // 2
+meuMapa.has('bar'); // true
+
+meuMapa.clear();
+
+meuMapa.size;       // 0
+meuMapa.has('bar')  // false
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatGeckoDesktop("19.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/delete/index.html b/files/pt-br/web/javascript/reference/global_objects/map/delete/index.html new file mode 100644 index 0000000000..f4b0ae0786 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/delete/index.html @@ -0,0 +1,120 @@ +--- +title: Map.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Map/delete +tags: + - ECMAScript 2015 + - JavaScript + - Mapa + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete +--- +
{{JSRef}}
+ +

O método delete() remove o elemento especificado de um objeto Map.

+ +

Sintaxe

+ +
meuMapa.delete(chave);
+ +

Parâmetros

+ +
+
key
+
Obrigatório. A chave do elemento a ser removido do objeto Map.
+
+ +

Valor retornado

+ +

Retorna true se um elemento existia no objeto Map e foi removido, ou false se o elemento não existia.

+ +

Exemplos

+ +

Usando o método delete

+ +
var meuMapa = new Map();
+meuMapa.set('bar', 'foo');
+
+meuMapa.delete('bar'); // Retorna true. Removido com sucesso.
+meuMapa.has('bar');    // Retorna false. O elemento com valor "bar" já não existe mais no mapa.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/entries/index.html b/files/pt-br/web/javascript/reference/global_objects/map/entries/index.html new file mode 100644 index 0000000000..cdea688bf2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/entries/index.html @@ -0,0 +1,120 @@ +--- +title: Map.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Map/entries +tags: + - ECMAScript 2015 + - Iterador + - JavaScript + - Mapa + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries +--- +
{{JSRef}}
+ +

O método entries() retorna um novo objeto Iterador que contém os pares [chave, valor] para cada elemento no objeto Map pela ordem de inserção.

+ +

Sintaxe

+ +
meuMapa.entries()
+ +

Retorna o valor

+ +

Um novo objeto iterador de {{jsxref("Map")}}.

+ +

Exemplos

+ +

Usando entries()

+ +
var meuMap = new Map();
+meuMap.set('0', 'foo');
+meuMap.set(1, 'bar');
+meuMap.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"]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("20") }}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("20")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/foreach/index.html b/files/pt-br/web/javascript/reference/global_objects/map/foreach/index.html new file mode 100644 index 0000000000..1aed37b31c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/foreach/index.html @@ -0,0 +1,146 @@ +--- +title: Map.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Map/forEach +tags: + - ECMAScript 2015 + - JavaScript + - Mapa + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach +--- +
{{JSRef}}
+ +

O método forEach() executa uma função fornecida uma vez para cada par de chave/valor no objeto Map, pela ordem de inserção.

+ +

Sintaxe

+ +
meuMapa.forEach(callback[, thisArg])
+ +

Parâmetros

+ +
+
callback
+
Função a ser executada para cada elemento.
+
thisArg
+
Valor a utilizar como o this quando estiver executando o callback.
+
+ +

Valor de retorno

+ +

{{jsxref("undefined")}}.

+ +

Descrição

+ +

O método forEach executa o callback fornecido uma vez para cada chave existente no mapa. Ele não é invocado para as chaves que foram removidas. No entanto, ele é executado para ítens que estão presentes mesmo com o valor undefined.

+ +

callback é invocado com três argumentos:

+ + + +

Se um parâmetro thisArg for fornecido ao forEach, ele será passado ao callback quando invocado, e será utilizado como o valor de seu this.  De outra forma, o valor undefined será passado como o valor de seu this.  O valor this observável em última instância por callback é determinado de acordo com as regras comuns para determinar o this sendo visto por uma função.

+ +

Cada valor é visitado uma vez, exceto para o caso em que ele foi removido e re-adicionado antes do forEach ter acabado de ser executado. o callback não é invocado para valores removidos antes de serem visitados. Novos valores adicionados antes do forEach ter acabado serão visitados.

+ +

forEach executa a função de callback uma vez para cada elemento no objeto Map; ele não retorna um valor.

+ +

Exemplos

+ +

Imprimindo o conteúdo de um objeto Map

+ +

O código a seguir registra uma linha de log para cada elemento no objeto Map:

+ +
function registrarElementosDoMapa(valor, chave, mapa) {
+    console.log(`m[${chave}] = ${valor}`);
+}
+new Map([['foo', 3], ['bar', {}], ['baz', undefined]]).forEach(registrarElementosDoMapa);
+// logs:
+// "m[foo] = 3"
+// "m[bar] = [object Object]"
+// "m[baz] = undefined"
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatGeckoDesktop("25.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("25.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/get/index.html b/files/pt-br/web/javascript/reference/global_objects/map/get/index.html new file mode 100644 index 0000000000..9a4fde282c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/get/index.html @@ -0,0 +1,76 @@ +--- +title: Map.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/Map/get +tags: + - ECMAScript 2015 + - JavaScript + - Map + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/get +--- +
{{JSRef}}
+ +

O método get() retorna um elemento específico de um objeto de Map.

+ +

Sintaxe

+ +
myMap.get(chave);
+ +

Parâmetros

+ +
+
chave
+
Obrigatório. A chave do elemento para retornar do objeto de Map.
+
+ +

Valor de retorno

+ +

Retorna o elemento associado com a chave específica ou undefined se a chave não puder ser encontrada no objeto de Map.

+ +

Exemplos

+ +

Usando o métodoget

+ +
var myMap = new Map();
+myMap.set('bar', 'foo');
+
+myMap.get('bar');  // Retorna "foo".
+myMap.get('baz');  // Retorna undefined.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Map.get")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/has/index.html b/files/pt-br/web/javascript/reference/global_objects/map/has/index.html new file mode 100644 index 0000000000..88a5c18aff --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/has/index.html @@ -0,0 +1,78 @@ +--- +title: Map.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Map/has +translation_of: Web/JavaScript/Reference/Global_Objects/Map/has +--- +
{{JSRef}}
+ +

O método has() retorna um valor booleano indicando quando um elemento com a chave especificada existe ou não

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-has.html")}}
+ + + +

Sintaxe

+ +
myMap.has(key);
+ +

Parametros

+ +
+
key
+
Necessário. A chave para verificar a presença do elemento no objeto Map.
+
+ +

Valor retornado

+ +
+
Booleano
+
Retorna true se um elemento com a chave especificada existe no objeto Map; caso contrário: false.
+
+ +

Exemplos

+ +

Usando o método has

+ +
var myMap = new Map();
+myMap.set('bar', "foo");
+
+myMap.has('bar');  // retorna true
+myMap.has('foo'); // retorna false
+myMap.has('barz');  // retorna false
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com navegadores

+ + + +

{{Compat("javascript.builtins.Map.has")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/index.html b/files/pt-br/web/javascript/reference/global_objects/map/index.html new file mode 100644 index 0000000000..80ec04af62 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/index.html @@ -0,0 +1,225 @@ +--- +title: Map +slug: Web/JavaScript/Reference/Global_Objects/Map +tags: + - ECMAScript 2015 + - JavaScript + - Map + - Mapa +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef}}
+ +

O objeto Map é um mapa simples de chave/valor. Qualquer valor (objeto e {{Glossary("Primitive", "valores primitivos")}}) pode ser usado como uma chave ou um valor.

+ +

Sintaxe

+ +
new Map([iterable])
+
+ +

Parâmetros

+ +
+
iterable
+
+

Iterable é um Array ou outro objeto iterável cujos elementos são pares de chave-valor (2-element Arrays). Cada par de chave-valor é adicionado ao novo Map. null é tratado como undefined.

+
+
+ +

Descrição

+ +

Um objeto Map itera seus elementos em ordem de inserção — um loop {{jsxref("Statements/for...of", "for...of")}} retorna um array de [chave, valor] para cada iteração.

+ +

Deve-se notar que um Map que é um mapa de um objeto, especialmente, um dicionário de dicionários somente irá mapear apenas para a ordem de inserção -- que é aleatória e não ordenada.

+ +

Igualidade de valores

+ +

A igualdade das chaves é baseada no algoritmo "SameValueZero" (mesmo valor): NaN é considerado igual à NaN (mesmo que NaN !== NaN) e todos os outros valores são considerados iguals de acordo com a semantica do operador ===. Em versões anteriores do rascunho ECMAScript 2015 draft -0 and +0 eram considerados diferentes (mesmo que -0 === +0), isto foi trocado em versões posteriores e foi aplicado no Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) e em uma build recente nightly do Chrome.

+ +

Objetos e mapas comparados

+ +

{{jsxref("Object", "Objects")}} são similares a Maps onde ambos deixam adicionar chaves para valores, recuperar estes valores, apagar chaves, e detectar quando algo foi adicionado em uma chave. Por causa disso (e porque não existem alternativas pré-construidas), Objects historicamente foram usados como Maps; no entanto, existem diferenças importantes entre Objects e Maps que fazem o uso do Map melhor:

+ + + +

Isto não significa que você deve usar Maps em todo lugar, objetos ainda serão usados na maioria dos casos. Instancias de Map são úteis somente para coleções, e você deve considerar adaptar seu codigo onde você usou objetos para isto anteriormente. Objects devem ser usados como registros, com campos e métodos.
+ Se você não tem certeza qual usar, pergunte-se as seguintes questões:

+ + + +

Se você respondeu "sim" em qualquer uma dessas questões, é um sinal de que você quer utilizar um  Map. Se ao invés disto você tem um numero fixo de keys, trabalhe eles individualmente, e faça diferenciação entre o uso deles, você quer um objeto.

+ +

Propriedades

+ +
+
Map.length
+
O tamanho do mapa é 0.
+
{{jsxref("Map.@@species", "get Map[@@species]")}}
+
A função construtora que é usada para criar objetos derivados.
+
{{jsxref("Map.prototype")}}
+
Representa o prototype para o construtor de Map. Permite a adição de propriedades para todos os objetos Map.
+
+ +

Instâncias de Map

+ +

Todas as instancias de Map herdam de {{jsxref("Map.prototype")}}.

+ +

Propriedades

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Map/prototype','Properties')}}

+ +

Métodos

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Map/prototype','Methods')}}

+ +

Exemplos

+ +

Usando o objeto Map

+ +
var myMap = new Map();
+
+var keyString = "uma string",
+    keyObj = {},
+    keyFunc = function () {};
+
+// configurando os valores
+myMap.set(keyString, "valor associado com 'uma string'");
+myMap.set(keyObj, "valor associado com keyObj");
+myMap.set(keyFunc, "valor associado com keyFunc");
+
+myMap.size; // 3
+
+// obtendo os valores
+myMap.get(keyString);    // "valor associado com 'uma string'"
+myMap.get(keyObj);       // "valor associado com keyObj"
+myMap.get(keyFunc);      // "valor associado com keyFunc"
+
+myMap.get("uma string"); // "valor associado com 'uma string'"
+                         // pois keyString === 'uma string'
+myMap.get({});           // undefined, pois keyObj !== {}
+myMap.get(function() {}) // undefined, pois keyFunc !== function () {}
+
+ +

Usando NaN como Map keys

+ +

NaN pode também ser usado como key. Mesmo que NaN não seja igual a ele mesmo (NaN !== NaN)  é true, o seguinte exemplo funciona, porquê NaNs são indistinguíveis uma para o outro:

+ +
var myMap = new Map();
+myMap.set(NaN, "not a number");
+
+myMap.get(NaN); // "not a number"
+
+var otherNaN = Number("foo");
+myMap.get(otherNaN); // "not a number"
+
+ +

Iterando Maps com for..of

+ +

Maps podem ser iterados usando um for..of :

+ +
var myMap = new Map();
+myMap.set(0, "zero");
+myMap.set(1, "um");
+for (var [key, value] of myMap) {
+  console.log(key + " = " + value);
+}
+// 0 = zero
+// 1 = um
+
+for (var key of myMap.keys()) {
+  console.log(key);
+}
+// 0
+// 1
+
+for (var value of myMap.values()) {
+  console.log(value);
+}
+// zero
+// um
+
+for (var [key, value] of myMap.entries()) {
+  console.log(key + " = " + value);
+}
+// 0 = zero
+// 1 = um
+
+ +

Iterando Maps com forEach()

+ +

Maps podem ser iterados usando um forEach():

+ +
myMap.forEach(function(value, key) {
+  console.log(key + " = " + value);
+}, myMap)
+// Mostrará 2 logs; o primeiro com "0 = zero" e o segundo com "1 = um"
+
+ +

Relação com objetos Array

+ +
var kvArray = [["key1", "value1"], ["key2", "value2"]];
+
+// Utiliza o construtor padrão de Map para converter um Array de 2 dimensões de chave-valor Array em um mapa
+var myMap = new Map(kvArray);
+
+myMap.get("key1"); // retorna "value1"
+
+// Utiliza Array.from para converter um mapa em um Array de 2 dimensões de chave-valor
+console.log(Array.from(myMap)) // Mostrará exatamente o mesmo Array que kvArray
+
+// Uma forma mais sucinta de realizar a mesma conversão com o operador spread
+console.log([...myMap]);
+
+// Ou usa o operador spread nas chaves ou valores para o iterador pegar
+// um array com somente as chaves ou valores
+console.log([...myMap.keys()]); // Mostrará ["key1", "key2"]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-map-objects', 'Map')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com os navegadores

+ +

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

+ +

[1] Começando com Chrome 31, a feature ficou disponível sob modificação de configurações. Em chrome://flags, ative a entrada activate “Enable Experimental JavaScript”.

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/keys/index.html b/files/pt-br/web/javascript/reference/global_objects/map/keys/index.html new file mode 100644 index 0000000000..40637e641d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/keys/index.html @@ -0,0 +1,115 @@ +--- +title: Map.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Map/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys +--- +
{{JSRef}}
+ +
O método keys() retorna um novo objeto do tipo Iterator que contem uma chave para cada elemento dentro do objeto Map na ordem que foram inseridos.
+ +

 

+ +

Sintaxe

+ +
myMap.keys()
+ +

Tipo de Retorno

+ +

Um novo objeto {{jsxref("Map")}}.

+ +

Exemplos

+ +

Usando 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
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatGeckoDesktop("20")}}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("20") }}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/map/prototype/index.html new file mode 100644 index 0000000000..7ff81b758a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/prototype/index.html @@ -0,0 +1,135 @@ +--- +title: Map.prototype +slug: Web/JavaScript/Reference/Global_Objects/Map/prototype +tags: + - ECMAScript 2015 + - JavaScript + - Mapa + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +
{{JSRef}}
+ +

A propriedade Map.prototype representa o protótipo para o construtor {{jsxref("Map")}}.

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

Descrição

+ +

Instâncias de {{jsxref("Map")}} herdam de {{jsxref("Map.prototype")}}. Você pode utilizar o objeto protótipo do  construtor para adicionar propriedades ou métodos para todas as instâncias de Map.

+ +

Propriedades

+ +
+
Map.prototype.constructor
+
Retorna a função que criou um protótipo da instância. Isso é a funçao de {{jsxref("Map")}} por padrão.
+
{{jsxref("Map.prototype.size")}}
+
Retorna o número de pares chave/valor no objeto Map.
+
+ +

Metódos

+ +
+
{{jsxref("Map.prototype.clear()")}}
+
Remove todas os pares chave/valor do objeto Map.
+
{{jsxref("Map.delete", "Map.prototype.delete(chave)")}}
+
Remove qualquer valor associado à chave passada e retorna o valor que Map.prototype.has(chave) deveria retornar anteriormente. Map.prototype.has(chave) irá retornar false após tal remoção ser feita.
+
{{jsxref("Map.prototype.entries()")}}
+
Retorna um novo objeto Iterador que contem um array de [chave, valor] para cada elemento no objeto Map pela ordem de inserção.
+
{{jsxref("Map.forEach", "Map.prototype.forEach(callbackFn[, thisArg])")}}
+
Chama callbackFn uma vez para cada par chave/valor presente no objeto Map, pela ordem de inserção. Se um parâmetro thisArg for fornecido para o forEach, ele será utilizado como o valor this para cada callback.
+
{{jsxref("Map.get", "Map.prototype.get(chave)")}}
+
Retorna o valor associado para a chave, ou undefined se esta não existir no objeto Map.
+
{{jsxref("Map.has", "Map.prototype.has(key)")}}
+
Retorna um valor booleano caso um valor tenha sido associado à chave no objeto Map ou não.
+
{{jsxref("Map.prototype.keys()")}}
+
Retorna um novo objeto Iterador que contem as chaves para cada elemento no objeto Map object pela ordem de inserção.
+
{{jsxref("Map.set", "Map.prototype.set(key, value)")}}
+
Configura o valor par a chave no objeto Map. Retorna o objeto Map.
+
{{jsxref("Map.prototype.values()")}}
+
Retorna um novo objeto Iterador que contém os valores para cada elemento no objeto Map pela ordem de inserção.
+
{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}
+
Retorna um novo objeto Iterator que contém um array de [chave, valor] para cada elemento no objeto Map pela ordem de inserção.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-map.prototype', 'Map.prototype')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-map.prototype', 'Map.prototype')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("13") }}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{CompatGeckoMobile("13")}}{{CompatNo}}{{CompatNo}} +

8

+
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/set/index.html b/files/pt-br/web/javascript/reference/global_objects/map/set/index.html new file mode 100644 index 0000000000..e161bb2926 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/set/index.html @@ -0,0 +1,137 @@ +--- +title: Map.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/Map/set +tags: + - ECMAScript 2015 + - JavaScript + - Map + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/set +--- +
{{JSRef}}
+ +

O método set() adiciona ou atualiza um elemento com uma chave e valor específicos a um objeto de Map.

+ +

Sintaxe

+ +
myMap.set(chave, valor);
+ +

Parâmetros

+ +
+
chave
+
Obrigatório. A chave do elemento para adicionar ao objeto de Map.
+
valor
+
Obrigatório. O valor do elemento para adicionar ao objeto de Map.
+
+ +

Valor de retorno

+ +

O objeto de Map.

+ +

Exemplos

+ +

Usando o método set 

+ +
var myMap = new Map();
+
+// adiciona novos elementos ao map
+myMap.set('bar', 'foo');
+myMap.set(1, 'foobar');
+
+// Atualiza um elemento no map
+myMap.set('bar', 'baz');
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ES2015')}} Definição    inicial.
 {{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +

{{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
+
+ +

Notas sobre compatibilidade

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/size/index.html b/files/pt-br/web/javascript/reference/global_objects/map/size/index.html new file mode 100644 index 0000000000..6ce3b4ff7a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/size/index.html @@ -0,0 +1,110 @@ +--- +title: Map.prototype.size +slug: Web/JavaScript/Reference/Global_Objects/Map/size +translation_of: Web/JavaScript/Reference/Global_Objects/Map/size +--- +
{{JSRef}}
+ +

A propriedade de acesso size retorna o número de elementos em um objeto {{jsxref("Map")}}.

+ +

Descrição

+ +

O valor de size é um integer representando quantas entradas o objeto Map tem. Uma function set de acesso ao size é undefined; você não pode trocar esta propriedade.

+ +

Exemplos

+ +

Usando size

+ +
var myMap = new Map();
+myMap.set("a", "alpha");
+myMap.set("b", "beta");
+myMap.set("g", "gamma");
+
+myMap.size // 3
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ES6')}}Definição Inicial.
{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{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 - Notas específicas

+ + + +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/map/values/index.html b/files/pt-br/web/javascript/reference/global_objects/map/values/index.html new file mode 100644 index 0000000000..8bb1e96bca --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/map/values/index.html @@ -0,0 +1,74 @@ +--- +title: Map.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Map/values +tags: + - Iterador + - Mapa + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Map/values +--- +
{{JSRef}}
+ +

O método values() retorna um novo objeto Iterator que contém os valores de cada elemento do objeto Map em ordem de inserção.

+ +
{{EmbedInteractiveExample("pages/js/map-prototype-values.html")}}
+ + + +

Sintaxe

+ +
meuMap.values()
+ +

Valor de retorno

+ +

Um novo objeto iterador do {{jsxref("Map")}}.

+ +

Exemplos

+ +

Usando o values()

+ +
var meuMap = new Map();
+meuMap.set('0', 'foo');
+meuMap.set(1, 'bar');
+meuMap.set({}, 'baz');
+
+var mapIter = myMap.values();
+
+console.log(mapIter.next().value); // "foo"
+console.log(mapIter.next().value); // "bar"
+console.log(mapIter.next().value); // "baz"
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Map.values")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/abs/index.html b/files/pt-br/web/javascript/reference/global_objects/math/abs/index.html new file mode 100644 index 0000000000..1a3658a719 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/abs/index.html @@ -0,0 +1,142 @@ +--- +title: Math.abs() +slug: Web/JavaScript/Reference/Global_Objects/Math/abs +translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Sumário

+ +

A função Math.abs(x) retorna o valor absoluto de um número "x", tal qual:

+ +

Math.abs(x)=|x|={xifx>00ifx=0-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}

+ +

Sintaxe

+ +
var abs = Math.abs(x);
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de Retorno

+ +

O valor absoluto do número passado

+ +

Descrição.

+ +

Por abs ser um método estático de Math, você sempre o usará como Math.abs() ao ínves de usar como método de um objeto Math criado por você. (Math não é um construtor);

+ +

Exemplos

+ +

Comportamento de Math.abs()

+ +

Passando um string não-numérica ou variável indefinida/vazia retorna NaN. Passando null retorna 0.

+ +
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
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
+ +

Compatibilidade de Navegadores

+ +

{{ 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}}
+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/acos/index.html b/files/pt-br/web/javascript/reference/global_objects/math/acos/index.html new file mode 100644 index 0000000000..beea711e08 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/acos/index.html @@ -0,0 +1,139 @@ +--- +title: Math.acos() +slug: Web/JavaScript/Reference/Global_Objects/Math/acos +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos +--- +
{{JSRef}}
+ +

A função Math.acos() retorna o arco cosseno (em radianos de um numero, sendo esse

+ +

x[-1;1],Math.acos(x)=arccos(x)= the unique y[0;π]such thatcos(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ O unico } \; y \in [0; \pi] \, \text{such that} \; \cos(y) = x

+ +

Syntax

+ +
Math.acos(x)
+ +

Parâmetros 

+ +
+
Um numero.
+
+ +

Retorno

+ +

O arco cosseno(em radianos) se o valor passado como parâmetro for entre -1 e 1; caso contrario retornará {{jsxref("NaN")}}.

+ +

Description

+ +

Math.acos() metodo retorna um numero entre 0 e π radians para valores passado como parâmetros entre -1 e 1. Se o valor estiver fora dessa variação será returnado {{jsxref("NaN")}}.

+ +

Porque acos() é um metodo estático, você sempre usará Math.acos() ao invés de criar um Objecto Math(Math não é um construtor).

+ +

Examplos

+ +

Usando 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
+
+ +

Para valores menores que -1 ou maiores que than 1, Math.acos() o método retornrá {{jsxref("NaN")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.acos', 'Math.acos')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade entre navegadores

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/acosh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/acosh/index.html new file mode 100644 index 0000000000..d80acedc5d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/acosh/index.html @@ -0,0 +1,100 @@ +--- +title: Math.acosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/acosh +tags: + - JavaScript + - Math + - Method + - Reference + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh +--- +
{{JSRef}}
+ +

A função Math.acosh() retorna o arco cosseno hiperbólico de um número, onde

+ +

x1,Math.acosh(x)=arcosh(x)= the unique y0such thatcosh(y)=x\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ the unique } \; y \geq 0 \; \text{such that} \; \cosh(y) = x

+ +

Sintaxe

+ +
Math.acosh(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor retornado

+ +

The hyperbolic arc-cosine of the given number. If the number is less than 1, {{jsxref("NaN")}}.

+ +

O arco cosseno hiperbólico do número recebido. Se o número for menor que 1, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Por acosh() ser um método estático de Math, deve-se sempre usá-lo como Math.acosh(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando Math.acosh()

+ +
Math.acosh(-1);  // NaN
+Math.acosh(0);   // NaN
+Math.acosh(0.5); // NaN
+Math.acosh(1);   // 0
+Math.acosh(2);   // 1.3169578969248166
+
+ +

For values less than 1 Math.acosh() returns {{jsxref("NaN")}}.

+ +

Para valores menores que 1, Math.acosh() retornará {{jsxref("NaN")}}.

+ +

Polyfill

+ +

Para todo x1x \geq 1, temos arcosh(x)=ln(x+x2-1)\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right). Dessa maneira, este comportamento pode ser emulado da seguinte maneira:

+ +
Math.acosh = Math.acosh || function(x) {
+  return Math.log(x + Math.sqrt(x * x - 1));
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-math.acosh', 'Math.acosh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.acosh")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/asin/index.html b/files/pt-br/web/javascript/reference/global_objects/math/asin/index.html new file mode 100644 index 0000000000..7738c1e819 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/asin/index.html @@ -0,0 +1,103 @@ +--- +title: Math.asin() +slug: Web/JavaScript/Reference/Global_Objects/Math/asin +tags: + - JavaScript + - Math + - Method + - Método(2) + - Reference + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin +--- +
{{JSRef}}
+ +

 

+ +

A função Math.asin() retorna o arco seno (em radianos) de um número, onde

+ +

x[-1;1],Math.asin(x)=arcsin(x)=o único valor y[-π2;π2]tal que sin(y)=x\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \sin(y) = x

+ +

Sintaxe

+ +
Math.asin(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor retornado

+ +

O arco seno (em radianos) do parâmetro recebido se o parâmetro estiver entre -1 e 1; senão, {{jsxref("NaN")}}.

+ +

Descrição

+ +

O método Math.asin() retorna um valor numérico entre -π2-\frac{\pi}{2} e π2\frac{\pi}{2} radianos para todo x entre -1 e 1. Se o valor de x estiver fora deste intervalo {{jsxref("NaN")}} é retornado.

+ +

Por asin() ser um método estático de Math, deve-se sempre usá-lo como Math.asin(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando 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.5707963267948966 (pi/2)
+Math.asin(2);   // NaN
+
+ +

Para valores menores que -1 ou maiores que 1, Math.asin() retorna {{jsxref("NaN")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.asin', 'Math.asin')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.asin")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/asinh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/asinh/index.html new file mode 100644 index 0000000000..56c7d8a684 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/asinh/index.html @@ -0,0 +1,97 @@ +--- +title: Math.asinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/asinh +tags: + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh +--- +
{{JSRef}}
+ +

A função Math.asinh() retorna o arco-seno hiperbólico de um número, isto é:

+ +

Math.asinh(x)=arsinh(x)= the unique ysuch thatsinh(y)=x\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{o} \; y \; \text{único tal que} \; \sinh(y) = x

+ +
{{EmbedInteractiveExample("pages/js/math-asinh.html")}}
+ + + +

Sintaxe

+ +
Math.asinh(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de retorno

+ +

O arco-seno hiperbólico de um dado número.

+ +

Descrição

+ +

Como asinh() é um métodos estático de Math, você deve sempre chamá-lo como Math.asinh(), ao invés de um método de um objeto Math que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.asinh()

+ +
Math.asinh(1);  // 0.881373587019543
+Math.asinh(0);  // 0
+
+ +

Polyfill

+ +

Como uma solução simples a expressçao\operatorname {arsinh} (x) = \ln \left(x + \sqrt{x^{2} + 1} \right) pode ser usada diretamente para uma emulação grosseira pela seguinte função:

+ +
Math.asinh = Math.asinh || function(x) {
+  if (x === -Infinity) {
+    return x;
+  } else {
+    return Math.log(x + Math.sqrt(x * x + 1));
+  }
+};
+
+ +

Apesar de formalmente correta, ela sofre de algumas problemas relacionadas à computação de ponto flutuante. Resultados precisos precisam de tratamento especial de positivos/negativos e argumentos pequenos/grandes como feitos por exemplo em em glibc ouGNU Scientific Library.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.asinh', 'Math.asinh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilitade de navegadores

+ + + +

{{Compat("javascript.builtins.Math.asinh")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/atan/index.html b/files/pt-br/web/javascript/reference/global_objects/math/atan/index.html new file mode 100644 index 0000000000..91e5b4f52a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/atan/index.html @@ -0,0 +1,104 @@ +--- +title: Math.atan() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan +tags: + - JavaScript + - Math + - Method + - Reference + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan +--- +
{{JSRef}}
+ +

A função Math.atan() retorna a arco tangente (em radianos) de um número, onde

+ +

Math.atan(x)=arctan(x)= the unique y[-π2;π2]such thattan(y)=x\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ the unique } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{such that} \; \tan(y) = x

+ +

Sintaxe

+ +
Math.atan(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor retornado

+ +

O arco tangente (em radianos) do parâmetro recebido.

+ +

Descrição

+ +

O método Math.atan() retorna um valor numérico entre -π2-\frac{\pi}{2} e π2\frac{\pi}{2} radianos.

+ +

Por atan() ser um método estático de Math, deve-se sempre usá-lo como Math.atan(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando Math.atan()

+ +
Math.atan(1);   // 0.7853981633974483
+Math.atan(0);   // 0
+Math.atan(-0);  // -0
+
+Math.atan(Infinity);   //  1.5707963267948966
+Math.atan(-Infinity);  // -1.5707963267948966
+
+// The angle that the line [(0,0);(x,y)] forms with the x-axis in a Cartesian coordinate system
+Math.atan(y / x);
+
+ +

Talvez você queira evitar usar ±Infinity por motivos estéticos. Nesse caso, {{jsxref("Math.atan2()")}} com 0 como segundo parâmentro pode ser uma solução melhor.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado em 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')}} 
{{SpecName('ESDraft', '#sec-math.atan', 'Math.atan')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.atan")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/atan2/index.html b/files/pt-br/web/javascript/reference/global_objects/math/atan2/index.html new file mode 100644 index 0000000000..0c3b534c88 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/atan2/index.html @@ -0,0 +1,150 @@ +--- +title: Math.atan2() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan2 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 +--- +
{{JSRef}}
+ +

A função Math.atan2() retorna o arco tangente do coeficiente dos argumentos passado.

+ +

Sintaxe

+ +
Math.atan2(y, x)
+ +

Parâmentros

+ +
+
y
+
Primeiro numero.
+
x
+
Segundo numero.
+
+ +

Retorno

+ +

O arco tagente do coegiente dos parâmetros

+ +

Descrição

+ +

Math.atan2() método retorna um valor numérico entre -π e π representando o ângulo teta entre (x, y).  Assim indo no sentido anti-horario ao ângulo, medido em radianos, entre o eixo X positivo, e o ponto(x, y).Nota os argumentos para essa função: primeiro o eixo Y(ordenadas) e o eixo X(absissas) como segundo parâmetro.

+ +

A simple diagram showing the angle returned by atan2(y, x)

+ +

Math.atan2()os argumentos são passados separados x e y enquanto no Math.atan() é passado a razão entre esses argumentos.

+ +

Porque atan2() é um método estático de  Math, você sempre usará  Math.atan2(), ao inves de um objeto Math criado (Math não é um construtor).

+ +

Examples

+ +

Using 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 for x > 0.
+Math.atan2(±0, x);                // ±0 for x > 0.
+Math.atan2(-y, ±0);               // -PI/2 for y > 0.
+Math.atan2(y, ±0);                // PI/2 for y > 0.
+Math.atan2(±y, -Infinity);        // ±PI for finite y > 0.
+Math.atan2(±y, +Infinity);        // ±0 for finite y > 0.
+Math.atan2(±Infinity, x);         // ±PI/2 for finite x.
+Math.atan2(±Infinity, -Infinity); // ±3*PI/4.
+Math.atan2(±Infinity, +Infinity); // ±PI/4.
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.atan2', 'Math.atan2')}}{{Spec2('ESDraft')}} 
+ +

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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/atanh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/atanh/index.html new file mode 100644 index 0000000000..0ccb86d421 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/atanh/index.html @@ -0,0 +1,99 @@ +--- +title: Math.atanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/atanh +tags: + - JavaScript + - Math + - Method + - Reference + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh +--- +
{{JSRef}}
+ +

A função Math.atanh() retorna o arco tangente hiperbólico de um número, onde

+ +

x(-1,1),Math.atanh(x)=arctanh(x)= the unique ysuch thattanh(y)=x\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ the unique } \; y \; \text{such that} \; \tanh(y) = x

+ +

Sintaxe

+ +
Math.atanh(x)
+ +

Parâmetros

+ +
+
x
+
O número.
+
+ +

Valor retornado

+ +

O arco tangente hiperbólico do parâmetro recebido.

+ +

Descrição

+ +

Por atanh() ser um método estático de Math, deve-se sempre usá-lo como Math.atanh(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando 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
+
+ +

For values greater than 1 or less than -1, {{jsxref("NaN")}} is returned.

+ +

Para valores menores que -1 ou maiores que 1, {{jsxref("NaN")}} é retornado.

+ +

Polyfill

+ +

Para |x|<1\left|x\right| < 1, temos artanh(x)=12ln(1+x1-x)\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right), esse comportamento pode ser emulado com a seguinte função:

+ +
Math.atanh = Math.atanh || function(x) {
+  return Math.log((1+x)/(1-x)) / 2;
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-math.atanh', 'Math.atanh')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-math.atanh', 'Math.atanh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade no navegadores

+ + + +

{{Compat("javascript.builtins.Math.atanh")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/cbrt/index.html b/files/pt-br/web/javascript/reference/global_objects/math/cbrt/index.html new file mode 100644 index 0000000000..6c7ffcdf42 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/cbrt/index.html @@ -0,0 +1,97 @@ +--- +title: Math.cbrt() +slug: Web/JavaScript/Reference/Global_Objects/Math/cbrt +tags: + - JavaScript + - Math + - Raiz Cúbica + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt +--- +
{{JSRef}}
+ +

A função Math.cbrt() retorna a raiz cúbica de um número, isto é

+ +

Math.cbrt(x)=x3 = y, tal quey3=x\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{the unique} \; y \; \text{such that} \; y^3 = x

+ +

Sintaxe

+ +
Math.cbrt(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de retorno

+ +

A raiz cúbica do número fornecido.

+ +

Descrição

+ +

Porque cbrt() é um método estático de Math, você sempre irá utilizar como Math.cbrt(), ao invés de um método de um objeto Math que você tenha criado (Math não é um construtor).

+ +

Exemplos

+ +

Utilizando Math.cbrt()

+ +
Math.cbrt(NaN); // NaN
+Math.cbrt(-1); // -1
+Math.cbrt(-0); // -0
+Math.cbrt(-Infinity); // -Infinity
+Math.cbrt(0); // 0
+Math.cbrt(1); // 1
+Math.cbrt(Infinity); // Infinity
+Math.cbrt(null); // 0
+Math.cbrt(2);  // 1.2599210498948734
+
+ +

Polyfill

+ +

Para todo x0x \geq 0, temos x3=x1/3\sqrt[3]{x} = x^{1/3}, então isto pode ser simulado pela seguinte função:

+ +
if (!Math.cbrt) {
+  Math.cbrt = function(x) {
+    var y = Math.pow(Math.abs(x), 1/3);
+    return x < 0 ? -y : y;
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-math.cbrt', 'Math.cbrt')}}{{Spec2('ES6')}}Definição inicial
{{SpecName('ESDraft', '#sec-math.cbrt', 'Math.cbrt')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade

+ + + +

{{Compat("javascript.builtins.Math.cbrt")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/ceil/index.html b/files/pt-br/web/javascript/reference/global_objects/math/ceil/index.html new file mode 100644 index 0000000000..68e48daa87 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/ceil/index.html @@ -0,0 +1,210 @@ +--- +title: Math.ceil() +slug: Web/JavaScript/Reference/Global_Objects/Math/ceil +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumo

+ +

A função Math.ceil(x) retorna o menor número inteiro maior ou igual a "x".

+ +

Sintaxe

+ +
Math.ceil(x) 
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de retorno

+ +

O menor inteiro maior ou igual ao número fornecido.

+ +

Descrição

+ +

Por ceil ser um método estático de Math, você sempre usará como Math.ceil(), e não como um método do objeto Math que você criou.

+ +

Exemplos

+ +

Usando Math.ceil()

+ +

O exemplo a seguir mostra um exemplo de uso de 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
+ +

Ajuste decimal

+ +
// Closure
+(function(){
+
+	/**
+	 * Decimal adjustment of a number.
+	 *
+	 * @param	{String}	type	The type of adjustment.
+	 * @param	{Number}	value	The number.
+	 * @param	{Integer}	exp		The exponent (the 10 logarithm of the adjustment base).
+	 * @returns	{Number}			The adjusted value.
+	 */
+	function decimalAdjust(type, value, exp) {
+		// If the exp is undefined or zero...
+		if (typeof exp === 'undefined' || +exp === 0) {
+			return Math[type](value);
+		}
+		value = +value;
+		exp = +exp;
+		// If the value is not a number or the exp is not an integer...
+		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+			return NaN;
+		}
+		// Shift
+		value = value.toString().split('e');
+		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+		// Shift back
+		value = value.toString().split('e');
+		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+	}
+
+	// Decimal round
+	if (!Math.round10) {
+		Math.round10 = function(value, exp) {
+			return decimalAdjust('round', value, exp);
+		};
+	}
+	// Decimal floor
+	if (!Math.floor10) {
+		Math.floor10 = function(value, exp) {
+			return decimalAdjust('floor', value, exp);
+		};
+	}
+	// Decimal ceil
+	if (!Math.ceil10) {
+		Math.ceil10 = function(value, exp) {
+			return decimalAdjust('ceil', value, exp);
+		};
+	}
+
+})();
+
+// Round
+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
+// Floor
+Math.floor10(55.59, -1); // 55.5
+Math.floor10(59, 1); // 50
+Math.floor10(-55.51, -1); // -55.6
+Math.floor10(-51, 1); // -60
+// Ceil
+Math.ceil10(55.51, -1); // 55.6
+Math.ceil10(51, 1); // 60
+Math.ceil10(-55.59, -1); // -55.5
+Math.ceil10(-59, 1); // -50
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition. implementado em JavaScript 1.0PadrãoDefinição inicial.
{{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}{{Spec2('ES6')}}
+ +

Compatibilidade dos Browsers

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/clz32/index.html b/files/pt-br/web/javascript/reference/global_objects/math/clz32/index.html new file mode 100644 index 0000000000..c997e014ec --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/clz32/index.html @@ -0,0 +1,179 @@ +--- +title: Math.clz32() +slug: Web/JavaScript/Reference/Global_Objects/Math/clz32 +tags: + - JavaScript + - Math + - sintaxe Math.clz32() +translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32 +--- +
{{JSRef}}
+ +

A função Math.clz32 () retorna o número de zero bit inicial na representação binária de 32 bits de um número.

+ +
{{EmbedInteractiveExample("pages/js/math-clz32.html")}}
+ + + +

Sintaxe

+ +
Math.clz32(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de retorno

+ +

O número de zero bits à esquerda na representação binária de 32 bits do número fornecido.

+ +

Descrição

+ +

"clz32" é short paraCountLeadingZeroes32.

+ +

Se x não for um número, ele será convertido em um número primeiro e depois convertido em um número inteiro não assinado de 32 bits.

+ +

Se o número inteiro não assinado de 32 bits convertido for 0, retorne 32, porque todos os bits são 0.

+ +

Essa função é particularmente útil para sistemas que são compilados para JS, como o Emscripten.

+ +

Exemplos

+ +

Usando Math.clz32()

+ +
Math.clz32(1);           // 31
+Math.clz32(1000);        // 22
+Math.clz32();            // 32
+
+var stuff = [NaN, Infinity, -Infinity, 0, -0, null, undefined, 'foo', {}, []];
+stuff.every(n => Math.clz32(n) == 32);  // true
+
+Math.clz32(true);        // 31
+Math.clz32(3.5);         // 30
+ +

Contagem dos principais e mais além

+ +

No momento, não há Math.clon para "Count Leading Ones" (chamado "clon", não "clo", porque "clo" e "clz" são muito semelhantes, especialmente para pessoas que não falam inglês). No entanto, uma função clon pode ser criada facilmente, invertendo os bits de um número e passando o resultado para Math.clz32. Fazer isso funcionará porque o inverso de 1 é 0 e vice-versa. Assim, a inversão dos bits inverterá a quantidade medida de 0s (de Math.clz32), fazendo com que Math.clz32 conte o número de unidades em vez de contar o número de zeros.

+ +

Considere a seguinte palavra de 32 bits:

+ +
var a = 32776;   // 00000000000000001000000000001000 (16 zeros à esquerda)
+Math.clz32(a);   // 16
+
+var b = ~32776;  // 11111111111111110111111111110111 (32776 inverso, 0 zeros à esquerda)
+Math.clz32(b);   // 0 (isso é igual a quantos líderes existem em um)
+ +

Usando essa lógica, uma função clon pode ser criada da seguinte maneira:

+ +
var clz = Math.clz32;
+function clon(integer){
+    return clz(~integer);
+}
+
+ +

Além disso, essa técnica pode ser estendida para criar funções inumeráveis "Contagem de zeros à direita" e funções de contagem de zeros, como mostrado abaixo. A função ctrz abaixo preenche todos os bits altos com o bit mais baixo preenchido e depois os anula para apagar todos os bits mais altos definidos, de modo que o clz possa ser usado.

+ +
var clz = Math.clz32;
+function ctrz(integer){ // contar zeros à direita
+   // 1. preencha todos os bits mais altos após o primeiro
+    integer |= integer << 16;
+    integer |= integer << 8;
+    integer |= integer << 4;
+    integer |= integer << 2;
+    integer |= integer << 1;
+// 2. Agora, a inversão dos bits revela os bits mais baixos
+    return 32 - clz(~integer) |0; // `|0`garante coerção inteira
+}
+function ctron(integer){ // conta os que estão à direita
+     // Nenhum operador shift-fill-in-with-ones está disponível em
+     // JavaScript, portanto, o código abaixo é o mais rápido
+    return ctrz(~integer);
+/ * Implementação alternativa para fins demonstrativos:
+        // 1. apaga todos os bits mais altos após o primeiro zero
+       integer &= (integer << 16) | 0xffff;
+       integer &= (integer << 8 ) | 0x00ff;
+       integer &= (integer << 4 ) | 0x000f;
+       integer &= (integer << 2 ) | 0x0003;
+       integer &= (integer << 1 ) | 0x0001;
+      // 2. Agora, reverter os bits revela os zeros mais baixos
+       return 32 - clon(~integer) |0;
+    */
+}
+
+ +

Transforme essas funções auxiliares no módulo ASM.JS; então, você tem uma verdadeira obra-prima de desempenho. Situações como essas são exatamente para o que o ASM.JS foi projetado.

+ +
var countTrailsMethods = (function(stdlib, foreign, heap) {
+    "use asm";
+    var clz = stdlib.Math.clz32;
+    function ctrz(integer) { // count trailing zeros
+        integer = integer | 0; // coerce to an integer
+// 1. preencha todos os bits mais altos após o primeiro
+// ASM js, por algum motivo, não permite ^ =, & = ou | =
+        integer = integer | (integer << 16);
+        integer = integer | (integer << 8);
+        integer = integer | (integer << 4);
+        integer = integer | (integer << 2);
+        integer = integer | (integer << 1);
+      // 2. Agora, a inversão dos bits revela os bits mais baixos
+        return 32 - clz(~integer) |0;
+    }
+    function ctron(integer) { //contar os últimos
+        integer = integer | 0; // coagir a um número inteiro
+        return ctrz(~integer) |0;
+    }
+// infelizmente, o ASM.JS exige objetos compactos lentos:
+    return {a: ctrz, b: ctron};
+})(window, null, null);
+var ctrz = countTrailsMethods.a;
+var ctron = countTrailsMethods.b;
+ +

Polyfill-"Trecho de código"

+ +

O seguinte polyfill é o mais eficiente.

+ +
if (!Math.clz32) Math.clz32 = (function(log, LN2){
+  return function(x) {
+ // Seja n ToUint32 (x).
+     // Seja p o número de zero bits iniciais em
+     // a representação binária de 32 bits de n.
+     // Retornar p.
+    var asUint = x >>> 0;
+    if (asUint === 0) {
+      return 32;
+    }
+    return 31 - (log(asUint) / LN2 | 0) |0; // the "| 0" acts like math.floor
+  };
+})(Math.log, Math.LN2);
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-math.clz32', 'Math.clz32')}}
+ +

Compatibilidade do navegador

+ + + +

{{Compat("javascript.builtins.Math.clz32")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/cos/index.html b/files/pt-br/web/javascript/reference/global_objects/math/cos/index.html new file mode 100644 index 0000000000..c0b0662477 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/cos/index.html @@ -0,0 +1,102 @@ +--- +title: Math.cos() +slug: Web/JavaScript/Reference/Global_Objects/Math/cos +tags: + - Geometria + - JavaScript + - Matemática + - Math + - Trigonometría + - cos + - cosseno + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos +--- +
{{JSRef}}
+ +

 A função Math.cos() ,que é estatica, retorna o {{interwiki("wikipedia", "cosseno")}} de um ângulo, que deve estar em {{interwiki("wikipedia", "radianos")}}. A expressão é length adjacent length hypotenuse . 

+ +
{{EmbedInteractiveExample("pages/js/math-cos.html")}}
+ + + +

Sintaxe

+ +
Math.cos(x)
+ +

Parâmetros

+ +
+
x
+
Ângulo em radianos
+
+ +

Valor de retorno

+ +

O cosseno do número: x

+ +

Descrição

+ +

Math.cos() é um método que retorna um número entre -1 e 1, que representa o cosseno de um ângulo.

+ +

Já que cos() é um método estático de Math, você sempre deve usar Math.cos(), ao invez de criar um objeto de Math (Math não tem construtor).

+ +

Exemplos

+ +

Usando Math.cos()

+ +
Math.cos(0);           // 1
+Math.cos(1);           // 0.5403023058681398
+
+Math.cos(Math.PI);     // -1
+Math.cos(2 * Math.PI); // 1
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.cos', 'Math.cos')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos Browsers

+ + + +

{{Compat("javascript.builtins.Math.cos")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/cosh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/cosh/index.html new file mode 100644 index 0000000000..f6e0671abd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/cosh/index.html @@ -0,0 +1,88 @@ +--- +title: Math.cosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/cosh +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cosh +--- +
{{JSRef}}
+ +

A função Math.cosh() retorna o cosseno hiperbólico de um número, que pode ser expressada usando {{jsxref("Math.E", "constante e", "", 1)}}:

+ +

Math.cosh(x)=ex+e-x2\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2}

+ +
{{EmbedInteractiveExample("pages/js/math-cosh.html")}}
+ + + +

Sintaxe

+ +
Math.cosh(x)
+ +

Parâmetros

+ +
+
x
+
  Um número.
+
+ +

Valor de retorno

+ +

O cosseno hiperbólico do número dado.

+ +

Descrição

+ +

Por cosh() ser um método estático de Math, sempre utilize como Math.cosh(), ao invés de como um método de um objeto Math que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.cosh()

+ +
Math.cosh(0);  // 1
+Math.cosh(1);  // 1.5430806348152437
+Math.cosh(-1); // 1.5430806348152437
+
+ +

Polyfill

+ +

Isto pode ser emulado com a ajuda da função {{jsxref("Math.exp()")}}:

+ +
Math.cosh = Math.cosh || function(x) {
+  return (Math.exp(x) + Math.exp(-x)) / 2;
+}
+
+ +

ou usando apenas uma chamada da função {{jsxref("Math.exp()")}}:

+ +
Math.cosh = Math.cosh || function(x) {
+  var y = Math.exp(x);
+  return (y + 1 / y) / 2;
+};
+
+ +

Especificações

+ + + + + + + + + + +
Especificações
{{SpecName('ESDraft', '#sec-math.cosh', 'Math.cosh')}}
+ +

Compatibilidade com Navegadores

+ + + +

{{Compat("javascript.builtins.Math.cosh")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/e/index.html b/files/pt-br/web/javascript/reference/global_objects/math/e/index.html new file mode 100644 index 0000000000..36b01b0430 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/e/index.html @@ -0,0 +1,86 @@ +--- +title: Math.E +slug: Web/JavaScript/Reference/Global_Objects/Math/E +tags: + - JavaScript + - Math + - Propriedade + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/E +--- +
{{JSRef}}
+ +

A propriedade Math.E representa a base dos logarítmos naturais, aproximadamente 2.718.

+ +

Math.E=e2.718\mathtt{\mi{Math.E}} = e \approx 2.718

+ +
{{EmbedInteractiveExample("pages/js/math-e.html")}}
+ + + +
 
+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

Como E é uma propriedade estática de Math, sempre use-a como Math.E, ao invés de uma propriedade de um objeto Math que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.E

+ +

A seguinte função retorna o valor de e:

+ +
function getNapier() {
+  return Math.E;
+}
+
+getNapier(); // 2.718281828459045
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.e', 'Math.E')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Math.E")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/exp/index.html b/files/pt-br/web/javascript/reference/global_objects/math/exp/index.html new file mode 100644 index 0000000000..279cb1b60b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/exp/index.html @@ -0,0 +1,109 @@ +--- +title: Math.exp() +slug: Web/JavaScript/Reference/Global_Objects/Math/exp +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp +--- +
+ {{JSRef("Global_Objects", "Math")}}
+

Sumário

+

A função Math.exp() retorna ex, onde x é o argumento, e e é a Constante de Euler, a base dos logaritmos naturais

+

Síntaxe

+
Math.exp(x)
+

Parâmetros

+
+
+ x
+
+ Um número.
+
+

Descrição

+

Pelo fato de exp ser um método estático de Math, você sempre utiliza-o como Math.exp(), não como um método do objeto Math que você criou.

+

Exemplos

+

Exemplo: Usando Math.exp

+
Math.exp(-1); // 0.36787944117144233
+Math.exp(0);  // 1
+Math.exp(1);  // 2.718281828459045
+

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
1ª Edição ECMAScript 1st Edition. Implementado em JavaScript 1.0PadrãoDefinição Inicial.
{{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}{{Spec2('ES6')}} 
+

Compatibilidade de navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+

Veja também

+ diff --git a/files/pt-br/web/javascript/reference/global_objects/math/expm1/index.html b/files/pt-br/web/javascript/reference/global_objects/math/expm1/index.html new file mode 100644 index 0000000000..0dfe3aab94 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/expm1/index.html @@ -0,0 +1,80 @@ +--- +title: Math.expm1() +slug: Web/JavaScript/Reference/Global_Objects/Math/expm1 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 +--- +
{{JSRef}}
+ +

The Math.expm1() function returns ex - 1, where x is the argument, and {{jsxref("Math.E", "e", "", 1)}} the base of the natural logarithms.

+ +
{{EmbedInteractiveExample("pages/js/math-expm1.html")}}
+ + + +

Syntax

+ +
Math.expm1(x)
+ +

Parameters

+ +
+
x
+
Um número.
+
+ +

Return value

+ +

Um número representando ex - 1, onde e é {{jsxref("Math.E", "Euler's number", "", 1)}} e x ié o argumento.

+ +

Description

+ +

Porque expm1() é um método estático de is Math, você sempre o usurá como Math.expm1(), do que como um método de um objeto Math que você criou (Math não é um contrutor).

+ +

Polyfill

+ +

This can be emulated with the help of the {{jsxref("Math.exp()")}} function:

+ +
Math.expm1 = Math.expm1 || function(x) {
+  return Math.exp(x) - 1;
+};
+
+ +

Examples

+ +

Using Math.expm1()

+ +
Math.expm1(-1); // -0.6321205588285577
+Math.expm1(0);  // 0
+Math.expm1(1);  // 1.718281828459045
+
+ +

Specifications

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-math.expm1', 'Math.expm1')}}
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.expm1")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/floor/index.html b/files/pt-br/web/javascript/reference/global_objects/math/floor/index.html new file mode 100644 index 0000000000..13dc5a0638 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/floor/index.html @@ -0,0 +1,199 @@ +--- +title: Math.floor() +slug: Web/JavaScript/Reference/Global_Objects/Math/floor +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumo

+ +

A função Math.floor(x) retorna o menor número inteiro dentre o número "x".

+ +

Sintaxe

+ +
Math.floor(x) 
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Descrição

+ +

Por floor ser um método estático de Math, você sempre irá usar como Math.floor(),e não como método do objeto Math que você criou.

+ +

Exemplos

+ +

Exemplo: Usando Math.floor

+ +
Math.floor( 45.95); //  45
+Math.floor(-45.95); // -46
+
+ +

Exemplo: Ajuste Decimal

+ +
// Closure
+(function(){
+
+	/**
+	 * Decimal adjustment of a number.
+	 *
+	 * @param	{String}	type	The type of adjustment.
+	 * @param	{Number}	value	The number.
+	 * @param	{Integer}	exp		The exponent (the 10 logarithm of the adjustment base).
+	 * @returns	{Number}			The adjusted value.
+	 */
+	function decimalAdjust(type, value, exp) {
+		// If the exp is undefined or zero...
+		if (typeof exp === 'undefined' || +exp === 0) {
+			return Math[type](value);
+		}
+		value = +value;
+		exp = +exp;
+		// If the value is not a number or the exp is not an integer...
+		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+			return NaN;
+		}
+		// Shift
+		value = value.toString().split('e');
+		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+		// Shift back
+		value = value.toString().split('e');
+		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+	}
+
+	// Decimal round
+	if (!Math.round10) {
+		Math.round10 = function(value, exp) {
+			return decimalAdjust('round', value, exp);
+		};
+	}
+	// Decimal floor
+	if (!Math.floor10) {
+		Math.floor10 = function(value, exp) {
+			return decimalAdjust('floor', value, exp);
+		};
+	}
+	// Decimal ceil
+	if (!Math.ceil10) {
+		Math.ceil10 = function(value, exp) {
+			return decimalAdjust('ceil', value, exp);
+		};
+	}
+
+})();
+
+// Round
+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
+// Floor
+Math.floor10(55.59, -1); // 55.5
+Math.floor10(59, 1); // 50
+Math.floor10(-55.51, -1); // -55.6
+Math.floor10(-51, 1); // -60
+// Ceil
+Math.ceil10(55.51, -1); // 55.6
+Math.ceil10(51, 1); // 60
+Math.ceil10(-55.59, -1); // -55.5
+Math.ceil10(-59, 1); // -50
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition. Implemented in JavaScript 1.0StandardInitial definition.
{{SpecName('ES5.1', '#sec-15.8.2.9', 'Math.floor')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.floor', 'Math.floor')}}{{Spec2('ES6')}} 
+ +

Compatibilidade dos 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() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/hypot/index.html b/files/pt-br/web/javascript/reference/global_objects/math/hypot/index.html new file mode 100644 index 0000000000..b83197c861 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/hypot/index.html @@ -0,0 +1,115 @@ +--- +title: Math.hypot() +slug: Web/JavaScript/Reference/Global_Objects/Math/hypot +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot +--- +
{{JSRef}}
+ +

A função Math.hypot() retorna a raiz quadrada do somátorio do quadrado de seus parâmetros, ou seja

+ +

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}

+ +

Sintaxe

+ +
Math.hypot([value1[, value2[, ...]]])
+ +

Parâmetros

+ +
+
value1, value2, ...
+
Números.
+
+ +

Valor retornado

+ +

A raiz quadrada do somátorio do quadrado dos parâmetros recebidos. Se um ou mais argumentos não puderem ser convertidos para um número, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Para calcular a hipotenusa de um triângulo retângulo, ou o módulo de um número complexo, é usada a fórmula Math.sqrt(v1*v1 + v2*v2) (v12+v22\sqrt{v1^2 + v2^2}) onde v1 e v2 são, ou os lados de um triângulo, ou a parte real e a imaginário de um número complexo. Para calcular a distância entre duas ou mais dimensões, basta adicionar mais exponenciações dentro da raiz quadrada, por exemplo Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4) (v12+v22+v32+v42\sqrt{v1^2 + v2^2 + v3^2 + v4^2}).

+ +

A função Math.hypot() torna esta tarefa mais rápida e mais fácil, basta executar Math.hypot(v1, v2) , or Math.hypot(v1, v2, v3, v4, ...) .

+ +

Dessa maneira também se evita problemas se a magnitude dos seus número for muito grande. O maio número que se pode representar em um double float em JavasScript é Number.MAX_VALUE = 1.797...e+308. Se os seu números são maior que 1e154, calcular o quadrado deles resultará em Infinity, estragando os seus resultados. Por exemplo, Math.sqrt(1e200*1e200 + 1e200*1e200) = Infinity. Se você usar a função Math.hypot(), você receberá uma resposta aceitável: Math.hypot(1e200, 1e200) = 1.4142...e+200. Isto também é verdade para número muito pequenos. Math.sqrt(1e-200*1e-200 + 1e-200*1e-200) = 0, mas Math.hypot(1e-200, 1e-200) = 1.4142...e-200 é uma boa resposta.

+ +
+

Por hypot() ser um método estático de Math, deve-se sempre usá-lo como Math.hypot(), e não como um método de um objeto Math que você criou.

+
+ +

Se nenhum parâmetro for passado, o resultado é +0.

+ +

Se um ou mais parâmetros não puderem ser convertidos para um número, o resultado será {{jsxref("NaN")}}.

+ +

Com apenas um parâmetro, Math.hypot() se comporta como Math.abs().

+ +

Examples

+ +

Usando 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, the same as Math.abs(-3)
+
+ +

Polyfill

+ +

O comportamento de Math.hypot() pode ser emulado com a seguinte função:

+ +
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);
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-math.hypot', 'Math.hypot')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade no navegador

+ + + +

{{Compat("javascript.builtins.Math.hypot")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/index.html b/files/pt-br/web/javascript/reference/global_objects/math/index.html new file mode 100644 index 0000000000..47bbf2f3cb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/index.html @@ -0,0 +1,208 @@ +--- +title: Math +slug: Web/JavaScript/Reference/Global_Objects/Math +tags: + - JavaScript + - Math + - NeedsTranslation + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Math +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Math é um objeto embutido que tem propriedades e métodos para constantes e funções matemáticas. Não é um objeto de função.

+ +

Descrição

+ +

Ao contrário de outros objetos globais, Math não é um construtor. Todas as propriedades e métodos de Math são estáticos. Você pode referenciar a constante PI como Math.PI e você pode chamar a função de seno como Math.sin(x), onde x  é o argumento do método. Constantes são definidas com a precisão total de números reais em JavaScript.

+ +

Propriedades

+ +
+
{{jsxref("Math.E")}}
+
Constante de Euler e base dos logaritmos naturais, aproximadamente 2.718.
+
{{jsxref("Math.LN2")}}
+
Logaritmo natural de 2, aproximadamente 0.693.
+
{{jsxref("Math.LN10")}}
+
Logaritmo natural de 10, aproximadamente 2.303.
+
{{jsxref("Math.LOG2E")}}
+
Logaritmo de E na base 2, aproximadamente 1.443.
+
{{jsxref("Math.LOG10E")}}
+
Logaritmo de E na base 10, aproximadamente 0.434.
+
{{jsxref("Math.PI")}}
+
Relação entre a circunferência de um círculo e o seu diâmetro, aproximadamente 3.14159.
+
{{jsxref("Math.SQRT1_2")}}
+
Raiz quadrada de 1/2; Equivale a 1 dividido pela raiz quadrada de 2, aproximadamente 0.707.
+
{{jsxref("Math.SQRT2")}}
+
Raiz quadrada de 2, aproximadamente 1.414.
+
+ +
{{ jsOverrides("Object", "properties", "E", "LN2", "LN10", "LOG2E", "LOG10E", "PI", "SQRT1_2", "SQRT") }}
+ +

Métodos

+ +
Note que as funções trigonométricas (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) recebem ou retornam ângulos em radianos. Divida por (Math.PI/180) para converter radianos em graus, ou multiplique por esse valor para fazer a conversão inversa.
+ +
+
{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}
+
Retorna o módulo, ou valor absoluto, de um número (|x||x|).
+
{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}
+
Retorna o arco-coseno de um número (arccosx\arccos{x}).
+
{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}} {{experimental_inline}}
+
Retorna o arco-coseno hiperbólico de um número.
+
{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}
+
Retorna o arco-seno de um número (arcsinx\arcsin{x}).
+
{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}} {{experimental_inline}}
+
Retorna o arco-seno hiperbólico de um número.
+
{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}
+
Retorna o arco-tangente de um número (arctanx\arctan{x}).
+
{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}} {{experimental_inline}}
+
Retorna o arco-tangente hiperbólico de um número (arctanx\arctan{x}).
+
{{jsxref("Global_Objects/Math/atan2", "Math.atan2(x, y)")}}
+
Retorna o arco-tangente do quociente de seus argumentos.
+
{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}} {{experimental_inline}}
+
Retorna a raiz cúbica de um número (x3\root{3}{x}).
+
{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}
+
Retorna o menor inteiro que é maior ou igual a um número.
+
{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}
+
Retorna o coseno de um número (cosx\cos{x}).
+
{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}} {{experimental_inline}}
+
Retorna o coseno hiperbólico de um número .
+
{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}
+
Retorna exe^x, onde x é o argumento, e ee é a constante de Euler (2.718...), a base do logaritmo natural.
+
{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}} {{experimental_inline}}
+
Retorna ex-1e^x-1.
+
{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}
+
Retorna o maior inteiro que é menor ou igual a um número.
+
{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}} {{experimental_inline}}
+
Retorna a mais próxima representação de ponto flutuante de precisão-única de um número.
+
{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[,y[,…]]])")}} {{experimental_inline}}
+
Retorna a raiz quadrada da soma dos quadrados dos argumentos (x2+y2+\sqrt{x^2 + y^2 + \dots}).
+
{{jsxref("Global_Objects/Math/imul", "Math.imul(x)")}} {{experimental_inline}}
+
Retorna o resultado de uma multiplicação de inteiro de 32-bit.
+
{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}
+
Retorna o logaritmo natural (logex\log_ex ou lnx\ln{x}) de um número.
+
{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}} {{experimental_inline}}
+
Retorna o logaritmo natural de 1 + x (loge(1+x)\log_e(1+x) ou ln(1+x)\ln(1+x)) de um número.
+
{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}} {{experimental_inline}}
+
Retorna o logaritmo de x na base 10 (log10x\log_{10}x).
+
{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}} {{experimental_inline}}
+
Retorna o logaritmo de x na base 2 (log2x\log_2 x).
+
{{jsxref("Global_Objects/Math/max", "Math.max([x[,y[,…]]])")}}
+
Retorna o maior dentre os parâmetros recebidos.
+
{{jsxref("Global_Objects/Math/min", "Math.min([x[,y[,…]]])")}}
+
Retorna o menor dentre os parâmetros recebidos.
+
{{jsxref("Global_Objects/Math/pow", "Math.pow(x,y)")}}
+
Retorna a base x elevada à potência y do expoente, ou seja, xyx^y.
+
{{jsxref("Global_Objects/Math/random", "Math.random()")}}
+
Retorna um número pseudo-aleatório entre 0 e 1.
+
{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}
+
Retorna o valor arrendodado de x, para o valor inteiro mais próximo.
+
{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}} {{experimental_inline}}
+
Retorna o sinal de x, indicando se é positivo, negativo ou zero.
+
{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}
+
Retorna o seno de um número (sinx\sin x).
+
{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}} {{experimental_inline}}
+
Retorna o seno hiperbólico de um número (sinhx\sinh x).
+
{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}
+
Retorna a raiz quadrada positiva de um número (x\sqrt x).
+
{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}
+
Retorna a tangente de um número (tanx\tan x).
+
{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}} {{experimental_inline}}
+
Retorna a tangente hiperbólica de um número (tanhx\tanh x).
+
Math.toSource() {{Non-standard_inline() }}
+
Retorna a string "Math".
+
{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}} {{experimental_inline}}
+
Retorna a parte inteira de x, removendo quaisquer dígitos fracionários.
+
+ +
{{ jsOverrides("Object", "Methods") }}
+ +
+

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial, implementado no JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.8', 'Math')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math-object', 'Math')}}{{Spec2('ES6')}}Novos métodos adicionados: {{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()")}} e {{jsxref("Math.clz32()", "clz32()")}}
+ +

Compatibilidade nos navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
ConteúdoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ConteúdoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + +
+ +

 

diff --git a/files/pt-br/web/javascript/reference/global_objects/math/ln10/index.html b/files/pt-br/web/javascript/reference/global_objects/math/ln10/index.html new file mode 100644 index 0000000000..a5df5d4e52 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/ln10/index.html @@ -0,0 +1,121 @@ +--- +title: Math.LN10 +slug: Web/JavaScript/Reference/Global_Objects/Math/LN10 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 +--- +
{{JSRef}}
+ +

A propriedade Math.LN10 representa o logaritmo natural de 10, aproximadamente 2.302:

+ +

Math.LN10=ln(10)2.302\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2.302

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

Descrição

+ +

Como LN10 é uma propriedade estática de Math,  você sempre deve usa-lo como Math.LN10, ao invés de uma propriedade do objeto Math que você tenha criado (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.LN10

+ +

A seguinte função retorna o log natural de 10:

+ +
function getNatLog10() {
+  return Math.LN10;
+}
+
+getNatLog10(); // 2.302585092994046
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado em 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')}} 
{{SpecName('ESDraft', '#sec-math.ln10', 'Math.LN10')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/ln2/index.html b/files/pt-br/web/javascript/reference/global_objects/math/ln2/index.html new file mode 100644 index 0000000000..dd6282bae3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/ln2/index.html @@ -0,0 +1,80 @@ +--- +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}}
+ +

A propriedade Math.LN2 representa o logaritmo natural (também conhecido como logaritmo neperiano) de 2, que é aproximadamente 0.693:

+ +

Math.LN2=ln(2)0.693\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0.693

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

Descrição

+ +

Por LN2 ser uma propriedade estática de Math, deve-se sempre usá-la como Math.LN2, e não como uma propriedade de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando Math.LN2

+ +

A função a seguir retorna o logaritmo natural de 2:

+ +
function getNatLog2() {
+  return Math.LN2;
+}
+
+getNatLog2(); // 0.6931471805599453
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.ln2', 'Math.LN2')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos navegadores

+ + + +

{{Compat("javascript.builtins.Math.LN2")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log/index.html new file mode 100644 index 0000000000..21c9e18e78 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log/index.html @@ -0,0 +1,148 @@ +--- +title: Math.log() +slug: Web/JavaScript/Reference/Global_Objects/Math/log +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log +--- +
{{JSRef}}
+ +

A função  Math.log() retorna o logaritmo natural(base {{jsxref("Math.E", "e")}}) de um número, que é:

+ +

x>0,Math.log(x)=ln(x)=the uniqueysuch thatey=x\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{the unique} \; y \; \text{such that} \; e^y = x

+ +

Sintaxe

+ +
Math.log(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Retorno

+ +

O logaritmo natural (base {{jsxref("Math.E", "e")}}) de um número dado. Se o número é negativo, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Se o valor de  x é negativo, o retorno será sempre {{jsxref("NaN")}}.

+ +

Por log() ser um método estático de Math, você sempre o usará como Math.log(), ao invés de um método de um objeto de Math que você criou(Math não é um construtor).

+ +

Caso você precise do logaritmo natural de 2 ou 10, use as constantes {{jsxref("Math.LN2")}} ou {{jsxref("Math.LN10")}} .  Caso você precise de um logaritmo de base 2 ou 10, use {{jsxref("Math.log2()")}} ou {{jsxref("Math.log10()")}} .  Caso você precise utilizar logaritmo de outras bases, use Math.log(x) / Math.log(outraBase) como no exemplo abaixo; talvez você queira pré-calcular 1 / Math.log(outraBase) .

+ +

Exemplos

+ +

Usando Math.log()

+ +
Math.log(-1); // NaN, out of range
+Math.log(0);  // -Infinity
+Math.log(1);  // 0
+Math.log(10); // 2.302585092994046
+
+ +

Usando Math.log() como uma base diferente

+ +

As funções a seguir retornam o logaritmo de y na base x (ie. logxy\log_x y):

+ +
function getBaseLog(x, y) {
+  return Math.log(y) / Math.log(x);
+}
+
+ +

Caso você execute getBaseLog(10, 1000) será retornado 2.9999999999999996 devido ao arredondamento de ponto-flutuante, o qual é bem próximo do retorno exato de 3.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.log', 'Math.log')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log10/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log10/index.html new file mode 100644 index 0000000000..560322b5d0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log10/index.html @@ -0,0 +1,137 @@ +--- +title: Math.log10() +slug: Web/JavaScript/Reference/Global_Objects/Math/log10 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 +--- +
{{JSRef}}
+ +

A função Math.log10() retorna o logaritmo de base 10 de um número, que é

+ +

x>0,Math.log10(x)=log10(x)=the uniqueysuch that10y=x\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{the unique} \; y \; \text{such that} \; 10^y = x

+ +

Sintaxe

+ +
Math.log10(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Retorno

+ +

O logaritmo de base 10 de um número. Caso o número seja negativo, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Caso o valor de x seja menor que 0, então o retorno será sempre {{jsxref("NaN")}}.

+ +

Por log10() ser um método estático de Math, você sempre o usará como Math.log10(), ao invés de usá-lo como método de um objeto Math criado (Math não é um construtor).

+ +

Esta função é equivalente a Math.log(x) / Math.log(10).  Para log10(e) use a constante {{jsxref("Math.LOG10E")}} que é 1 / {{jsxref("Math.LN10")}}.  

+ +

Exemplos

+ +

Usando Math.log10()

+ +
Math.log10(2);      // 0.3010299956639812
+Math.log10(1);      // 0
+Math.log10(0);      // -Infinity
+Math.log10(-2);     // NaN
+Math.log10(100000); // 5
+
+ +

Polyfill

+ +

Isso pode ser simulado a partir da seguinte função:

+ +
Math.log10 = Math.log10 || function(x) {
+  return Math.log(x) * Math.LOG10E;
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-math.log10', 'Math.log10')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log10', 'Math.log10')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log10e/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log10e/index.html new file mode 100644 index 0000000000..1c2f57c178 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log10e/index.html @@ -0,0 +1,82 @@ +--- +title: Math.LOG10E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +tags: + - JavaScript + - Math + - Property + - Propriedade + - Referece + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +--- +
{{JSRef}}
+ +

A propriedade Math.LOG10E representa o logaritmo com base 10 de e, aproximadamente 0.434:

+ +

Math.LOG10E=log10(e)0.434\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0.434

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

Descrição

+ +

Por LOG10E ser uma propriedade estática de Math, deve-se sempre usá-la como Math.LOG10E, e não como propriedade de um objeto Math criado por você (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.LOG10E

+ +

A função a seguir retorna o logaritmo com base 10 de e:

+ +
function getLog10e() {
+  return Math.LOG10E;
+}
+
+getLog10e(); // 0.4342944819032518
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.log10e', 'Math.LOG10E')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade no navegadores

+ + + +

{{Compat("javascript.builtins.Math.LOG10E")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log1p/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log1p/index.html new file mode 100644 index 0000000000..b36c74ff62 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log1p/index.html @@ -0,0 +1,105 @@ +--- +title: Math.log1p() +slug: Web/JavaScript/Reference/Global_Objects/Math/log1p +tags: + - ECMAScript 2015 + - JavaScript + - Logaritmo Natural + - Math + - Math.log1p + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p +--- +
{{JSRef}}
+ +

A função Math.log1p()  returna o logaritmo natural (base {{jsxref("Math.E", "e")}}) de 1 + um número, isto é

+ +

x>-1,Math.log1p(x)=ln(1+x)\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

+ +
{{EmbedInteractiveExample("pages/js/math-log1p.html")}}
+ + + +

Sintaxe

+ +
Math.log1p(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor de retorno

+ +

O logaritmo natural (base {{jsxref("Math.E", "e")}}) de 1 mais o número fornecido. Se o número for menor que -1, {{jsxref("NaN")}} será retornado.

+ +

Descrição

+ +

Para valores muito pequenos de x, adicionando 1 pode reduzir ou eliminar precisão. Valores double floats costuman te dar em torno de 15 digitos de precisão no JavaScript. 1 + 1e-15 = 1.000000000000001, porém, 1 + 1e-16 = 1.000000000000000 e portanto, exatamente 1.0 naquele resultado, porque os números que passam de 15 digitos são arredondados.

+ +

Quando você calcula log(1 + x), você obterá um resultado muito perto de x, se x for um valor pequeno (isto é, porque eles são chamados logaritmos 'naturais'). Se você calcular Math.log(1 + 1.1111111111e-15) você obterá uma resposta perto de1.1111111111e-15. Ao invés, você vai acabar obtendo o logaritmo de 1.00000000000000111022 (o arrendondamento é feito em binário, portanto, as vezes isso pode parecer estranho), então você obterá o resultado 1.11022...e-15, com somente 3 digitos corretos. Se, ao invés, você calcular  Math.log1p(1.1111111111e-15) você terá um retorno mais preciso de 1.1111111110999995e-15 com 15 digitos corretos de precisão (na verdade 16 nesse caso).

+ +

Se o valor de x for menor que -1, o valor retornado será sempre {{jsxref("NaN")}}.

+ +

Por conta do log1p() ser um metódo estático de Math, você sempre chamará como Math.log1p(), ao invés de chamar como um método de um objeto Math que você tenha criado (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.log1p()

+ +
Math.log1p(1);  // 0.6931471805599453
+Math.log1p(0);  // 0
+Math.log1p(-1); // -Infinity
+Math.log1p(-2); // NaN
+
+ +

Polyfill

+ +

Isto pode ser implementado com a seguinte função:

+ +
Math.log1p = Math.log1p || function(x) {
+  return Math.log(1 + x);
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-math.log1p', 'Math.log1p')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log1p', 'Math.log1p')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com os navegadores

+ + + +

{{Compat("javascript.builtins.Math.log1p")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log2/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log2/index.html new file mode 100644 index 0000000000..1e15ab3f00 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log2/index.html @@ -0,0 +1,91 @@ +--- +title: Math.log2() +slug: Web/JavaScript/Reference/Global_Objects/Math/log2 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 +--- +
{{JSRef}}
+ +

A função Math.log2() retorna o logaritmo de base 2 de um número, que é

+ +

x>0,Math.log2(x)=log2(x)=the uniqueysuch that2y=x\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{the unique} \; y \; \text{such that} \; 2^y = x

+ +

Sintaxe

+ +
Math.log2(x)
+ +

Parâmetros

+ +
+
x Um número.
+
+ +

Retorno

+ +

O logaritmo de base 2 de um número. Caso o número seja negativo, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Caso o valor de x seja menor que 0, então o retorno será sempre {{jsxref("NaN")}}.

+ +

Por log2() ser um método estático de Math, você sempre o usará como Math.log2(), ao invés de usá-lo como método de um objeto  Math criado (Math não é um construtor).

+ +

Esta função é equivalente a Math.log(x)/Math.log(2).  Para log2(e) use a constante {{jsxref("Math.LOG2E")}} que é 1 / {{jsxref("Math.LN2")}}.  

+ +

Exemplos

+ +

Usando 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
+
+ +

Polyfill

+ +

Este Polyfill simula a função Math.log2. Note que é retornado um valor não prcesiso Observe que é retornado valores imprecisos em algumas entradas (like 1 << 29), envolva em {{jsxref("Math.round()")}} se estiver trabalhando com máscaras de bits.

+ +
Math.log2 = Math.log2 || function(x) {
+  return Math.log(x) * Math.LOG2E;
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-math.log2', 'Math.log2')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.log2', 'Math.log2')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Math.log2")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/log2e/index.html b/files/pt-br/web/javascript/reference/global_objects/math/log2e/index.html new file mode 100644 index 0000000000..26669a3b45 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/log2e/index.html @@ -0,0 +1,82 @@ +--- +title: Math.LOG2E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +tags: + - JavaScript + - Math + - Property + - Propriedade + - Reference + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +--- +
{{JSRef}}
+ +

A propriedade Math.LOG2E representa o logaritmo com base 2 de e, aproximadamente 1.442:

+ +

Math.LOG2E=log2(e)1.442\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1.442

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

Descrição

+ +

Por LOG2E ser uma propriedade estática de Math, deve-se sempre usá-la como Math.LOG2E, e não como propriedade de um objeto Math criado por você (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.LOG2E

+ +

A função a seguir retorna o logaritmo com base 2 de e:

+ +
function getLog2e() {
+  return Math.LOG2E;
+}
+
+getLog2e(); // 1.4426950408889634
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.log2e', 'Math.LOG2E')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.LOG2E")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/max/index.html b/files/pt-br/web/javascript/reference/global_objects/math/max/index.html new file mode 100644 index 0000000000..d59b1fb583 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/max/index.html @@ -0,0 +1,155 @@ +--- +title: Math.max() +slug: Web/JavaScript/Reference/Global_Objects/Math/max +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/max +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Sumário

+ +

A função Math.max() retorna o maior de um ou mais números.

+ +

Sintaxe

+ +
Math.max([valor1[,valor2, ...]]) 
+ +

Parâmetros

+ +
+
valor1, valor2, ...
+
Números.
+
+ +

Valor de retorno

+ +

O maior dos números passados como argumentos. Se pelo menos um dos argumentos não puder ser convertido para um número {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

Por max ser um método estático em Math, você sempre irá usá-lo da seguinte maneira Math.max(), e não como um método da classe Math que você tenha instanciado.

+ +

Se nenhum argumento for passado o resultado sempre será - {{jsxref("Global_Objects/Infinity", "Infinity")}}.

+ +

Se um dos argumentos não puder ser convertido em um número, o resultado será {{jsxref("Global_Objects/NaN", "NaN")}}.

+ +

Exemplos

+ +

Usando Math.max

+ +
Math.max(10, 20);   //  20
+Math.max(-10, -20); // -10
+Math.max(-10, 20);  //  20
+
+ +

Retornando o maior elemento de um array

+ +

{{jsxref("Array.prototype.reduce", "Array.reduce()")}} pode ser usada para encontrar o maior elemento em um vetor numérico, comparando cada valor:

+ +
var arr = [1, 2, 3];
+var max = arr.reduce(function(a, b) {
+  return Math.max(a, b);
+});
+ +

A função a seguir utiliza {{jsxref("Function.prototype.apply()")}} para encontrar o elemento de maior valor dentro do array. getMaxOfArray([1,2,3]) é equivalente a Math.max(1, 2, 3), mas você pode usar getMaxOfArray  em arrays construídos programaticamente e o ideal é utilizá-la somente em arrays com relativamente poucos elementos.

+ +
function getMaxOfArray(numArray) {
+    return Math.max.apply(null, numArray);
+}
+ +

O novo operador spread é um modo curto de se escrever a solução com apply para retornar o maior valor de um array.

+ +
var arr = [1, 2, 3];
+var max = Math.max(...arr);
+// max: 3
+ +

Entretanto, tanto spread(...) quanto apply irão ou falhar ou retornar o resultado errado caso o array tenha muitos elementos, porque eles tentam passar o array de elementos como parâmetros de funções. Veja usando apply e funções embutidas para mais detalhes. A solução com reduce não apresenta esse problema.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition. Implemented in JavaScript 1.0StandardInitial definition.
{{SpecName('ES6', '#sec-15.8.2.11', 'Math.max')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.max', 'Math.max')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de Navegadores

+ +

{{ 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() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/min/index.html b/files/pt-br/web/javascript/reference/global_objects/math/min/index.html new file mode 100644 index 0000000000..ee97e97ddf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/min/index.html @@ -0,0 +1,147 @@ +--- +title: Math.min() +slug: Web/JavaScript/Reference/Global_Objects/Math/min +translation_of: Web/JavaScript/Reference/Global_Objects/Math/min +--- +
+

{{JSRef}}

+ +

A função Math.min()  retorna o menor valor passado como parâmetro, ou {{jsxref("NaN")}}  se o parâmetro não é ou não pode ser convertido para um número.

+ +

Syntax

+ +
Math.min([valor1[, valor2[, ...]]])
+ +

Parâmetros

+ +
+
valor1, valor2, ...
+
Números.
+
+ +

Descrição

+ +

Por que  min() é um método estático de Math, você sempre usa como Math.min(),  e não como um método de um objeto Math que você criou (Math não é um construtor).

+ +

Se nenhum argumento for dado, o resultado é {{jsxref("Infinity")}}.

+ +

Se pelo menos um dos argumentos não pode ser convertido para um número, o resultado é {{jsxref("NaN")}}.

+ +

Exemplos

+ +

Usando Math.min()

+ +

Este encontra o min de x e y e atribui a z :

+ +
var x = 10, y = -20;
+var z = Math.min(x, y);
+
+ +

Cortando um valor com Math.min()

+ +

Math.min() é muitas vezes usado para cortar um valor sempre menor do que ou igual a um limite. Por exemplo, este.

+ +
var x = f(foo);
+
+if (x > boundary) {
+  x = boundary;
+}
+
+ +

pode ser escrita como este

+ +
var x = Math.min(f(foo), boundary);
+
+ +

{{jsxref("Math.max()")}} pode ser usado de uma maneira semelhante ao corte de um valor na outra extremidade.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstatoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.min', 'Math.min')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade do navegador 

+ +

{{CompatibilityTable}}

+ + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
+

Suporte

+ +

básico

+
{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+ + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+ +

Veja Também

+ + +
diff --git a/files/pt-br/web/javascript/reference/global_objects/math/pi/index.html b/files/pt-br/web/javascript/reference/global_objects/math/pi/index.html new file mode 100644 index 0000000000..22d97c22e9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/pi/index.html @@ -0,0 +1,82 @@ +--- +title: Math.PI +slug: Web/JavaScript/Reference/Global_Objects/Math/PI +tags: + - JavaScript + - Math + - PI + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI +--- +
{{JSRef}}
+ +

A propriedade Math.PI representa a proporção entre circunferência de um círculo com o seu diâmetro, aproximadamente 3.14159:

+ +

Math.PI=π3.14159\mathtt{\mi{Math.PI}} = \pi \approx 3.14159

+ +

{{EmbedInteractiveExample("pages/js/math-pi.html")}}

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

Descrição

+ +

Como PI é uma propriedade estática de Math, sempre use-a como Math.PI, ao invés de uma propriedade de um objeto Math que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.PI

+ +

A seguinte função usa Math.PI para calcular a circunferência de um círculo com um dado raio.

+ +
function calcularCircunferencia(raio) {
+  return 2 * Math.PI * raio;
+}
+
+calcularCircunferencia(1);  // 6.283185307179586
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definiçao inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.pi', 'Math.PI')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Math.PI")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/pow/index.html b/files/pt-br/web/javascript/reference/global_objects/math/pow/index.html new file mode 100644 index 0000000000..0a478feb5a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/pow/index.html @@ -0,0 +1,147 @@ +--- +title: Math.pow() +slug: Web/JavaScript/Reference/Global_Objects/Math/pow +tags: + - Função + - JavaScript + - Método(2) + - Referência(2) + - expoente + - potência +translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow +--- +
{{JSRef}}
+ +

A função Math.pow() retorna a base elevada ao expoente power, ou seja, baseexpoente.

+ +

Sintaxe

+ +
Math.pow(base, expoente)
+ +

Parâmetros

+ +
+
base
+
O número da base.
+
expoente
+
O expoente usado para elevar a base.
+
+ +

Descrição

+ +

Como pow() é um método estático de Math, você sempre irá usá-lo como Math.pow(), ao invés de usá-lo como um método de um objeto do tipo Math que você tenha criado (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.pow()

+ +
// simples
+Math.pow(7, 2);    // 49
+Math.pow(7, 3);    // 343
+Math.pow(2, 10);   // 1024
+// expoentes fracionários
+Math.pow(4, 0.5);  // 2 (raiz quadrada de 4)
+Math.pow(8, 1/3);  // 2 (raiz cúbica de 8)
+Math.pow(2, 0.5);  // 1.4142135623730951 (raiz quadrada de 2)
+Math.pow(2, 1/3);  // 1.2599210498948732 (raiz cúbica de 2)
+// expoentes com sinais
+Math.pow(7, -2);   // 0.02040816326530612 == (1/7)2 == (1/49)
+Math.pow(8, -1/3); // 0.5 == (1/8)1/3 == 1/2
+// bases com sinal
+Math.pow(-7, 2);   // 49 (quadrados sempre são positivos)
+Math.pow(-7, 3);   // -343 (cubos podem ser negativos conforme a base)
+Math.pow(-7, 0.5); // NaN (números negativos não tem uma raiz quadrada real)
+// devido ao fato que raízes "par" e "ímpar" são próximas,
+// e limitam a precisão de ponto flutuante,
+// bases negativas com expoentes fracionários sempre retornam NaN
+Math.pow(-7, 1/3); // NaN
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição Inicial. Implementado no 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')}} 
+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/random/index.html b/files/pt-br/web/javascript/reference/global_objects/math/random/index.html new file mode 100644 index 0000000000..c3133554a8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/random/index.html @@ -0,0 +1,102 @@ +--- +title: Math.random() +slug: Web/JavaScript/Reference/Global_Objects/Math/random +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/random +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Sumário

+ +

A função Math.random() retorna um número pseudo-aleatório no intervalo [0, 1[, ou seja, de 0 (inclusivo) até, mas não incluindo, 1 (exclusivo), que depois você pode dimensionar para um intervalo desejado.  A implementação seleciona uma semente para o algoritmo de geração de números aleatórios; esta semente não pode ser escolhida ou reatribuída.

+ +
+

Math.random() não gera números criptograficamente seguros. Não a use para nada relacionado a segurança. Use a API Web Crypto, mais precisamente o método {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.

+
+ +

Sintaxe

+ +
Math.random()
+ +

Valor retornado

+ +

Um número pseudo-aleatório entre 0 (inclusivo) e 1 (exclusivo).

+ +

Exemplos

+ +

Note que os números em JavaScript são pontos flutuantes que seguem o padrão IEEE 754 com comportamento arredondar-para-o-par-mais-próximo, os intervalos que serão citados nos exemplos a seguir (exceto o exemplo do Math.random()), não são exatas. Se limites extremamente grandes forem escolhidos (253 ou maior), em raros casos é possível que o limite superior (que seria exclusivo) seja retornado.

+ +

Gerando um número aleatório entre 0 (inclusivo) e 1 (exclusivo)

+ +
function getRandom() {
+  return Math.random();
+}
+ +

Gerando um número aleatório entre dois valores

+ +

Este exemplo retorna um número entre dois valores definidos. O valor retornado será maior ou igual a min, e menor que max.

+ +
function getRandomArbitrary(min, max) {
+  return Math.random() * (max - min) + min;
+}
+ +

Gerando um número inteiro aleatório entre dois valores

+ +

Este exemplo retorna um número inteiro entre dois valores definidos. O valor não poderá ser menor que min (ou do próximo inteiro maior que min, caso min não seja inteiro), e será menor (mas não igual) a max.

+ +
function getRandomInt(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min)) + min;
+}
+ +

+ +
+

Pode ser tentandor usar Math.round() para arredondar min e max, mas dessa maneira a aleatoriedade dos números seguiria uma distribuição não-uniforme, que talvez não seja o que você precisa.

+
+ +

Gerando um número inteiro aleatório entre dois valores, inclusive

+ +

A função getRandomInt() acima tem intervalo com o valor mínimo incluído e o máximo excluído. Mas se você precisar que a função inclua, tanto o mínimo quanto o máximo, em seus resultados? A função getRandomIntInclusive() abaixo faz isso.

+ +
function getRandomIntInclusive(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (Todas plataformas).
{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.random', 'Math.random')}}{{Spec2('ES6')}} 
+ +

Compatibilidade nos navegadores

+ +

{{Compat("javascript.builtins.Math.random")}}

diff --git a/files/pt-br/web/javascript/reference/global_objects/math/round/index.html b/files/pt-br/web/javascript/reference/global_objects/math/round/index.html new file mode 100644 index 0000000000..5473ab29aa --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/round/index.html @@ -0,0 +1,234 @@ +--- +title: Math.round() +slug: Web/JavaScript/Reference/Global_Objects/Math/round +tags: + - JavaScript + - Math + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Math/round +--- +
{{JSRef("Global_Objects", "Math")}}
+ +

Resumo

+ +

A função Math.round() retorna o valor de um número arredondado para o inteiro mais proximo.

+ +

Sintaxe

+ +
 Math.round(x) 
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Retorno

+ +

O valor de um número dado aproximado para o inteiro mais próximo

+ +

Descrição

+ +

Se a parte fracionária do número for maior ou igual a  0.5, o argumento x é arredondado para o próximo número inteiro acima, entretanto se a parte fracionária do número for menor que 0.5, então o valor de x é arredondado para o próximo número inteiro abaixo. Se a parte fracionária for exatamente igual a 0.5, o número é arredondado para o próximo inteiro na direção de +∞.

+ +

Por round ser um método estático de Math, você sempre irá usá-lo como Math.round(), ao invés de usá-lo como um método da instância do objeto Math que você criou.

+ +

Exemplos

+ +

Exemplo: Uso de  Math.round

+ +
// Retorna o valor 20
+x = Math.round(20.49);
+
+// Retorna o valor 21
+x = Math.round(20.5);
+
+// Retorna o valor -20
+x = Math.round(-20.5);
+
+// Retorna o valor -21
+x = Math.round(-20.51);
+
+// Retorna 1 (!)
+// Note o erro de arredondamento por causa da inacurácia de aritmética de ponto flutuante
+// Compare o exemplo abaixo com Math.round10(1.005, -2)
+x = Math.round(1.005*100)/100;
+
+ +

Exemplo: Arredondamento decimal.

+ +
// Closure
+(function(){
+
+	/**
+	 * Ajuste decimal de um número.
+	 *
+	 * @param	{String}	type	O tipo de arredondamento.
+	 * @param	{Number}	value	O número a arredondar.
+	 * @param	{Integer}	exp		O expoente (o logaritmo decimal da base pretendida).
+	 * @returns	{Number}			O valor depois de ajustado.
+	 */
+	function decimalAdjust(type, value, exp) {
+		// Se exp é indefinido ou zero...
+		if (typeof exp === 'undefined' || +exp === 0) {
+			return Math[type](value);
+		}
+		value = +value;
+		exp = +exp;
+		// Se o valor não é um número ou o exp não é inteiro...
+		if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
+			return NaN;
+		}
+		// Transformando para string
+		value = value.toString().split('e');
+		value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
+		// Transformando de volta
+		value = value.toString().split('e');
+		return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
+	}
+
+	// Arredondamento decimal
+	if (!Math.round10) {
+		Math.round10 = function(value, exp) {
+			return decimalAdjust('round', value, exp);
+		};
+	}
+	// Decimal arredondado para baixo
+	if (!Math.floor10) {
+		Math.floor10 = function(value, exp) {
+			return decimalAdjust('floor', value, exp);
+		};
+	}
+	// Decimal arredondado para cima
+	if (!Math.ceil10) {
+		Math.ceil10 = function(value, exp) {
+			return decimalAdjust('ceil', value, exp);
+		};
+	}
+
+})();
+
+// Round (arredondamento)
+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 -- compare este resultado com Math.round(1.005*100)/100 no exemplo acima
+// Floor (para baixo)
+Math.floor10(55.59, -1); // 55.5
+Math.floor10(59, 1); // 50
+Math.floor10(-55.51, -1); // -55.6
+Math.floor10(-51, 1); // -60
+// Ceil (para cima)
+Math.ceil10(55.51, -1); // 55.6
+Math.ceil10(51, 1); // 60
+Math.ceil10(-55.59, -1); // -55.5
+Math.ceil10(-59, 1); // -50
+
+ +

Método de arredondamento PHP

+ +

O código abaixo pode ser utilizado para adicionar sua própria versão do Math.round ao seu namespace no qual tenha um parâmetro de precisão. Diferentemente do arredondamento decimal do exemplo acima, esse método não realiza conversão de e para strings, e o parâmetro de precisão funciona da mesma maneira que PHP e Excel onde um positivo 1 seria arredondado para 1 casa decimal e -1 seria arredondado para os decimais.

+ +
var myNamespace = {};
+
+myNamespace.round = function(number, precision) {
+    var factor = Math.pow(10, precision);
+    var tempNumber = number * factor;
+    var roundedTempNumber = Math.round(tempNumber);
+    return roundedTempNumber / factor;
+};
+
+myNamespace.round(1234.5678, 1); // 1234.6
+myNamespace.round(1234.5678, -1); // 1230
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1ª Edição. Implementado em JavaScript 1.0.PadrãoDefinição inicial.
{{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-math.round', 'Math.round')}}{{Spec2('ES6')}}
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sign/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sign/index.html new file mode 100644 index 0000000000..03f8eed812 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sign/index.html @@ -0,0 +1,117 @@ +--- +title: Math.sign() +slug: Web/JavaScript/Reference/Global_Objects/Math/sign +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign +--- +
{{JSRef}}
+ +

A função Math.sign() retorna o sinal de um número, indicando se o número é positivo, negativo ou zero.

+ +

Sintaxe

+ +
Math.sign(x)
+ +

Parâmetros

+ +
+
x
+
Se o parametro passado ao for numerico, a função irá converter o parametro em Um número.
+
+ +

Valor retornado

+ +

Um número representando o sinal do argumento fornecido.

+ +

Se o argumento é um número positivo, o retorno será 1;

+ +

Se o numero passado for negativo, o retorno será -1

+ +

Se o argumento for um zero positivo , o retorno será +0

+ +

Se o argumento for 0 negativo , o retorno será -0

+ +

. Qualquer outro valor que não seja numérico (string transformada em numero por ex.), o retorno será {{jsxref("NaN")}} 

+ +

Descrição

+ +

Pela razão de sign() ser um método estático de Math, você sempre deve usá-lo como Math.sign(), e não como um método do objeto Math que você criou (Math não é um construtor).

+ +

Esta função possui 5 tipos de valores retornados, 1, -1, 0, -0, NaN, que representam "número positivo", "número negativo", "zero positivo", "zero negativo" e {{jsxref("NaN")}}, respectivamente.

+ +

O argumento passado para esta função será implicitamente convertido para o tipo numérico.

+ +

Exemplos

+ +

Usando 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
+
+ +

Polyfill

+ +
if (!Math.sign) {
+  Math.sign = function(x) {
+    // Se x é NaN, o resultado é NaN.
+    // Se x é -0, o resultado é -0.
+    // Se x é +0, o resultado é +0.
+    // Se x é negativo e não -0, o resultado é -1.
+    // Se x é positivo e não +0, o resultado é +1.
+    return ((x > 0) - (x < 0)) || +x;
+    // Uma representação mais estética é mostrada abaixo
+    //
+    // ( (x > 0) ? 1 : 0 )  // se x é positivo então mais um
+    //          +           // senão (porque não poder ser - e +)
+    // ( (x < 0) ? -1 : 0 ) // se x é negativo então menos um
+    //         ||           // se x é 0, -0, NaN, ou não é um número,
+    //         +x           // Então o resultado será x, (ou) se x não é
+    //                      // um número, então converte x para número
+  };
+}
+
+ +

No polyfill acima, nenhuma coerção de tipo extra é necessária para tornar numéricos as expressões (x > 0) ou (x < 0) , porque subtraindo-as um do outro força uma conversão de tipo de booleano para numérico.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-math.sign', 'Math.sign')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com navegadores

+ + + +

{{Compat("javascript.builtins.Math.sign")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sin/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sin/index.html new file mode 100644 index 0000000000..3e5cdea187 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sin/index.html @@ -0,0 +1,92 @@ +--- +title: Math.sin() +slug: Web/JavaScript/Reference/Global_Objects/Math/sin +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin +--- +
{{JSRef}}
+ +

A função Math.sin() retorna o seno de um número.

+ +
{{EmbedInteractiveExample("pages/js/math-sin.html")}}
+ + + +

Sintaxe

+ +
Math.sin(x)
+ +

Paramêtros

+ +
+
x
+
Um número (dado em radianos)
+
+ +

Valor retornado

+ +

O seno de um número dado.

+ +

Descrição

+ +

O método Math.sin() retorna um valor numérico entre -1 e 1, que representa o seno de um angulo dado em radianos.

+ +

Como sin() é um método estático de Math, você sempre o usa como Math.sin(), ao invés de um método de um objeto Math que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.sin()

+ +
Math.sin(0);           // 0
+Math.sin(1);           // 0.8414709848078965
+
+Math.sin(Math.PI / 2); // 1
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-math.sin', 'Math.sin')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.sin")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sinh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sinh/index.html new file mode 100644 index 0000000000..68f6aeb977 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sinh/index.html @@ -0,0 +1,96 @@ +--- +title: Math.sinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/sinh +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sinh +--- +
{{JSRef}}
+ +

A função Math.sinh() retorna o seno hiperbólico de um número, que pode ser expresso usando a {{jsxref("Math.E", "constante e", "", 1)}}:

+ +

Math.sinh(x)=ex-e-x2\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2}

+ +
{{EmbedInteractiveExample("pages/js/math-sinh.html")}}
+ + + +

Sintáxe

+ +
Math.sinh(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor retornado

+ +

O seno hiperbólico do número dado.

+ +

Descrição

+ +

Como sinh() é um método estático de Math, você sempre deve usar como Math.sinh(), ao invés de um novo objeto instanciado Math (Math não é um construtor).

+ +

Exemplos

+ +

Usando Math.sinh()

+ +
Math.sinh(0); // 0
+Math.sinh(1); // 1.1752011936438014
+
+ +

Polyfill

+ +

Isso pode ser emulado com a ajuda da função {{jsxref("Math.exp()")}}:

+ +
Math.sinh = Math.sinh || function(x) {
+  return (Math.exp(x) - Math.exp(-x)) / 2;
+}
+
+ +

ou usando apenas uma chamada para a função {{jsxref("Math.exp()")}}:

+ +
Math.sinh = Math.sinh || function(x) {
+  var y = Math.exp(x);
+  return (y - 1 / y) / 2;
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-math.sinh', 'Math.sinh')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-math.sinh', 'Math.sinh')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.sinh")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sqrt/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sqrt/index.html new file mode 100644 index 0000000000..17c9f65bb4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sqrt/index.html @@ -0,0 +1,87 @@ +--- +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")}}
+ +

Resumo

+ +

A função Math.sqrt() retorna a raiz quadrada de um número (x\sqrt{x}) .

+ +

Sintaxe

+ +
Math.sqrt(x) 
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

Valor retornado

+ +

A raiz quadrada do número recebido. Se o número for negativo, a função retornará {{jsxref("NaN")}}.

+ +

Descrição

+ +

Se o valor de x for negativo, Math.sqrt() retorna {{jsxref("NaN")}}.

+ +

Por sqrt ser um método estático de Math, deve-se sempre usá-lo como Math.sqrt(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Exemplo: Usando Math.sqrt

+ +
Math.sqrt(9); // 3
+Math.sqrt(2); // 1.414213562373095
+
+Math.sqrt(1);  // 1
+Math.sqrt(0);  // 0
+Math.sqrt(-1); // NaN
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}} 
+ +

Compatibilidade nos navegadores

+ +

{{Compat("javascript.builtins.Math.sqrt")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sqrt1_2/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sqrt1_2/index.html new file mode 100644 index 0000000000..5c2aa35e4a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sqrt1_2/index.html @@ -0,0 +1,81 @@ +--- +title: Math.SQRT1_2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +tags: + - JavaScript + - Math + - Property + - Propriedade + - Reference + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +--- +
{{JSRef}}
+ +

A propriedade Math.SQRT1_2 representa a raiz quadrada de 12\frac{1}{2}, que é aproximadamente 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)}}
+ +

Descrição

+ +

Por SQRT1_2 ser um método estático de Math, deve-se sempre usá-lo como Math.SQRT1_2(), e não como um método de um objeto Math que você criou.

+ +

Exemplos

+ +

Usando Math.SQRT1_2

+ +

A função a seguir retorna 1 sobre a raiz quadrada de 2:

+ +
function getRoot1_2() {
+  return Math.SQRT1_2;
+}
+
+getRoot1_2(); // 0.7071067811865476
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.SQRT1_2")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/sqrt2/index.html b/files/pt-br/web/javascript/reference/global_objects/math/sqrt2/index.html new file mode 100644 index 0000000000..7c8ceeaa5d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/sqrt2/index.html @@ -0,0 +1,81 @@ +--- +title: Math.SQRT2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +tags: + - JavaScript + - Math + - Property + - Propriedade + - Reference + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +--- +
{{JSRef}}
+ +

A propriedade Math.SQRT2 representa a raiz quadrada de 2, que é aproximadamente 1.414:

+ +

Math.SQRT2=21.414\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1.414

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

Descrição

+ +

Por SQRT2 ser uma propriedade estática de Math, deve-se sempre usá-la como Math.SQRT2, e não como propriedade de um objeto Math criado por você (Math não é um construtor).

+ +

Examples

+ +

Usando Math.SQRT2

+ +

A função a seguir retorna a raiz quadrada de 2:

+ +
function getRoot2() {
+  return Math.SQRT2;
+}
+
+getRoot2(); // 1.4142135623730951
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-math.sqrt2', 'Math.SQRT2')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Math.SQRT2")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/tan/index.html b/files/pt-br/web/javascript/reference/global_objects/math/tan/index.html new file mode 100644 index 0000000000..0b0897490a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/tan/index.html @@ -0,0 +1,111 @@ +--- +title: Math.tan() +slug: Web/JavaScript/Reference/Global_Objects/Math/tan +tags: + - JavaScript + - Matemática + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan +--- +
+ {{JSRef("Global_Objects", "Math")}}
+

Resumo

+

A função Math.tan() retorna a tangente de um número.

+

Sintaxe

+
Math.tan(x)
+

Parâmetros

+
+
+ x
+
+ Um número representando um ângulo em radianos.
+
+

Descrição

+

O método tan retorna um valor numérico que representa a tangente do ângulo.

+

Como tan é um método estático de Math, use sempre Math.tan(), ao invés de um método de um objeto Math que você tenha criado.

+

Exemplos

+

Exemplo: Usando Math.tan

+

A seguinte função retorna a tangente da variável x:

+
function getTan(x) {
+   return Math.tan(x);
+}
+

Como a função Math.tan() trabalha com radianos, mas normalment epe mais fácil trabalhar em graus, a seguinte função aceita um valor em graus, converte-o para radianos e retorna a tangente.

+
function getTanDeg(deg) {
+   var rad = deg * Math.PI/180;
+   return Math.tan(rad);
+}
+
+

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
ECMAScript 1st Edition. Implementado em JavaScript 1.0PadrãoDefinição inicial.
{{SpecName('ES5.1', '#sec-15.8.2.18', 'Math.tan')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-math.tan', 'Math.tan')}}{{Spec2('ES6')}} 
+

Compatibilidade de navegadores

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + +
característicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+

 

diff --git a/files/pt-br/web/javascript/reference/global_objects/math/tanh/index.html b/files/pt-br/web/javascript/reference/global_objects/math/tanh/index.html new file mode 100644 index 0000000000..1122f98d69 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/tanh/index.html @@ -0,0 +1,88 @@ +--- +title: Math.tanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/tanh +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh +--- +
{{JSRef}}
+ +

A função Math.tanh()  retorna a tangente hiperbólica de um número, que é:

+ +

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}

+ +
{{EmbedInteractiveExample("pages/js/math-tanh.html")}}
+ +

Syntax

+ +
Math.tanh(x)
+ +

Parameters

+ +
+
x
+
Um número.
+
+ +

Return value

+ +

Uma tangente hiperbólica de um número dado.

+ +

Description

+ +

Because tanh() is a static method of Math, you always use it as Math.tanh(), rather than as a method of a Math object you created (Math is not a constructor).

+ +

Examples

+ +

Using Math.tanh()

+ +
Math.tanh(0);        // 0
+Math.tanh(Infinity); // 1
+Math.tanh(1);        // 0.7615941559557649
+
+ +

Polyfill

+ +

This can be emulated with the help of the {{jsxref("Math.exp()")}} function:

+ +
Math.tanh = Math.tanh || function(x){
+    var a = Math.exp(+x), b = Math.exp(-x);
+    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (a + b);
+}
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-math.tanh', 'Math.tanh')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Math.tanh")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/math/trunc/index.html b/files/pt-br/web/javascript/reference/global_objects/math/trunc/index.html new file mode 100644 index 0000000000..cba3259de7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/math/trunc/index.html @@ -0,0 +1,144 @@ +--- +title: Math.trunc() +slug: Web/JavaScript/Reference/Global_Objects/Math/trunc +tags: + - Math + - Trunc +translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc +--- +
{{JSRef}}
+ +

O método Math.trunc() retorna a parte inteira de um número, descartando suas casas decimais.

+ +

{{EmbedInteractiveExample("pages/js/math-trunc.html")}}

+ +

Sintaxe

+ +
Math.trunc(x)
+ +

Parâmetros

+ +
+
x
+
Um número.
+
+ +

 

+ +

Valor de retorno

+ +

A parte inteira de um dado número.

+ +

 

+ +

Descrição

+ +

Diferente dos demais métodos em Math: {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} e {{jsxref("Math.round()")}}, o retorno esperado da função Math.trunc() é simples e direto, ela apenas trunca o número passado a ela como parâmetro, removendo todas as casas decimais dele, não importando se o número é positivo ou negativo.

+ +

Portanto, se o argumento passado for um número positivo, Math.trunc() será equivalente a Math.floor(), caso contrário Math.trunc() será equivalente a Math.ceil().

+ +

O argumento passado a esse método será convertido a um tipo numérico implicitamente.

+ +

Já que trunc() é um método estático em Math, sempre utilize Math.trunc(), ao invés de um método existente no objeto que você criou (Math não é um construtor).

+ +

Exemplos

+ +

Usando 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
+
+ +

Polyfill

+ +

(umPolyfill é um pedaço de código que o desenvolvedor pode colocar na sua página para garantir compatilibilidade do método. No exemplo abaixo, caso o navegador não tiver o método trunc na classe Math, ele será criado);

+ +
Math.trunc = Math.trunc || function(x) {
+  return x < 0 ? Math.ceil(x) : Math.floor(x);
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-math.trunc', 'Math.trunc')}}{{Spec2('ES6')}}Definição inicial.
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome("38")}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatOpera("25")}}{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/nan/index.html b/files/pt-br/web/javascript/reference/global_objects/nan/index.html new file mode 100644 index 0000000000..ff9bb79c7b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/nan/index.html @@ -0,0 +1,125 @@ +--- +title: NaN +slug: Web/JavaScript/Reference/Global_Objects/NaN +translation_of: Web/JavaScript/Reference/Global_Objects/NaN +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Resumo

+ +

A propriedade global NaN é um valor especial que significa Not-A-Number (não é um número).

+ +

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

+ +

Sintaxe

+ +
NaN
+ +

Descrição

+ +

NaN é uma propriedade do objeto global.

+ +

O valor inicial de NaN é Not-A-Number - o mesmo valor de Number.NaN. Nos navegadores modernos, o NaN é uma propriedade somente leitura e não configurável. Mesmo quando não for este o caso, evite sobrescrevê-lo.

+ +

Não é usual a utilização do NaN. Ele é retornado quando uma operação matemática falha (Math.sqrt(-1)) ou quando uma função tenta transformar uma string em inteiro (parseInt("blabla")).

+ +

Testando um valor NaN

+ +

Os operadores de igualdade (== e ===) não podem ser usados para testar um valor NaN. Ao invés disso, utilize {{jsxref("Number.isNaN()")}} ou {{jsxref("Global_Objects/isNaN", "isNaN()")}}.

+ +
NaN === NaN;        // falso
+Number.NaN === NaN; // falso
+isNaN(NaN);         // verdadeiro
+isNaN(Number.NaN);  // verdadeiro
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
ECMAScript 1st Edition.StandardDefinição inicial. Implementado no JavaScript 1.3
{{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}{{Spec2('ES6')}} 
+ +

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() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/null/index.html b/files/pt-br/web/javascript/reference/global_objects/null/index.html new file mode 100644 index 0000000000..8118dddc36 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/null/index.html @@ -0,0 +1,125 @@ +--- +title: 'null' +slug: Web/JavaScript/Reference/Global_Objects/null +translation_of: Web/JavaScript/Reference/Global_Objects/null +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Resumo

+ +

O valor null é um literal em JavaScript que representa um valor nulo ou "vazio" (p/ex: que aponta para um objeto inexistente). É um dos {{Glossary("Primitivo", "valores primitivos")}} do JavaScript.

+ +

Sintaxe

+ +
null 
+ +

Descrição

+ +

O valor null é um literal, e não uma propriedade do objeto global (como o undefined pode ser). O desenhos das APIs, o null as vezes é devolvido no lugar de um objeto que era esperado. Quando fizer a checagem de um valor para null ou undefined, esteja ciente das diferenças entre o operador de igualdade (==) e o de igualdade estrita (===) (em inglês). Uma conversão de tipos é realizada na operação de igualdade.

+ +
// foo não existe, não foi definido e jamais foi inicializado:
+> foo
+"ReferenceError: foo is not defined"
+
+// foo é conhecido e existe, mas não aponta para nenhum tipo ou valor:
+> var foo = null; foo
+"null"
+
+ +

Diferenças entre null e undefined

+ +
typeof null        // object (bug no ECMAScript, deveria ser null - http://2ality.com/2013/10/typeof-null.html)
+typeof undefined   // undefined
+null === undefined // falso
+null  == undefined // verdadeiro
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
ECMAScript 1st Edition.StandardDefinição inicial
{{SpecName('ES5.1', '#sec-4.3.11', 'null value')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-null-value', 'null value')}}{{Spec2('ES6')}} 
+ +

Compatibilidade entre navegadores

+ +

{{ 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() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/epsilon/index.html b/files/pt-br/web/javascript/reference/global_objects/number/epsilon/index.html new file mode 100644 index 0000000000..bc10fb3285 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/epsilon/index.html @@ -0,0 +1,69 @@ +--- +title: Number.EPSILON +slug: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +tags: + - ECMAScript 2015 + - JavaScript + - Number + - Número + - Property + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +--- +
{{JSRef}}
+ +

A propriedade Number.EPSILON representa a diferença entre 1 e o menor ponto flutuante maior que 1.

+ +

Você não tem que criar um objeto {{jsxref("Number")}} para acessar esta propriedade estática (use Number.EPSILON).

+ +
{{EmbedInteractiveExample("pages/js/number-epsilon.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

A propriedade EPSILON tem o valor de aproximadamente 2.2204460492503130808472633361816E-16, ou 2-52.

+ +

Polyfill

+ +
if (Number.EPSILON === undefined) {
+    Number.EPSILON = Math.pow(2, -52);
+}
+
+ +

Exemplos

+ +

Testando igualdade

+ +
x = 0.2;
+y = 0.3;
+z = 0.1;
+equal = (Math.abs(x - y + z) < Number.EPSILON);
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.EPSILON")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/index.html b/files/pt-br/web/javascript/reference/global_objects/number/index.html new file mode 100644 index 0000000000..a21a4264af --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/index.html @@ -0,0 +1,221 @@ +--- +title: Número +slug: Web/JavaScript/Reference/Global_Objects/Number +tags: + - JavaScript + - Número + - Referência(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +
{{JSRef("Global_Objects", "Number")}} 
+ +

Sumário

+ +

O objeto JavaScript Number é um objeto encapsulado que permite você trabalhar com valores numéricos. Um objeto Number é criado utilizando o construtor Number().

+ +

Construtor

+ +
new Number(value);
+ +

Parâmetros

+ +
+
value
+
O valor numérico do objeto sendo criado.
+
+ +

Descrição

+ +

Os principais usos para o objeto Number são:

+ + + +

Propriedades

+ +
+
{{jsxref("Number.EPSILON")}} {{experimental_inline}}
+
O menor intervalo entre dois números representáveis.
+
{{jsxref("Number.MAX_SAFE_INTEGER")}} {{experimental_inline}}
+
O inteiro máximo seguro em JavaScript (253 -1).
+
{{jsxref("Number.MAX_VALUE")}}
+
O maior número representável positivo.
+
{{jsxref("Number.MIN_SAFE_INTEGER")}} {{experimental_inline}}
+
O inteiro mínimo seguro em JavaScript (-(253 -1)).
+
{{jsxref("Number.MIN_VALUE")}}
+
O número mínimo representável positivo - isto é, o número positivo mais próximo de zero (sem ser zero na verdade).
+
{{jsxref("Number.NaN")}}
+
Valor especial que não é número.
+
{{jsxref("Number.NEGATIVE_INFINITY")}}
+
Valor especial representando infinito negativo; retornado no "overflow".
+
{{jsxref("Number.POSITIVE_INFINITY")}}
+
 Valor especial representando infinito; retornado no "overflow".
+
{{jsxref("Number.prototype")}}
+
Permite a adição de propriedades a um objeto Number.
+
+ +
{{jsOverrides("Function", "properties", "MAX_VALUE", "MIN_VALUE", "NaN", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "protoype")}}
+ +

Methods

+ +
+
{{jsxref("Number.isNaN()")}} {{experimental_inline}}
+
Determina se o valor passado é NaN.
+
{{jsxref("Number.isFinite()")}} {{experimental_inline}}
+
Determina se o tipo e o valor passado é um número finito.
+
{{jsxref("Number.isInteger()")}} {{experimental_inline}}
+
Determina se o tipo do valor passado é  inteiro.
+
{{jsxref("Number.isSafeInteger()")}} {{experimental_inline}}
+
Determina se o tipo do valor passado é um inteiro seguro (número entre -(253 -1) e 253 -1).
+
{{jsxref("Number.toInteger()")}} {{obsolete_inline}}
+
Usado para avaliar o valor passado e convertê-lo a um inteiro (ou infinito), mas foi removido.
+
{{jsxref("Number.parseFloat()")}} {{experimental_inline}}
+
O valor é o mesmo que {{jsxref("Global_Objects/parseFloat", "parseFloat")}} do objeto global.
+
{{jsxref("Number.parseInt()")}} {{experimental_inline}}
+
O valor é o mesmo que {{jsxref("Global_Objects/parseInt", "parseInt")}} do objeto global.
+
+ +
{{jsOverrides("Function", "methods", "isNaN")}}
+ +

Instâncias Number  

+ +

Toda instância Number herdam de {{jsxref("Number.prototype")}}. O objeto 'prototype' do construtor Number pode ser modificado para afetar todas as instâncias Number.

+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/prototype', 'Methods')}}
+ +

Exemplos

+ +

Exemplo: Usando o objeto Number para atribuir valores a variáveis numéricas

+ +

O seguinte exemplo usa as propriedades do objeto Number para atribuir valores a várias variáveis numéricas:

+ +
var biggestNum = Number.MAX_VALUE;
+var smallestNum = Number.MIN_VALUE;
+var infiniteNum = Number.POSITIVE_INFINITY;
+var negInfiniteNum = Number.NEGATIVE_INFINITY;
+var notANum = Number.NaN;
+
+ +

Exemplo: Intervalo inteiro para Number

+ +

O seguinte exemplo mostra os valores inteiros mínimo e máximo que podem ser representados como objeto Number (para mais detalhes, referir-se ao padrão EcmaScript standard (EcmaScript standard), capítulo 8.5 O tipo de número (The Number Type):

+ +
var maxInt = 9007199254740992;
+var minInt = -9007199254740992;
+
+ +

Ao analisar dados que foram serializados para JSON, valores inteiros que caem fora desse intervalo podem ser corrompidos quando o analisador JSON os converte ao tipo Number. Usando String em vez disso é uma possível alternativa para se evitar um resultado indesejado.

+ +

 Exemplo: Usando Number para converter um objeto Date

+ +

O exemplo a seguir converte o objeto Date para um valor numérico usando Number como uma função:

+ +
var d = new Date("December 17, 1995 03:24:00");
+print(Number(d));
+
+ +

Isto resulta em "819199440000".

+ +

Converte 'string' numérica em números

+ +
Number('123')     // 123
+Number('12.3')    // 12.3
+Number('')        // 0
+Number('0x11')    // 17
+Number('0b11')    // 3
+Number('0o11')    // 9
+Number('foo')     // NaN
+Number('100a')    // NaN
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
Primeiro edição ECMAScript. Implementado em JavaScript 1.1Padrãodefinição inicial.
{{SpecName('ES5.1', '#sec-15.7', 'Number')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-number-objects', 'Number')}}{{Spec2('ES6')}}Novos métodos e propriedades adicionadas (EPSILON, isFinite, isInteger, isNaN, parseFloat, parseInt)
+ +

Compatibilidade de navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
ConfiguraçãoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ConfiguraçãoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + + +
 
diff --git a/files/pt-br/web/javascript/reference/global_objects/number/isfinite/index.html b/files/pt-br/web/javascript/reference/global_objects/number/isfinite/index.html new file mode 100644 index 0000000000..d4a86d3531 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/isfinite/index.html @@ -0,0 +1,86 @@ +--- +title: Number.isFinite() +slug: Web/JavaScript/Reference/Global_Objects/Number/isFinite +tags: + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite +--- +
{{JSRef}}
+ +

O método Number.isFinite()  determina se o valor passado é um número finito.

+ +

Sintaxe

+ +
Number.isFinite(valor)
+ +

Parâmetros

+ +
+
valor
+
O valor a ser testado.
+
+ +

Retorno

+ +

Um {{jsxref("Boolean")}} indicando se o valor passado é ou não um número finito.

+ +

Descrição

+ +

Em comparação com a função global {{jsxref("isFinite", "isFinite()")}}, esse método não força a conversão do parâmetro para número. Isso significa que só valores do tipo número, que são também finitos, retornam true.

+ +

Exemplos

+ +
Number.isFinite(Infinity);  // false
+Number.isFinite(NaN);       // false
+Number.isFinite(-Infinity); // false
+
+Number.isFinite(0);         // true
+Number.isFinite(2e64);      // true
+
+Number.isFinite('0');       // false, teria sido true com a função
+                            // global isFinite('0')
+Number.isFinite(null);      // false, teria sido true com a função
+                            // global isFinite(null)
+
+ +

Polyfill

+ +
Number.isFinite = Number.isFinite || function(value) {
+    return typeof value === 'number' && isFinite(value);
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-number.isfinite', 'Number.isInteger')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Number.isFinite")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/isinteger/index.html b/files/pt-br/web/javascript/reference/global_objects/number/isinteger/index.html new file mode 100644 index 0000000000..fce6b5f19c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/isinteger/index.html @@ -0,0 +1,136 @@ +--- +title: Number.isInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isInteger +tags: + - Numérico + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger +--- +
{{JSRef}}
+ +

O método Number.isInteger() determina se o valor passado é um inteiro.

+ +

Sintaxe

+ +
Number.isInteger(value)
+ +

Parâmetros

+ +
+
value
+
O valor a testar se é um inteiro.
+
+ +

Valor retornado

+ +

Um {{jsxref("Boolean")}} indicando se o valor é inteiro ou não.

+ +

Descrição

+ +

Se o alvo for um inteiro, returna true, senão returna false. Se o valor é {{jsxref("NaN")}} ou infinito, returna false.

+ +

Exemplos

+ +
Number.isInteger(0);         // true
+Number.isInteger(1);         // true
+Number.isInteger(-100000);   // true
+
+Number.isInteger(0.1);       // false
+Number.isInteger(Math.PI);   // 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
+
+ +

Polyfill

+ +
Number.isInteger = Number.isInteger || function(value) {
+  return typeof value === "number" &&
+    isFinite(value) &&
+    Math.floor(value) === value;
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatGeckoDesktop("16")}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("16")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Ver tabém

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/isnan/index.html b/files/pt-br/web/javascript/reference/global_objects/number/isnan/index.html new file mode 100644 index 0000000000..9652d6628c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/isnan/index.html @@ -0,0 +1,131 @@ +--- +title: Number.isNaN() +slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Resumo

+ +

O método Number.isNaN() determina se o valor passado é {{jsxref("Global_Objects/NaN", "NaN")}}. Versão mais robusta do original global {{jsxref("Global_Objects/isNaN", "isNaN")}}.

+ +

Sintaxe

+ +
Number.isNaN(testValue)
+ +

Parâmetros

+ +
+
testValue
+
O valor a ser testado por {{jsxref("Global_Objects/NaN", "NaN")}}.
+
+ +

Descrição

+ +

Devido a ambos os operadores de igualdade, == and ===, avaliar a false quando está verificando se {{jsxref("Global_Objects/NaN", "NaN")}} é NaN, a função Number.isNaN se torna necessária. Esta situação é diferente de todas as outras comparações de valor possível em JavaScript.

+ +

Em comparação a função global {{jsxref("Global_Objects/isNaN", "isNaN")}}, Number.isNaN não sofre do problema de forçar a conversão do parâmetro para um número. Isso significa que ele é seguro para passar valores que, normalmente, se convertem em NaN, mas na verdade não são o mesmo valor que NaN. Isto também significa que apenas os valores do número do tipo, que são também NaN, retorna true.

+ +

Exemplos

+ +
Number.isNaN(NaN); // true
+Number.isNaN(Number.NaN); // true
+Number.isNaN(0 / 0) // true
+
+// everything else: false
+Number.isNaN(undefined);
+Number.isNaN({});
+
+Number.isNaN(true);
+Number.isNaN(null);
+Number.isNaN(37);
+
+Number.isNaN("37");
+Number.isNaN("37.37");
+Number.isNaN("");
+Number.isNaN(" ");
+Number.isNaN("NaN");
+Number.isNaN("blabla"); // e.g. este teria sido true com isNaN
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
+

{{SpecName('ES6', '#sec-number.isnan', 'Number.isnan')}}

+
{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade de navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico25.0{{CompatGeckoDesktop("15")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{ CompatUnknown() }}{{CompatGeckoMobile("15")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/issafeinteger/index.html b/files/pt-br/web/javascript/reference/global_objects/number/issafeinteger/index.html new file mode 100644 index 0000000000..b6b9d823bc --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/issafeinteger/index.html @@ -0,0 +1,104 @@ +--- +title: Number.isSafeInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +tags: + - JavaScript + - Número + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +--- +
{{JSRef}}
+ +

O método Number.isSafeInteger() determina se o valor fornecido é seja um número seguro.

+ +
{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}
+ + + +

Um inteiro seguro é um inteiro que:

+ + + +

Exemplo, 253 - 1 é um inteiro seguro: pode ser exatamente representado, e nenhum outro numero arredondado existe para ele na represetanção IEEE-754. Em contexto, 253 não é um inteiro seguro: pode ser representado em IEEE-754, mas um inteiro 253 + 1 não pode ser diretamente representado em IEEE-754 mas instanciado do arrendamento de 253 sob arrendamento para o mais próximo e do arrendamento de zero a zero. Os inteiros seguros consistem em todos os inteiros de -(253 - 1) inclusive para 253 - 1 (sendo ± 9007199254740991 ou ± 9,007,199,254,740,991).  

+ +

A manipulação de valores entre ~9 quadrilhões com precisão total requer o uso de arbitrary precision arithmetic library (biblioteca aritmética de precisão arbitrária).  Veja What Every Programmer Needs to Know about Floating Point Arithmetic (o que todo programador precisa saber sobre aritmética de ponto flutuante) para mais informações sobre represetanções de número de ponto flutuante.

+ +

Para números inteiros maiores, considere o uso do tipo {{jsxref("BigInt")}}.

+ +

Sintaxe

+ +
Number.isSafeInteger(valorTest)
+
+ +

Parâmetros

+ +
+
valorTest
+
O valor a ser testado pode ser um número inteiro seguro.
+
+
+ +

Retorno

+ +

Um {{jsxref("Boolean")}} indica se o valor fornecido é um número seguro ou não.

+ +

Exemplos

+ +
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
+
+ +

Polyfill (caso não exista suporte)

+ +
Number.isSafeInteger = Number.isSafeInteger || function (value) {
+   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
+};
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComéntario
{{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ES2015')}}Definição inicial
{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade

+ + + +

{{Compat("javascript.builtins.Number.isSafeInteger")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/max_safe_integer/index.html b/files/pt-br/web/javascript/reference/global_objects/number/max_safe_integer/index.html new file mode 100644 index 0000000000..bae4c758f3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/max_safe_integer/index.html @@ -0,0 +1,83 @@ +--- +title: Number.MAX_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +tags: + - ECMAScript 2015 + - JavaScript + - Number + - Número + - Property + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +--- +
{{JSRef}}
+ +

A constante Number.MAX_SAFE_INTEGER representa o maior inteiro seguro no JavaScript (253 - 1).

+ +

Para inteiros maiores, considere usar {{jsxref("BigInt")}}.

+ +
{{EmbedInteractiveExample("pages/js/number-maxsafeinteger.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

A constante MAX_SAFE_INTEGER tem o valor de 9007199254740991 (9,007,199,254,740,991 ou ~9 quadrilhões). A razão por trás deste número é que o JavaScript usa o formato de número de ponto-flutuante de precisão-dupla como especificado na IEEE 754 e pode seguramente representar número entre -(253 - 1) e 253 - 1.

+ +

Seguro neste contexto se refere a habilidade de representar inteiros exatamente e corretamente compará-los. Por exemplo, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 será avaliado para verdadeiro, que é matematicamente incorreto. Veja {{jsxref("Number.isSafeInteger()")}} para mais informação.

+ +

Este campo não existe em navegadores antigos. Usando ele sem checar sua existência, como Math.max(Number.MAX_SAFE_INTEGER, 2), irá gerar resultados indesejados como NaN.

+ +

Por MAX_SAFE_INTEGER ser uma propriedade estática de {{jsxref("Number")}}, você sempre deve usar como Number.MAX_SAFE_INTEGER, ao invés de uma propriedade do objeto {{jsxref("Number")}} que você criou.

+ +

Polyfill

+ +
if (!Number.MAX_SAFE_INTEGER) {
+    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
+}
+
+ +

Exemplos

+ +

Retorno do valor de MAX_SAFE_INTEGER

+ +
Number.MAX_SAFE_INTEGER; // 9007199254740991
+
+ +

Números maiores que o inteiro seguro

+ +

Isso retorna 2 por quê em pontos flutuantes, o valor é na verdade o final decimal "1" exceto em casos subnormais de precisão como zero.

+ +
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/max_value/index.html b/files/pt-br/web/javascript/reference/global_objects/number/max_value/index.html new file mode 100644 index 0000000000..2a308f13ed --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/max_value/index.html @@ -0,0 +1,65 @@ +--- +title: Number.MAX_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +tags: + - JavaScript + - Number + - Property + - Propriedade + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +--- +
{{JSRef}}
+ +

A propriedade Number.MAX_VALUE representa o maior valor numérico representável em JavaScript.

+ +
{{EmbedInteractiveExample("pages/js/number-maxvalue.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

A propriedade MAX_VALUE tem o valor de aproximadamente 1.79E+308, ou 21024. Valores maiores que MAX_VALUE são representados como {{jsxref("Infinity")}}.

+ +

Por MAX_VALUE ser uma propriedade estática de {{jsxref("Number")}}, você sempre deve usar como Number.MAX_VALUE, ao invés de uma propriedade do objeto {{jsxref("Number")}} que você criou. 

+ +

Exemplos

+ +

Usando MAX_VALUE

+ +

O código a seguir multiplica dois valores numéricos. Se o resultado é menor ou igual a MAX_VALUE, a função func1 é chamada; caso contrário, a função func2 é chamada.

+ +
if (num1 * num2 <= Number.MAX_VALUE) {
+  func1();
+} else {
+  func2();
+}
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.max_value', 'Number.MAX_VALUE')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.MAX_VALUE")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/min_safe_integer/index.html b/files/pt-br/web/javascript/reference/global_objects/number/min_safe_integer/index.html new file mode 100644 index 0000000000..ab952dcadb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/min_safe_integer/index.html @@ -0,0 +1,66 @@ +--- +title: Number.MIN_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +tags: + - ECMAScript 2015 + - JavaScript + - Number + - Número + - Property + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +--- +
{{JSRef}}
+ +

A constante Number.MIN_SAFE_INTEGER representa o menor inteiro seguro no JavaScript (-(253 - 1)).

+ +

Para representar inteiros menores do que isso, considere usar {{jsxref("BigInt")}}.

+ +
{{EmbedInteractiveExample("pages/js/number-min-safe-integer.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

A constante MIN_SAFE_INTEGER tem o valor de -9007199254740991 (-9,007,199,254,740,991 ou -9 quadrilhões). A razão por trás deste número é que o JavaScript usa o formato de número de ponto-flutuante de precisão-dupla como especificado na IEEE 754 e pode seguramente representar número entre -(253 - 1) e 253 - 1.  Veja {{jsxref("Number.isSafeInteger()")}} para mais informações.

+ +

Por MIN_SAFE_INTEGER ser uma propriedade estática de {{jsxref("Number")}}, você sempre deve usar como Number.MIN_SAFE_INTEGER, ao invés de uma propriedade do objeto {{jsxref("Number")}} que você criou.

+ +

Exemplos

+ +

Usando MIN_SAFE_INTEGER

+ +
Number.MIN_SAFE_INTEGER // -9007199254740991
+-(Math.pow(2, 53) - 1)  // -9007199254740991
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.MIN_SAFE_INTEGER")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/min_value/index.html b/files/pt-br/web/javascript/reference/global_objects/number/min_value/index.html new file mode 100644 index 0000000000..6c6738f96f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/min_value/index.html @@ -0,0 +1,69 @@ +--- +title: Number.MIN_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +tags: + - JavaScript + - Number + - Número + - Property + - Propriedade + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +--- +
{{JSRef}}
+ +

A propriedade Number.MIN_VALUE representa o menor valor positivo numérico representável em JavaScript.

+ +
{{EmbedInteractiveExample("pages/js/number-min-value.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

A propriedade MIN_VALUE é o número mais próximo de 0, não o número mais negativo, que o JavaScript pode representar.

+ +

MIN_VALUE tem o valor de aproximadamente 5e-324. Valores menores que MIN_VALUE ("valores de underflow") são convertidos para 0.

+ +

Por MIN_VALUE ser uma propriedade estática de {{jsxref("Number")}}, você sempre deve usar como Number.MIN_VALUE, ao invés de uma propriedade do objeto {{jsxref("Number")}} que você criou.

+ +

Exemplos

+ +

Usando MIN_VALUE

+ +

O seguinte código divide dois valores numéricos. Se o resultado é maior ou igual a MIN_VALUE, a função func1 é chamada; caso contrário, a função func2 é chamada.

+ +
if (num1 / num2 >= Number.MIN_VALUE) {
+  func1();
+} else {
+  func2();
+}
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.min_value', 'Number.MIN_VALUE')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.MIN_VALUE")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/nan/index.html b/files/pt-br/web/javascript/reference/global_objects/number/nan/index.html new file mode 100644 index 0000000000..d2c49dee98 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/nan/index.html @@ -0,0 +1,105 @@ +--- +title: Number.NaN +slug: Web/JavaScript/Reference/Global_Objects/Number/NaN +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN +--- +
{{JSRef}}
+ +

A propriedade Number.NaN representa Not-A-Number (Não-Número). Equivalente a {{jsxref("NaN")}}.

+ +

Você não precisa criar um objeto {{jsxref("Number")}} para acessar esta propriedade estática (use Number.NaN).

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

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusDetalhes
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição Inicial. Implementado no 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')}} 
{{SpecName('ESDraft', '#sec-number.nan', 'Number.NaN')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

 

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/negative_infinity/index.html b/files/pt-br/web/javascript/reference/global_objects/number/negative_infinity/index.html new file mode 100644 index 0000000000..ca9531f930 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/negative_infinity/index.html @@ -0,0 +1,84 @@ +--- +title: Number.NEGATIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +tags: + - JavaScript + - Number + - Número + - Property + - Propriedade + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +--- +
{{JSRef}}
+ +

A propriedade Number.NEGATIVE_INFINITY representa o valor Infinito negativo.

+ +
{{EmbedInteractiveExample("pages/js/number-negative-infinity.html")}}
+ + + +
{{js_property_attributes(0, 0, 0)}}
+ +

Descrição

+ +

O valor de Number.NEGATIVE_INFINITY é o mesmo que o valor negativo da propriedade do objeto global {{jsxref("Infinity")}}.

+ +

O valor se comporta um pouco diferente do que o infinito matemático:

+ + + +

Você pode usar a propriedade Number.NEGATIVE_INFINITY para indicar uma condição de erro que retorna um número finito em caso de sucesso. Nota que, usar {{jsxref("isFinite")}} seria mais apropriado neste caso.

+ +

Por NEGATIVE_INFINITY ser uma propriedade estática de {{jsxref("Number")}}, você sempre a usa como Number.NEGATIVE_INFINITY, ao invés de ser uma propriedade do objeto {{jsxref("Number")}} que você criou.

+ +

Exemplos

+ +

Usando NEGATIVE_INFINITY

+ +

No seguinte exemplo, a variável smallNumber é atribuída um valor que é menor que o valor mínimo. Quando o {{jsxref("Statements/if...else", "if")}} executa, smallNumber tem o valor -Infinity, então é colocado em smallNumber um valor mais manejável antes de continuar.

+ +
var smallNumber = (-Number.MAX_VALUE) * 2;
+
+if (smallNumber === Number.NEGATIVE_INFINITY) {
+  smallNumber = returnFinite();
+}
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.NEGATIVE_INFINITY")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/parsefloat/index.html b/files/pt-br/web/javascript/reference/global_objects/number/parsefloat/index.html new file mode 100644 index 0000000000..85994f5ca6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/parsefloat/index.html @@ -0,0 +1,116 @@ +--- +title: Number.parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Resumo

+ +

O método Number.parseFloat() converte a string recebida como argumento e a retorna como um número de ponto flutuante. Este método se comporta de maneira idêntica a da função global {{jsxref("Global_Objects/parseFloat", "parseFloat")}} e é parte da especificação ECMAScript 6 (seu propósito é a modularização dos objetos globais).

+ +

Sintaxe

+ +
Number.parseFloat(string)
+ +

Parâmetros

+ +
+
string
+
Uma string que represente o valor que se deseja converter.
+  
+
+ +

Retorno

+ +
+
string
+
Um número de ponto flutuante a partir da string dada. Se a string não puder ser convertida em para um número, {{jsxref("Global_Objects/NaN","NaN")}} é retornado.
+
+ +

Descrição

+ +

Este método tem a mesma funcionalidade do método global:  {{jsxref("Global_Objects/parseFloat", "parseFloat()")}}

+ +
Number.parseFloat === parseFloat; // true
+
+ +

Por favor veja {{jsxref("parseFloat", "parseFloat()")}} para mais detalhes e exemplos.

+ +

Especificação

+ + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentários
+

{{SpecName('ES6', '#sec-number.parsefloat', 'Number.parseFloat')}}

+
{{Spec2('ES6')}}Definição inicial.
+ +

Compatibilidade dos Navegadores

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatNo}}{{CompatGeckoDesktop("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("25")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/parseint/index.html b/files/pt-br/web/javascript/reference/global_objects/number/parseint/index.html new file mode 100644 index 0000000000..88c3c6735b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/parseint/index.html @@ -0,0 +1,85 @@ +--- +title: Number.parseInt() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseInt +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Number + - Número + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt +--- +
{{JSRef}}
+ +

O método Number.parseInt() converte um argumento de string e retorna um inteiro da raiz ou base específica.

+ +
{{EmbedInteractiveExample("pages/js/number-parseint.html", "taller")}}
+ + + +

Sintaxe

+ +
Number.parseInt(string,[ radix])
+ +

Parâmetros

+ +
+
+
string
+
O valor a ser convertido. Se este argumento não for uma string, então ele é convertido a um usando a operação abstrata ToString. O espaço em branco inicial neste argumento é ignorado.
+
radix {{optional_inline}}
+
Um inteiro entre 2 e 36 que representa a raiz (a base no sistema numérico matemático) de uma string. Tome cuidado—o padrão não é 10!
+
+
+ +

Valor de retorno

+ +

Um inteiro convertido de uma dada string.

+ +

Se a radix é menor que 2 ou maior que 36, e o primeiro caracter que não é um espaço em branco não puder ser convertido para um número, {{jsxref("NaN")}} é retornado.

+ +

Polyfill

+ +
if (Number.parseInt === undefined) {
+    Number.parseInt = window.parseInt
+}
+
+ +

Exemplos

+ +

Number.parseInt vs parseInt

+ +

Este método tem a mesma funcionalidade que o método global {{jsxref("parseInt", "parseInt()")}}:

+ +
Number.parseInt === parseInt // true
+ +

e é parte do ECMAScript 2015 (sua proposta é a modularização dos globais). Por favor veja {{jsxref("parseInt", "parseInt()")}} para mais detalhes e exemplos.

+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Number.parseInt")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/positive_infinity/index.html b/files/pt-br/web/javascript/reference/global_objects/number/positive_infinity/index.html new file mode 100644 index 0000000000..b6ac31f1ec --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/positive_infinity/index.html @@ -0,0 +1,92 @@ +--- +title: Number.POSITIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +--- +
{{JSRef}}
+ +

A propriedade Number.POSITIVE_INFINITY representa o valor positivo infinito.

+ +

Você não precisa criar um objeto {{jsxref("Number")}} para utilizar a propriedade estática (use Number.POSITIVE_INFINITY).

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

Descrição

+ +

O valor de Number.POSITIVE_INFINITY é o mesmo valor da propriedade {{jsxref("Infinity")}} do objeto global.

+ +

Esse valor se comporta ligeiramente diferente do infinito matemático:

+ + + +

Você pode usar a propriedade Number.POSITIVE_INFINITY para indicar uma condição de erro que retorna um número finito no caso de sucesso. Sobretudo, {{jsxref("isFinite")}} seria mais apropriado nesse caso.

+ +

Exemplos

+ +

Usando POSITIVE_INFINITY

+ +

No exemplo a seguir, a variável bigNumber recebe um valor maior que o valor máximo. Quando as declarações {{jsxref("Statements/if...else", "if")}} executam, bigNumber tem o valor Infinity, então bigNumber recebe um valor mais gerenciável antes de continuar.

+ +
var bigNumber = Number.MAX_VALUE * 2;
+
+if (bigNumber == Number.POSITIVE_INFINITY) {
+  bigNumber = returnFinite();
+}
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos browsers

+ + + +

{{Compat("javascript.builtins.Number.POSITIVE_INFINITY")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/number/prototype/index.html new file mode 100644 index 0000000000..01b988c542 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/prototype/index.html @@ -0,0 +1,139 @@ +--- +title: Number.prototype +slug: Web/JavaScript/Reference/Global_Objects/Number/prototype +tags: + - JavaScript + - Número + - Propriedade + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +
{{JSRef}}
+ +

A propriedade Number.prototype representa o protótipo para o construtor {{jsxref("Number")}}.

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

Descrição

+ +

Todas instâncias {{jsxref("Number")}} herdam de Number.prototype. O objeto 'prototype' do construtor {{jsxref("Number")}} pode ser modificado para afetar todas instâncias {{jsxref( "Number")}}.

+ +

Propriedades

+ +
+
Number.prototype.constructor
+
Retorna a função que criou esta instância do objeto. Por padrão, este é o objeto {{jsxref("Number")}}.
+
+ +

Métodos

+ +
+
{{jsxref("Number.prototype.toExponential()")}}
+
Retorna uma 'string' representando o número em notação exponencial.
+
{{jsxref("Number.prototype.toFixed()")}}
+
Retorna uma 'string' representando o número em notação em ponto fixo.
+
{{jsxref("Number.prototype.toLocaleString()")}}
+
Retorna uma 'string'  com uma representação sensível ao idioma deste número.  Substitui o método {{jsxref("Object.prototype.toLocaleString()")}}.
+
{{jsxref("Number.prototype.toPrecision()")}}
+
Retorna uma 'string' representando o número para uma precisão específica em notação ponto fixo ou exponencial.
+
{{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna uma objeto literal representando um objeto específicado {{jsxref("Number")}}; você pode usar este valor para criar um novo objeto. Substitui o método {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Number.prototype.toString()")}}
+
Retorna uma 'string' representando o objeto especificado na raiz especificada (base). Substitui o método {{jsxref("Object.prototype.toString()")}}.
+
{{jsxref("Number.prototype.valueOf()")}}
+
Retorna o valor primitivo do objeto especificado. Substitui o método {{jsxref("Object.prototype.valueOf()")}}.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentários
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado em 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')}} 
{{SpecName('ESDraft', '#sec-properties-of-the-number-prototype-object', 'Number')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ConfiguraçãoChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
ConfiguraçãoAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/toexponential/index.html b/files/pt-br/web/javascript/reference/global_objects/number/toexponential/index.html new file mode 100644 index 0000000000..743a4b32b0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/toexponential/index.html @@ -0,0 +1,149 @@ +--- +title: Number.prototype.toExponential() +slug: Web/JavaScript/Reference/Global_Objects/Number/toExponential +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toExponential +--- +
{{JSRef}}
+ +

O método toExponential() retorna uma string  representando o objeto {{jsxref("Global_Objects/Number", "Number")}} por meio de notação exponencial.

+ +

Syntax

+ +
numObj.toExponential([fractionDigits])
+ +

Parameters

+ +
+
fractionDigits
+
Optional. An integer specifying the number of digits after the decimal point. Defaults to as many digits as necessary to specify the number.
+
+ +

Return value

+ +

A string representing the given {{jsxref("Number")}} object in exponential notation with one digit before the decimal point, rounded to fractionDigits digits after the decimal point.

+ +

Exceptions

+ +
+
{{jsxref("RangeError")}}
+
If fractionDigits is too small or too large. Values between 0 and 20, inclusive, will not cause a {{jsxref("RangeError")}}. Implementations are allowed to support larger and smaller values as well.
+
{{jsxref("TypeError")}}
+
If this method is invoked on an object that is not a {{jsxref("Number")}}.
+
+ +

Description

+ +

If the fractionDigits argument is omitted, the number of digits after the decimal point defaults to the number of digits necessary to represent the value uniquely.

+ +

If you use the toExponential() method for a numeric literal and the numeric literal has no exponent and no decimal point, leave whitespace(s) before the dot that precedes the method call to prevent the dot from being interpreted as a decimal point.

+ +

If a number has more digits than requested by the fractionDigits parameter, the number is rounded to the nearest number represented by fractionDigits digits. See the discussion of rounding in the description of the {{jsxref("Number.prototype.toFixed", "toFixed()")}} method, which also applies to toExponential().

+ +

Examples

+ +

Using toExponential

+ +
var numObj = 77.1234;
+
+console.log(numObj.toExponential());  // logs 7.71234e+1
+console.log(numObj.toExponential(4)); // logs 7.7123e+1
+console.log(numObj.toExponential(2)); // logs 7.71e+1
+console.log(77.1234.toExponential()); // logs 7.71234e+1
+console.log(77 .toExponential());     // logs 7.7e+1
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/tofixed/index.html b/files/pt-br/web/javascript/reference/global_objects/number/tofixed/index.html new file mode 100644 index 0000000000..1b64e75c82 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/tofixed/index.html @@ -0,0 +1,99 @@ +--- +title: Number.prototype.toFixed() +slug: Web/JavaScript/Reference/Global_Objects/Number/toFixed +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed +--- +
{{JSRef}}
+ +

O método toFixed() formata um número utilizando notação de ponto fixo.

+ +

Sintaxe

+ +
numObj.toFixed([dígitos])
+ +

Parâmetros

+ +
+
dígitos
+
Opcional. O número de dígitos que aparecem depois do ponto decimal; este pode ser um valor entre 0 e 20, inclusive, e algumas implementacões podem suportar uma variação de números maiores. Se este argumento for omitido, será tratado como 0. 
+
+ +

Retorno

+ +

Uma string representando o número usando notação em ponto fixo.

+ +

Throws

+ +
+
{{jsxref("RangeError")}}
+
Se dígitos for muito pequeno ou muito grande. Valores entre 0 e 20, inclusive, não irão causar o {{jsxref("RangeError")}}. É permitido às implementações suportar valores maiores e menores.
+
{{jsxref("TypeError")}}
+
Se este método for chamado em um objeto que não é {{jsxref( "Number")}}.
+
+ + +

Descrição

+

Uma string representando numObj que não usa notação exponencial e tem exatamente dígitos dígitos depois da casa decimal. O número será arredondado se necessário, e será adicionado zeros a parte após a virgula para que este tenha o tamanho que foi especificado. Se o numObj for maior que 1e+21, entao será invocado o método {{jsxref("Number.prototype.toString()")}} e será retornado uma string em notação exponencial.

+ +

Exemplos

+ +

Utilizando toFixed

+ +
var numObj = 12345.6789;
+
+numObj.toFixed();       // Retorna '12346': note o arredondamento, não possui nenhuma parte fracionária
+numObj.toFixed(1);      // Retorna '12345.7': note o arredondamento
+numObj.toFixed(6);      // Retorna '12345.678900': note que adicionou zeros
+(1.23e+20).toFixed(2);  // Retorna '123000000000000000000.00'
+(1.23e-10).toFixed(2);  // Retorna '0.00'
+2.34.toFixed(1);        // Retorna '2.3'
+2.35.toFixed(1);        // Retorna '2.4'. Note que arredonda para cima neste caso.
+-2.34.toFixed(1);       // Retorna -2.3 (devido à precedência do operador, literais de números negativos não retornam uma string...)
+(-2.34).toFixed(1);     // Retorna '-2.3' (...a menos que se utilize parênteses)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição incial. Implementada no 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')}} 
{{SpecName('ESDraft', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos navegadores

+ +
{{CompatibilityTable}}
+ +{{Compat("javascript.builtins.Number.toFixed")}} + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/tolocalestring/index.html b/files/pt-br/web/javascript/reference/global_objects/number/tolocalestring/index.html new file mode 100644 index 0000000000..d4ced2ffff --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/tolocalestring/index.html @@ -0,0 +1,176 @@ +--- +title: Number.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +tags: + - Internacionalização + - JavaScript + - Método(2) + - Number + - Número + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +--- +
{{JSRef}}
+ +

O método toLocaleString() retorna uma string com uma representação sensível a linguagem deste número.

+ +

Os novos argumentos locales e options permitem às aplicações especificar a linguagem cujas convenções de formatações serão utilizadas e personalizar o comportamento da função. Nas implementações anteriores, que ignorava os argumentos locales e options arguments, a localização utilizada e a forma de retornar a string erão totalmente dependente da implementação.

+ +

Sintaxe

+ +
numObj.toLocaleString([locales [, options]])
+ +

Parâmetros

+ +

Dê uma olhada na seção Compatibilidade do Navegador para verificar quais navegadores suportam os argumentos locales e options, e o Exemplo: Verificando o suporte dos argumentos locales e options para detecção desta característica.

+ +
+

Nota: ECMAScript Internationalization API, implementada com o Firefox 29, incluiu o argumento locales ao método Number.toLocaleString(). Se o argumento for {{jsxref("undefined")}}, este método retorna os dígitos de localização especificados pelo SO, enquanto que as versões anteriores doFirefox retornavam os dígitos Árabe Ocidental. Esta mudança foi relatada como uma regressão que afeta a retrocompatibilidade que será corrigida em breve. ({{bug(999003)}})

+
+ +
{{page('pt-BR/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parâmetros')}}
+ +

Exemplos

+ +

Usando toLocaleString

+ +

No uso básico sem a especificação de uma localização, o método retornará uma string formatada com a localização e as opções padrão.

+ +
var numero = 3500;
+
+console.log(numero.toLocaleString()); // Mostra "3,500" se a localização for U.S. English
+
+ +

Verificando o suporte dos argumentos locales e options

+ +

Os argumentos locales e options não são suportados por todos os navegadores ainda. Para verificar pelo suporte das implementações do ES5.1 e posteriores, a requisição de tags de linguagem ilegais são rejeitadas com uma exceção {{jsxref("Global_Objects/RangeError", "RangeError")}} pode ser usada da seguinte forma:

+ +
function toLocaleStringSupportsLocales() {
+  var numero = 0;
+  try {
+     numero.toLocaleString('i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Antes da ES5.1, implementações que não exigiam um tratamento de erro se toLocaleString fosse chamada com argumentos.

+ +

Uma verificação que funciona em todos os casos, incluindo aqueles que suportam ECMA-262 antes da edição 5.1, é testar pelas especificações de característicadas da ECMA-402 que exigem suporte de opções regionais para Number.prototype.toLocaleString diretamente:

+ +
function toLocaleStringSupportsOptions() {
+  return !!(typeof Intl == 'object' && Intl && typeof Intl.NumberFormat == 'function');
+}
+
+ +

Estes testes para um objeto Intl global, verifica se ele não é null e se uma propriedade NumberFormat é uma função.

+ +

Usando locales

+ +

Este exemplo mostra algumas variações de formatos de números localizados. A fim de obter o formato da linguagem utilizada na interface do usuário da sua aplicação, tenha certeza de especificar a língua (e possivelmente algumas línguas reservas) usando o argumento locales:

+ +
var numero = 123456.789;
+
+// O alemão usa vírgula como separador de decimal e ponto para milhares
+console.log(numero.toLocaleString('de-DE'));
+// → 123.456,789
+
+// O árabe usa dígitos Árabes Orientais em muitos países que falam árabe
+console.log(numero.toLocaleString('ar-EG'));
+// → ١٢٣٤٥٦٫٧٨٩
+
+// A Índia usa separadores de milhares/cem mil/dez milhões
+console.log(numero.toLocaleString('en-IN'));
+// → 1,23,456.789
+
+// A chave de extensão nu requer um sistema de numeração, ex. decimal chinês
+console.log(numero.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
+// → 一二三,四五六.七八九
+
+// Quando informada uma língua sem suporte, como balinês,
+// inclua uma língua reseva, neste caso indonésio
+console.log(numero.toLocaleString(['ban', 'id']));
+// → 123.456,789
+
+ +

Usando options

+ +

Os resultados obtidos por toLocaleString pode ser personalizado usando o argumento options:

+ +
var numero = 123456.789;
+
+// informando um formato de moeda
+console.log(numero.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
+// → 123.456,79 €
+
+// o yen japonês não tem uma unidade menor
+console.log(numero.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
+// → ¥123,457
+
+// limitando a três dígitos significativos
+console.log(numero.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
+// → 1,23,000
+
+ +

Desempenho

+ +

Quando formatar uma grande quantidade de números, é melhor criar um objeto {{jsxref("NumberFormat")}} e usar a função fornecida pela propriedade {{jsxref("NumberFormat.format")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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('ESDraft', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}{{Spec2('ESDraft')}} 
{{SpecName('ES Int 1.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}{{Spec2('ES Int 1.0')}} 
{{SpecName('ES Int 2.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}{{Spec2('ES Int 2.0')}} 
{{SpecName('ES Int Draft', '#sec-Number.prototype.toLocaleString', 'Number.prototype.toLocaleString')}}{{Spec2('ES Int Draft')}} 
+ +

Compatibilidade do navegador

+ +

{{Compat("javascript.builtins.Number.toLocaleString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/toprecision/index.html b/files/pt-br/web/javascript/reference/global_objects/number/toprecision/index.html new file mode 100644 index 0000000000..643a0b9a08 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/toprecision/index.html @@ -0,0 +1,104 @@ +--- +title: Number.prototype.toPrecision() +slug: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +--- +
{{JSRef}}
+ +
+ +

O método toPrecision() retorna uma string que representa o valor do objeto {{jsxref("Number")}} com uma precisão específica.

+ +
{{EmbedInteractiveExample("pages/js/number-toprecision.html")}}
+ +

Sintaxe

+ +
numObj.toPrecision([precisão])
+ +

Parâmetros

+ +
+
precisão
+
Opcional. Um inteiro especificando o número de algarismos significativos.
+
+ +

Retorno

+ +

Uma string representando um objeto {{jsxref("Number")}} em notação de ponto fixo ou exponencial arredondada segundo o parâmetro precisão. Veja a discussão sobre arredondamento feita na documentação do método {{jsxref("Number.prototype.toFixed()")}}, que também se aplica ao método toPrecision().

+ +

Se o parâmetro precisão for omitido, este método terá o mesmo comportamento de {{jsxref("Number.prototype.toString()")}}. Se o parâmetro precisão for um valor não inteiro, ele será arredondado para a sua representação mais próxima em inteiro.

+ +

Exceções

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
Se o valor de precisão não estiver compreendido entre 1 e 100 (inclusive), um  {{jsxref("RangeError")}} será lançado. É permitido às implementações suportar valores menores e maiores que esses, sendo um requisito do ECMA-262 que seja dado suporte a uma precisão de até 21 algarismos significativos.
+
+ +

Exemplos

+ +

Utilizando toPrecision

+ +
var numObj = 5.123456;
+
+console.log(numObj.toPrecision());    // logs '5.123456'
+console.log(numObj.toPrecision(5));   // logs '5.1235'
+console.log(numObj.toPrecision(2));   // logs '5.1'
+console.log(numObj.toPrecision(1));   // logs '5'
+
+numObj = 0.000123
+
+console.log(numObj.toPrecision());    // logs '0.000123'
+console.log(numObj.toPrecision(5));   // logs '0.00012300'
+console.log(numObj.toPrecision(2));   // logs '0.00012'
+console.log(numObj.toPrecision(1));   // logs '0.0001'
+
+// observe que a notação exponencial pode ser retornado em alguns casos
+console.log((1234.5).toPrecision(2)); // logs '1.2e+3'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementada no 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')}}
{{SpecName('ESDraft', '#sec-number.prototype.toprecision', 'Number.prototype.toPrecision')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com navegadores

+ + + +

{{Compat("javascript.builtins.Number.toPrecision")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/number/tosource/index.html new file mode 100644 index 0000000000..8d10118b0a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/tosource/index.html @@ -0,0 +1,48 @@ +--- +title: Number.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Number/toSource +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

O método toSource() retorna uma string contendo o código fonte do objeto.

+ +

Syntax

+ +
numObj.toSource()
+Number.toSource()
+ +

Valor retornado

+ +

Uma string contendo o código fonte do objeto.

+ +

Descrição

+ +

O método toSource() retorna os seguintes valores:

+ +

Para o objeto built-in {{jsxref("Number")}}, o método toSource() retorna a seguinte string indicando que o código fonte do objeto não está disponível:

+ +
function Number() {
+    [native code]
+}
+
+ +

Para instâncias do objeto {{jsxref("Number")}}, toSource() retorna uma string contendo o código fonte.

+ +

Este método normalmente é invocado internamente pelo JavaScript e não explicitamente em um código web.

+ +

Especificações

+ +

Não é parte de nenhuma especificação padrão. Implementado no JavaScript 1.3.

+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Number.toSource")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/number/tostring/index.html new file mode 100644 index 0000000000..6ebd43e978 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/tostring/index.html @@ -0,0 +1,143 @@ +--- +title: Number.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toString +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString +--- +
{{JSRef("Global_Objects", "Number")}}
+ +

Resumo

+ +

O método toString() retorna uma string representando o objeto {{jsxref("Global_Objects/Number", "Number")}} especificado.

+ +

Sintaxe

+ +
numObj.toString([radix])
+ +

Parâmetros

+ +
+
radix
+
Opcional. Um inteiro entre 2 e 36 especificando a base utilizada para representar os valores numéricos.
+
+ +

Exceções

+ +
+
{{jsxref("Global_Objects/RangeError", "RangeError")}}
+
se toString() receber um valor de radix fora do intervalo entre 2 e 36, uma exceção {{jsxref("Global_Objects/RangeError", "RangeError")}} é lançada.
+
+ +

Descrição

+ +

O objeto {{jsxref("Global_Objects/Number", "Number")}} sobrescreve o método toString() do objeto {{jsxref("Global_Objects/Object", "Object")}}; ele não herda  de {{jsxref("Object.prototype.toString()")}}. Para objetos {{jsxref("Global_Objects/Number", "Number")}}, o método toString() retorna uma representação string do objeto na base especificada.

+ +

O método toString() analisa seu primeiro argumento e tenta retornar uma representação string na raiz (base) especificada. Para raizes maiores que 10, as letras do alfabeto indicam valores maiores que 9. Por exemplo, para números hexadecimais (base 16),  letras entre a e f são utilizadas.

+ +

Se o radix não for especificado, a raiz assumida como preferencial é a 10.

+ +

Se o numObj for negativo, o sinal é preservado. Isto acontece mesmo se a raiz for 2; a string retornada é a representação binária positiva de numObj precedida por um sinal - e não o complemento de dois do numObj.

+ +

Exemplos

+ +

Exemplo: Usando toString

+ +
var count = 10;
+
+console.log(count.toString());    // displays '10'
+console.log((17).toString());     // displays '17'
+
+var x = 6;
+
+console.log(x.toString(2));       // displays '110'
+console.log((254).toString(16));  // displays 'fe'
+
+console.log((-10).toString(2));   // displays '-1010'
+console.log((-0xff).toString(2)); // displays '-11111111'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
ECMAScript 1ª edição.StandardDefinição inicial. Implementado no 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')}} 
+ +

Compatibilidade de navegadores

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/number/valueof/index.html b/files/pt-br/web/javascript/reference/global_objects/number/valueof/index.html new file mode 100644 index 0000000000..7406994df7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/number/valueof/index.html @@ -0,0 +1,80 @@ +--- +title: Number.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Number/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf +--- +
{{JSRef}}
+ +

O método valueOf() retorna o valor primitivo contido no objeto {{jsxref("Number")}}.

+ +
{{EmbedInteractiveExample("pages/js/number-valueof.html")}}
+ + + +

Sintaxe

+ +
numObj.valueOf()
+ +

Valor retornado

+ +

Um número representando o valor primitivo do objeto {{jsxref("Number")}}.

+ +

Descrição

+ +

Este método normalmente é invocado internamente pelo JavaScript e não explicitamente em um código web.

+ +

Exemplos

+ +

Utilizando valueOf

+ +
var numObj = new Number(10);
+console.log(typeof numObj); // object
+
+var num = numObj.valueOf();
+console.log(num);           // 10
+console.log(typeof num);    // number
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementada no 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')}} 
{{SpecName('ESDraft', '#sec-number.prototype.valueof', 'Number.prototype.valueOf')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Number.valueOf")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/__definegetter__/index.html b/files/pt-br/web/javascript/reference/global_objects/object/__definegetter__/index.html new file mode 100644 index 0000000000..4c942f9ba7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/__definegetter__/index.html @@ -0,0 +1,102 @@ +--- +title: Object.prototype.__defineGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +tags: + - Depreciado + - JavaScript + - Objeto + - Prototipo + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +--- +
{{JSRef}}
+ +
+

Esta característica está descontinuada em favor de definindo getters usando a sintaxe de inicialização de objeto ou a API {{jsxref("Object.defineProperty()")}}. Enquanto esta característica é amplamente implementada, ela está somente descrita na especificação ECMAScript por causa do uso legado. Este método não deveria ser usado desde que exista existam melhores alternativas.

+
+ +

O método __defineGetter__ conecta uma propriedade do objeto à uma função para ser chamada quando isso é consultado.

+ +

Sintaxe

+ +
obj.__defineGetter__(prop, func)
+ +

Parâmetros

+ +
+
prop
+
Uma string contendo o nome da propriedade para conectar a função dada.
+
func
+
Uma função para ser ligada a uma consulta da propriedade especificada.
+
+ +

Valor de Retorno

+ +

{{jsxref("undefined")}}.

+ +

Descrição

+ +

O __defineGetter__ permite um {{jsxref("Operators/get", "getter", "", 1)}} ser definido sobre um objeto preexistente.

+ +

Exemplos

+ +
// Forma não-padrão e depreciada
+
+var o = {};
+o.__defineGetter__('gimmeFive', function() { return 5; });
+console.log(o.gimmeFive); // 5
+
+
+// Formas padrão-compatível
+
+// Usando o operador get
+var o = { get gimmeFive() { return 5; } };
+console.log(o.gimmeFive); // 5
+
+// Usando Object.defineProperty
+var o = {};
+Object.defineProperty(o, 'gimmeFive', {
+  get: function() {
+    return 5;
+  }
+});
+console.log(o.gimmeFive); // 5
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-object.prototype.__defineGetter__', 'Object.prototype.__defineGetter__()')}}{{Spec2('ESDraft')}}Incluido no (normativa) anexo para adicionais características legadas ECMAScript para navegadores Web (note que a especificação codifica o que já está em implementações).
+ +

Compatibilidade de navagadores

+ +
+ + +

{{Compat("javascript.builtins.Object.defineGetter")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/__definesetter__/index.html b/files/pt-br/web/javascript/reference/global_objects/object/__definesetter__/index.html new file mode 100644 index 0000000000..0f82f96400 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/__definesetter__/index.html @@ -0,0 +1,117 @@ +--- +title: Object.prototype.__defineSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +tags: + - Deprecated + - Depreciado + - JavaScript + - Method + - Object + - Objeto + - Prototipo + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +--- +
{{JSRef}}
+ +
+

Esta funcionalidade está depreciada em favor da definição de setters usando a sintaxe de inicialização de objeto ou a API {{jsxref("Object.defineProperty()")}}.

+ +

Entretando, como ele é largamente implementado e usado na Web, é bem improvável que os navegadores vão parar de implementá-lo.

+
+ +

O método __defineSetter__ vincula uma propriedade de um objeto a uma função a ser chamada quando é feita uma tentativa de atribuir algo a aquela propriedade.

+ +

Sintaxe

+ +
obj.__defineSetter__(prop, fun)
+ +

Parâmetros

+ +
+
prop
+
Uma cadeia de caracteres (string) contendo o nome da propriedade que vai ser vinculada a função dada.
+
fun
+
A função a ser chamada quando houver uma tentativa de atribuir na propriedade especificada. Esta função toma a forma +
function(val) { . . . }
+ +
+
val
+
Um apelido para a variável que contém o valor que se tentou atribuir a prop.
+
+
+
+ +

Valor de retorno

+ +

{{jsxref("undefined")}}.

+ +

Descrição

+ +

O método __defineSetter__ permite um {{jsxref("Operators/set", "setter", "", 1)}} ser definido a um objeto pré-existente.

+ +

Exemplos

+ +

Não padronizados e forma depreciada

+ +
var o = {};
+o.__defineSetter__('value', function(val) { this.anotherValue = val; });
+o.value = 5;
+console.log(o.value); // undefined
+console.log(o.anotherValue); // 5
+
+ +

Formas compatíveis padronizadas

+ +
// Usando o operador set
+var o = { set value(val) { this.anotherValue = val; } };
+o.value = 5;
+console.log(o.value); // undefined
+console.log(o.anotherValue); // 5
+
+// Usando 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
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-object.prototype.__defineSetter__', 'Object.prototype.__defineSetter__()')}}
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Object.defineSetter")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/__lookupgetter__/index.html b/files/pt-br/web/javascript/reference/global_objects/object/__lookupgetter__/index.html new file mode 100644 index 0000000000..c9f2d29fcd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/__lookupgetter__/index.html @@ -0,0 +1,84 @@ +--- +title: Object.prototype.__lookupGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método __lookupGetter__ retorna a função limite como uma getter para a específica propriedade.

+ +

Sintaxe

+ +
obj.__lookupGetter__(sprop)
+ +

Parâmetros

+ +
+
sprop
+
Uma sequência de caracteres contendo o nome da propriedade cuja getter deve retornar.
+
+ +

Valores de retorno

+ +

A função limite como uma getter para a específica propriedade.

+ +

Descrição

+ +

Se uma getter foi definida por uma propriedade de um objeto, não é possível referir-se a função getter através da propriedade, porque essa propriedade se refere ao retorno do valor daquela função. __lookupGetter__ pode ser usado para obter referência à função getter.

+ +

Agora é possível fazer isso de um jeito uniforme usando:. {{jsxref("Object.getOwnPropertyDescriptor()")}} e  {{jsxref("Object.getPrototypeOf()")}}.

+ +

Examplos

+ +
var obj = {
+  get foo() {
+    return Math.random() > 0.5 ? 'foo' : 'bar';
+  }
+};
+
+
+// Non-standard and deprecated way
+obj.__lookupGetter__('foo');
+// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; })
+
+
+// Standard-compliant way
+Object.getOwnPropertyDescriptor(obj, "foo").get;
+// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; })
+
+ +

Specificações

+ + + + + + + + + + + + + + +
SpecificaçõesStatusComentários
{{SpecName('ESDraft', '#sec-object.prototype.__lookupGetter__', 'Object.prototype.__lookupGetter__()')}}{{Spec2('ESDraft')}}Incluído no (normativo) anexo para ECMAScript adicional recurso para Web (note que a especificação codificada está tendo implementações).
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Object.lookupGetter")}}

+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/__lookupsetter__/index.html b/files/pt-br/web/javascript/reference/global_objects/object/__lookupsetter__/index.html new file mode 100644 index 0000000000..a84545880f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/__lookupsetter__/index.html @@ -0,0 +1,92 @@ +--- +title: Object.prototype.__lookupSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +tags: + - Deprecated + - Depreciado + - JavaScript + - Method + - Object + - Objeto + - Prototipo + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método __lookupSetter__ retorna a função vinculada como setter para a propriedade especificada.

+ +

Sintaxe

+ +
obj.__lookupSetter__(sprop)
+ +

Parâmetros

+ +
+
sprop
+
Uma cadeia de caracteres (string) contendo o nome da propriedade a qual o setter deve ser retornado.
+
+ +

Valor de retorno

+ +

A função vinculada como setter para a propriedade especificada.

+ +

Descrição

+ +

Se o setter foi definido para uma propriedade do objeto, não era possível referenciar a função através da propriedade, porque aquela propriedade se refere ao valor de retorno da função. __lookupSetter__ pode ser usado para obter a referência para a função setter.

+ +

É possível agora fazer isso de forma padronizada usando {{jsxref("Object.getOwnPropertyDescriptor()")}}.

+ +

Exemplos

+ +

Formas compatíveis e não padronizadas de obter um definidor de propriedades

+ +
var obj = {
+  set foo(value) {
+    this.bar = value;
+  }
+};
+
+
+// Forma não padronizada e depreciada
+obj.__lookupSetter__('foo')
+// (function(value) { this.bar = value; })
+
+
+// Forma compatível padronizada
+Object.getOwnPropertyDescriptor(obj, 'foo').set;
+// (function(value) { this.bar = value; })
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-object.prototype.__lookupSetter__', 'Object.prototype.__lookupSetter__()')}}
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Object.lookupSetter")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/assign/index.html b/files/pt-br/web/javascript/reference/global_objects/object/assign/index.html new file mode 100644 index 0000000000..87d62130d2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/assign/index.html @@ -0,0 +1,223 @@ +--- +title: Object.assign() +slug: Web/JavaScript/Reference/Global_Objects/Object/assign +tags: + - ECMAScript 2015 + - JavaScript + - Method + - Object + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign +--- +
{{JSRef}}
+ +

O método Object.assign() é usado para copiar os valores de todas as propriedades próprias enumeráveis de um ou mais objetos de origem para um objeto destino. Este método irá retornar o objeto destino.

+ +

{{EmbedInteractiveExample("pages/js/object-assign.html")}}

+ + + +

Sintaxe

+ +
Object.assign(destino, ...origens)
+ +

Parâmetros

+ +
+
destino
+
O objeto destino.
+
origens
+
Um ou mais objetos de origem.
+
+ +

Valor retornado

+ +

O objeto destino será retornado.

+ +

Descrição

+ +

O método Object.assign() copia apenas propriedades enumeráveis e próprias de um objeto de origem para um objeto destino. Ele usa [[Get]] na origem e [[Put]] no destino, então isto irá invocar getters e setters.

+ +

Portanto, ele atribui propriedades, em vez de simplesmente copiar ou definir novas propriedades. Isso pode fazê-lo impróprio para combinar novas propriedades com um prototype se os objetos de origem contiverem getters. Para copiar definições de propriedades, incluindo sua enumerabilidade, para prototypes {{jsxref("Object.getOwnPropertyDescriptor()")}} e {{jsxref("Object.defineProperty()")}} devem ser utilizadas no lugar.

+ +

Ambas as propriedades {{jsxref("String")}} e {{jsxref("Symbol")}} são copiadas.

+ +

No caso de erro, por exemplo, se uma propriedade não é writable, um {{jsxref("TypeError")}} será lançado e o objeto destino permanecerá inalterado. Note que Object.assign() não lança erros caso algum argumento source seja {{jsxref("null")}} ou {{jsxref("undefined")}}.

+ +

Exemplos

+ +

Clonando um objeto

+ +
var obj = { a: 1 };
+var copy = Object.assign({}, obj);
+console.log(copy); // { a: 1 }
+
+ +

Mesclando objetos

+ +
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 }, target object itself is changed.
+
+ +

Copiando propriedades Symbol

+ +
var o1 = { a: 1 };
+var o2 = { [Symbol('foo')]: 2 };
+
+var obj = Object.assign({}, o1, o2);
+console.log(obj); // { a: 1, [Symbol("foo")]: 2 }
+
+ +

Propriedades herdadas e não enumeráveis não podem ser copiadas

+ +
var obj = Object.create({ foo: 1 }, { // foo is an inherit property.
+  bar: {
+    value: 2  // bar is a non-enumerable property.
+  },
+  baz: {
+    value: 3,
+    enumerable: true  // baz is an own enumerable property.
+  }
+});
+
+var copy = Object.assign({}, obj);
+console.log(copy); // { baz: 3 }
+
+ +

Primitivas serão encapsuladas em objetos

+ +
var v1 = '123';
+var v2 = true;
+var v3 = 10;
+var v4 = Symbol('foo')
+
+var obj = Object.assign({}, v1, null, v2, undefined, v3, v4);
+// Primitives will be wrapped, null and undefined will be ignored.
+// Note, only string wrappers can have own enumerable properties.
+console.log(obj); // { "0": "1", "1": "2", "2": "3" }
+
+ +

Exceções irão interromper a tarefa de cópia em execução

+ +
var target = Object.defineProperty({}, 'foo', {
+  value: 1,
+  writeable: false
+}); // target.foo is a read-only property
+
+Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 });
+// TypeError: "foo" is read-only
+// The Exception is thrown when assigning target.foo
+
+console.log(target.bar);  // 2, the first source was copied successfully.
+console.log(target.foo2); // 3, the first property of the second source was copied successfully.
+console.log(target.foo);  // 1, exception is thrown here.
+console.log(target.foo3); // undefined, assign method has finished, foo3 will not be copied.
+console.log(target.baz);  // undefined, the third source will not be copied either.
+
+ +

Copiando acessores

+ +
var obj = {
+  foo: 1,
+  get bar() {
+    return 2;
+  }
+};
+
+var copy = Object.assign({}, obj);
+console.log(copy);
+// { foo: 1, bar: 2 }, the value of copy.bar is obj.bar's getter's return value.
+
+// This is an assign function which can copy accessors.
+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 } }
+
+ +

Polyfill

+ +

Este polyfill não suporta propriedades {{jsxref("Symbol")}}, visto que ES5 não possui símbolos:

+ +
if (!Object.assign) {
+  Object.defineProperty(Object, 'assign', {
+    enumerable: false,
+    configurable: true,
+    writable: true,
+    value: function(target) {
+      '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;
+        }
+        nextSource = Object(nextSource);
+
+        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;
+    }
+  });
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-object.assign', 'Object.assign')}}{{Spec2('ES2015')}}Definição inicial
+ +

Compatibilidade nos navegadores

+ + + +

{{Compat("javascript.builtins.Object.assign")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/constructor/index.html b/files/pt-br/web/javascript/reference/global_objects/object/constructor/index.html new file mode 100644 index 0000000000..4a0729a84f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/constructor/index.html @@ -0,0 +1,192 @@ +--- +title: Object.prototype.constructor +slug: Web/JavaScript/Reference/Global_Objects/Object/constructor +tags: + - Constructor + - Objeto + - Propriedade + - object.constructor +translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Sumário

+ +

Retorna uma referência para a função {{jsxref("Global_Objects/Object", "Object")}} que cria a instância do protótipo. Note que o valor desse protótipo é uma referência para a própria função, não uma string contendo o nome da função. O valor é apenas read-only para valores primitivos como 1true"test".

+ +

Descrição

+ +

Todos os objetos herdam a propriedade construtor de seu protótipo:

+ +
var o = {};
+o.constructor === Object; // true
+
+var a = [];
+a.constructor === Array; // true
+
+var n = new Number(3);
+n.constructor === Number; // true
+
+ +

Exemplos

+ +

Exemplo: Apresentando o construtor de um objeto

+ +

O exemplo a seguir cria um protótipo, Tree, e um objeto desse tipo, theTree. O exemplo, então, apresenta a propriedade constructor do objeto theTree.

+ +
function Tree(name) {
+  this.name = name;
+}
+
+var theTree = new Tree('Redwood');
+console.log('theTree.constructor is ' + theTree.constructor);
+
+ +

Esse exemplo apresenta a seguinte saída:

+ +
theTree.constructor is function Tree(name) {
+  this.name = name;
+}
+
+ +

Exemplo: Mudando o construtor de um objeto

+ +

O exemplo a seguir apresenta como modificar o valor do construtor de um objeto genérico. Apenas true, 1 e "test" não serão afetados sendo que eles tem construtores read-only nativos. Esse exemplo apresenta que nem sempre é seguro depender da propriedade constructor de um objeto.

+ +
function Type () {}
+
+var types = [
+  new Array(),
+  [],
+  new Boolean(),
+  true,             // remains unchanged
+  new Date(),
+  new Error(),
+  new Function(),
+  function () {},
+  Math,
+  new Number(),
+  1,                // remains unchanged
+  new Object(),
+  {},
+  new RegExp(),
+  /(?:)/,
+  new String(),
+  'test'            // remains unchanged
+];
+
+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'));
+
+ +

Esse exemplo apresenta a seguinte saída:

+ +
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,test
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1ª Edição.PadrãoDefinição inicial. Implementado no 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')}} 
+ +

Compatibilidade de Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
diff --git a/files/pt-br/web/javascript/reference/global_objects/object/count/index.html b/files/pt-br/web/javascript/reference/global_objects/object/count/index.html new file mode 100644 index 0000000000..24b13a68b8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/count/index.html @@ -0,0 +1,46 @@ +--- +title: Object.prototype.__count__ +slug: Web/JavaScript/Reference/Global_Objects/Object/count +tags: + - JavaScript + - Não-padronizado + - Objeto + - Obsoleto + - Propriedade + - Prototipo + - Prototype +translation_of: Archive/Web/JavaScript/Object.count +--- +
{{JSRef}}{{Non-standard_Header}}{{obsolete_header("gecko2")}}
+ +

A propriedade __count__ usada para armazenar a contagem de propriedades enumeráveis sobre o objeto, mas ele foi removido.

+ +

Sintaxe

+ +
obj.__count__
+ +

Exemplos

+ +
{ 1: 1 }.__count__              // 1
+[].__count__                    // 0
+[1].__count__                   // 1
+[1, /* hole */, 2, 3].__count__ // 3
+
+ +

Especificações

+ +

Não faz parte de qualquer especificação.

+ +

Compatibilidade de navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.count")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/create/index.html b/files/pt-br/web/javascript/reference/global_objects/object/create/index.html new file mode 100644 index 0000000000..9c37fa8fcc --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/create/index.html @@ -0,0 +1,260 @@ +--- +title: Object.create() +slug: Web/JavaScript/Reference/Global_Objects/Object/create +translation_of: Web/JavaScript/Reference/Global_Objects/Object/create +--- +
{{JSRef}}
+ +

O método Object.create() cria um novo objeto, utilizando um outro objecto existente como protótipo para o novo objeto a ser criado.

+ +

Sintaxe

+ +
Object.create(proto[, propertiesObject])
+ +

Parâmetros

+ +
+
proto
+
O objeto que deve ser o protótipo do objeto recém-criado.
+
propertiesObject
+
Opcional. Se especificado e não {{jsxref("undefined")}}, um objeto cuja as propriedades próprias enumeráveis (isto é, aquelas propriedades definidas sobre si mesmo, e não propriedades enumeráveis ao longo da sua cadeia protótipa) especificam os nomes das propriedades a serem adicionadas ao objeto recém-criado, com os nomes das propriedades correspondentes. Essas propriedades correspondem ao segundo argumento de {{jsxref("Object.defineProperties()")}}.
+
+ +

Retorno

+ +

Um novo objeto com o protótipo de objeto e propriedades especificadas.

+ +

Exceções

+ +

Uma exceção {{jsxref("TypeError")}} se o parâmetro proto não for {{jsxref("null")}} ou um objeto.

+ +

Exemplos

+ +

Herança tradicional com Object.create()

+ +

A seguir, um exemplo de como usar Object.create() para realizar uma herança tradicional. Isto é para herança simples, que é a única herança suportada pelo JavaScript.

+ +
// Shape - superclasse
+function Shape() {
+  this.x = 0;
+  this.y = 0;
+}
+
+// método da superclasse
+Shape.prototype.move = function(x, y) {
+  this.x += x;
+  this.y += y;
+  console.info('Shape moved.');
+};
+
+// Rectangle - subclasse
+function Rectangle() {
+  Shape.call(this); // chama construtor-pai.
+}
+
+// subclasse extende superclasse
+Rectangle.prototype = Object.create(Shape.prototype);
+Rectangle.prototype.constructor = Rectangle;
+
+var rect = new Rectangle();
+
+console.log('Rect é uma instância de Rectangle?', rect instanceof Rectangle);// true
+console.log('Rect é uma instância de Shape?', rect instanceof Shape);// true
+rect.move(1, 1); // Saída: 'Shape moved.'
+
+ +

Caso queira realizar herança de múltiplos objetos, então mixins ("mistura") são uma possibilidade.

+ +
function MyClass() {
+  SuperClass.call(this);
+  OtherSuperClass.call(this);
+}
+
+MyClass.prototype = Object.create(SuperClass.prototype); // herança
+mixin(MyClass.prototype, OtherSuperClass.prototype); // mixin
+
+MyClass.prototype.myMethod = function() {
+  // faz algo
+};
+
+ +

A função mixin copia as funções do protótipo da superclasse para o protótipo da subclasse, a função mixin precisa ser fornecida pelo usuário. Um exemplo de uma função do tipo mixin seria jQuery.extend().

+ +

Usando argumento propertiesObject com Object.create()

+ +
var o;
+
+// cria um objeto com protótipo null
+o = Object.create(null);
+
+
+o = {};
+// equivalente a:
+o = Object.create(Object.prototype);
+
+
+// Exemplo em que criamos um objeto com algumas propriedades
+// (Note que o segundo parâmetro mapeia as chaves para *descritores de propriedade*.)
+o = Object.create(Object.prototype, {
+  // foo é uma 'propriedade de valor' ('value property') normal
+  foo: { writable: true, configurable: true, value: 'hello' },
+  // bar é uma propriedade getter-setter (accessor)
+  bar: {
+    configurable: false,
+    get: function() { return 10; },
+    set: function(value) { console.log('Setting `o.bar` to', value); }
+/* com os ES5 Accessors nosso código pode ser escrito como:
+    get function() { return 10; },
+    set function(value) { console.log('setting `o.bar` to', value); } */
+  }
+});
+
+
+function Constructor() {}
+o = new Constructor();
+// equivalente a:
+o = Object.create(Constructor.prototype);
+// Claro, se há de fato um código de inicialização na função
+// Constructor, o Object.create() não pode refleti-la
+
+
+// Cria um novo objeto cujo protóptipo é um objeto novo, vazio
+// e adiciona a propriedade 'p' com o valor 42.
+o = Object.create({}, { p: { value: 42 } });
+
+// por padrão, propriedades NÃO SÃO escritas, enumeradas ou configuráveis:
+o.p = 24;
+o.p;
+// 42
+
+o.q = 12;
+for (var prop in o) {
+  console.log(prop);
+}
+// 'q'
+
+delete o.p;
+// false
+
+// especificar uma propriedade ES3
+o2 = Object.create({}, {
+  p: {
+    value: 42,
+    writable: true,
+    enumerable: true,
+    configurable: true
+  }
+});
+
+ +

Polyfill

+ +

Este polyfill cobre o caso de uso principal que é a crição de um novo objeto em que o protótipo foi escolhido mas não leva em consideração o segundo argumento.

+ +

Note que, enquanto a configuração  null as [[Prototype]] é suportada no ES5 Object.create, este polyfill não suporta devido à limitação inerente em versões do ECMAScript inferiores a 5.

+ +
if (typeof Object.create != 'function') {
+  Object.create = (function() {
+    var Temp = function() {};
+    return function (prototype) {
+      if (arguments.length > 1) {
+        throw Error('Second argument not supported');
+      }
+      if (typeof prototype != 'object') {
+        throw TypeError('Argument must be an object');
+      }
+      Temp.prototype = prototype;
+      var result = new Temp();
+      Temp.prototype = null;
+      return result;
+    };
+  })();
+}
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES5.1', '#sec-15.2.3.5', 'Object.create')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.create', 'Object.create')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.create', 'Object.create')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("2")}}{{CompatVersionUnknown}}{{CompatOperaMobile("11.5")}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/defineproperties/index.html b/files/pt-br/web/javascript/reference/global_objects/object/defineproperties/index.html new file mode 100644 index 0000000000..da7ca6540a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/defineproperties/index.html @@ -0,0 +1,233 @@ +--- +title: Object.defineProperties() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +tags: + - ECMAScript5 + - JavaScript + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +--- +
{{JSRef}}
+ +

O método  Object.defineProperties() define uma nova propriedade ou modifica uma existente no objeto, retornando o objeto.

+ +

Sintaxe

+ +
Object.defineProperties(obj, props)
+ +

Parâmetros

+ +
+
obj
+
O objeto no qual se cria ou modifica suas propriedades.
+
props
+
Um objeto do qual propriedades enumeráveis constitui descritores para as propriedades serem definidas ou modificadas. Descritores de propriedade presente nos objetos provém em dois principais tipos: descritores de dados e de acesso (veja {{jsxref("Object.defineProperty()")}} para mais detalhes). Descritores têm as seguintes chaves:
+
+
+
configurable
+
true se e somente se o tipo deste descritor de propriedades pode ser modificada e se a propriedade pode ser apagada do objeto correspondente.
+ Valor padrão é false.
+
enumerable
+
true se e somente se este propriedade aparece durante enumeração das propriedade sobre o objeto correspondente.
+ Valor padrão é false.
+
+ +
+
value
+
O valor associado com a propriedade. Pode ser qualquer valor válido em JavaScript value (número, objeto, função, etc).
+ Valor padrão é {{jsxref("undefined")}}.
+
writable
+
true se e somente se o valor associado com a propriedade pode ser modificada com um {{jsxref("Operators/Assignment_Operators", "assignment operator", "", 1)}}.
+ Valor padrão é false.
+
+ +
+
get
+
Uma função a qual serve com um getter para a propriedade, ou {{jsxref("undefined")}} se não existe getter. A retorno da função será usado como o valor da propriedade.
+ Valor padrão é {{jsxref("undefined")}}.
+
set
+
Uma função a qual server com um setter para a propriedade, ou {{jsxref("undefined")}} se não existe setter. A função receberá como argumento somente o novo valor sendo atribuído à propriedade.
+ Valor padrão é {{jsxref("undefined")}}.
+
+
+
+ +

Valor de retorno

+ +

O objeto que foi passado para a função.

+ +

Descrição

+ +

Object.defineProperties, em essência, define todas as propriedades correspondentes para as propriedades próprias  enumeráveis de props sobre o objeto obj.

+ +

Exemplo

+ +
var obj = {};
+Object.defineProperties(obj, {
+  'property1': {
+    value: true,
+    writable: true
+  },
+  'property2': {
+    value: 'Hello',
+    writable: false
+  }
+  // etc. etc.
+});
+
+ +

Polyfill

+ +

Assumindo uma execução intocada com todos os nomes e propriedades referindo para seus valores iniciais, Object.defineProperties é quase completamente equivalente (note o comentário em isCallable) para a seguinte reimplementação em JavaScript:

+ +
function defineProperties(obj, properties) {
+  function convertToDescriptor(desc) {
+    function hasProperty(obj, prop) {
+      return Object.prototype.hasOwnProperty.call(obj, prop);
+    }
+
+    function isCallable(v) {
+      // NB: modify as necessary if other values than functions are callable.
+      return typeof v === 'function';
+    }
+
+    if (typeof desc !== 'object' || desc === null)
+      throw new TypeError('bad desc');
+
+    var d = {};
+
+    if (hasProperty(desc, 'enumerable'))
+      d.enumerable = !!desc.enumerable;
+    if (hasProperty(desc, 'configurable'))
+      d.configurable = !!desc.configurable;
+    if (hasProperty(desc, 'value'))
+      d.value = desc.value;
+    if (hasProperty(desc, 'writable'))
+      d.writable = !!desc.writable;
+    if (hasProperty(desc, 'get')) {
+      var g = desc.get;
+
+      if (!isCallable(g) && typeof g !== 'undefined')
+        throw new TypeError('bad get');
+      d.get = g;
+    }
+    if (hasProperty(desc, 'set')) {
+      var s = desc.set;
+      if (!isCallable(s) && typeof 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;
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.7', 'Object.defineProperties')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.8.5
{{SpecName('ES6', '#sec-object.defineproperties', 'Object.defineProperties')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.defineproperties', 'Object.defineProperties')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureFirefox (Gecko)ChromeEdgeInternet ExplorerOperaSafari
Suporte básico{{CompatGeckoDesktop("2")}}{{CompatChrome("5")}}{{CompatVersionUnknown}}{{CompatIE("9")}}{{CompatOpera("11.60")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox Mobile (Gecko)AndroidEdgeIE MobileOpera MobileSafari Mobile
Suporte básico{{CompatGeckoMobile("2")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatOperaMobile("11.5")}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/defineproperty/index.html b/files/pt-br/web/javascript/reference/global_objects/object/defineproperty/index.html new file mode 100644 index 0000000000..25ad45b438 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/defineproperty/index.html @@ -0,0 +1,478 @@ +--- +title: Object.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +tags: + - ECMAScript5 + - JavaScript + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +--- +
{{JSRef}}
+ +
+ +

O método Object.defineProperty() define uma nova propriedade diretamente em um objeto, ou modifica uma propriedade já existente em um objeto, e retorna o objeto.

+ +
+

Nota: Você invoca este método diretamente no construtor do {{jsxref("Object")}} ao invés de invocar em uma instância do tipo Object.

+
+ +

Sintaxe

+ +
Object.defineProperty(obj, prop, descriptor)
+ +

Parâmetros

+ +
+
obj
+
O objeto no qual será definida a propriedade.
+
prop
+
O nome da propriedade que será definida ou modificada.
+
descriptor
+
O descritor para a propriedade que será definida ou modificada.
+
+ +

Valor de retorno

+ +

O objeto que foi passado à função.

+ +

Descrição

+ +

Esse método permite uma precisa inclusão ou modificação de uma propriedade em um objeto. Enquanto a inclusão de propriedades através de atribuição cria propriedades que são visíveis durante a enumeração (por repetições {{jsxref("Statements/for...in", "for...in")}} ou pelo método {{jsxref("Object.keys")}}), e cujos valores podem ser alterados e {{jsxref("Operators/delete", "deletados", "", 1)}}, esse método permite a modificação deste comportamento padrão. Por padrão, valores incluídos utilizando Object.defineProperty() são imutáveis.

+ +

Os descritores de propriedades presentes nos objetos se apresentam em duas variedades: descritores de dados e descritores de assessores. Um descritor de dado é uma propriedade que contém um valor, podendo este ser gravável ou não. Um descritor de assessor é uma propriedade definida como um par de funções getter-setter. Um descritor deve ser de uma destas variedades; não pode ser de ambas.

+ +

Ambos os descritores de dados e de assessor são objetos. Eles compartilham as seguintes chaves obrigatórias:

+ +
+
configurable
+
true se e somente se o tipo deste descritor de propriedade pode ser alterado e se a propriedade pode ser deletada do objeto correspondente.
+ Valor padrão é false.
+
enumerable
+
true se e somente se esta propriedade aparece durante enumeração das propriedades no objeto correspondente.
+ Valor padrão é false.
+
+ +

Um descritor de dados também possui as seguintes chaves opcionais:

+ +
+
value
+
O valor associado com a propriedade. Pode ser qualquer valor válido em Javascript  (número, objeto, função, etc).
+ Valor padrão é {{jsxref("undefined")}}.
+
writable
+
true se e somente se o valor associado com a propriedade pode ser modificada com um {{jsxref("Operators/Assignment_Operators", "operador de atribuição", "", 1)}}.
+ Valor padrão é false.
+
+ +

Um descritor de assessor também possui as seguintes chaves opcionais:

+ +
+
get
+
Uma função que servirá como um getter da propriedade, ou {{jsxref("undefined")}} se não houver getter. Quando a propriedade é acessada, esta função é chamada sem argumentos e com this define para o objeto no qual a propriedade é acessada (este pode não ser o objeto sobre o qual a propriedade está definida devido a herança). O valor retornado será usado como valor da propriedade.
+ Valor padrão é {{jsxref("undefined")}}.
+
set
+
A função que servirá como um setter para a propriedade, ou {{jsxref("undefined")}} se não houver setter. Quando a propriedade é atribuída, esta função é chamada com um argumento (o valor sendo atribuído para a propriedade) e com this configura o objeto através do qual a propriedade é atribuída.
+ Valor padrão é {{jsxref("undefined")}}.
+
+ +

Se um descritor tem  nenhum das chaves valuewritableget e set, ele é tratado como um descritor de dados. Se um descritor tem ambas chaves value ou writable e get ou set keys, uma exceção é lançada.

+ +

Tenha em mente que estes atributos não são necessariamente as propriedades do próprio descritor. Propriedades herdadas serão consideradas também. Para garantir que estes padrões sejam preservados, você pode congelar o {{jsxref("Object.prototype")}} previamente, declarar todas as opções explicitamente, ou apontar para {{jsxref("null")}} com {{jsxref("Object.create", "Object.create(null)")}}.

+ +
// usando __proto__
+var obj = {};
+var descriptor = Object.create(null); // não herdar propriedades
+// não enumerável, não configurável, não gravável por padrão
+descriptor.value = 'static';
+Object.defineProperty(obj, 'key', descriptor);
+
+// declarando explicitamente
+Object.defineProperty(obj, 'key', {
+  enumerable: false,   // não enumerável
+  configurable: false, // não configurável
+  writable: false,     // não gravável
+  value: 'static'
+});
+
+// reciclando um mesmo objeto
+function withValue(value) {
+  var d = withValue.d || (
+    withValue.d = {
+      enumerable: false,
+      writable: false,
+      configurable: false,
+      value: null
+    }
+  );
+  d.value = value;
+  return d;
+}
+
+// ... e ...
+Object.defineProperty(obj, 'key', withValue('static'));
+
+// se o método freeze estiver disponível, prevenir as propriedades
+// (value, get, set, enumerable, writable, configurable) de serem
+// incluídas ou removidas do protótipo do objeto
+(Object.freeze || Object)(Object.prototype);
+ +

Exemplos

+ +

Se você deseja utilizar o método Object.defineProperty com uma sintaxe estilo flags-binárias, veja os exemplos adicionais.

+ +

Criando uma propriedade

+ +

Quando a propriedade especificada não existe no objeto, Object.defineProperty()  cria uma nova propriedade conforme descrito anteriormente. Campos podem ser omitidos no descritor, e os valores padrão para esses campos serão introduzidos.

+ +

Todos os campos do tipo Boolean possuem como valor padrão false. Os campos value, get, e set possuem como padrão {{jsxref("undefined")}}.  Uma propriedade que é definida sem os valores para get/set/value/writable é dita "genérica" e classificada como um descritor de dados.

+ +
var o = {}; // Criar um novo objeto
+
+// Exemplo de propriedade de objeto inserida através
+// de defineProperty com descritor do tipo dado
+Object.defineProperty(o, 'a', {
+  value: 37,
+  writable: true,
+  enumerable: true,
+  configurable: true
+});
+// A propriedade 'a' existe no objeto com valor 37
+
+// Exemplo de propriedade de objeto inserida através
+// de defineProperty com descritor do tipo assessor
+var bValue = 38;
+
+Object.defineProperty(o, 'b', {
+  get: function() { return bValue; },
+  set: function(newValue) { bValue = newValue; },
+  enumerable: true,
+  configurable: true
+});
+
+o.b; // 38
+// A propriedade 'b' existe no objeto com valor 38
+// O valor de o.b será sempre idêntico a bValue, a
+// menos que o.b seja redefinido
+
+// Você não pode combinar ambos os tipos:
+Object.defineProperty(o, 'conflict', {
+  value: 0x9f91102,
+  get: function() { return 0xdeadbeef; }
+});
+// lança um TypeError: value existe apenas em descritores
+// de dado, get existe apenas em descritores de assessor
+ +

Modificando uma propriedade

+ +

Quando uma propriedade já existe, Object.defineProperty() tenta modificá-la de acordo com os valores do descritor e a configuração atual do objeto. Se o descritor antigo possuía seu atributo configurable como false a propriedade é chamada "não configurável" e nenhum atributo pode ser alterado (exceto a alteração irreversível de writable para false). Não é possível alternar o tipo de uma propriedade entre dados e assessor quando esta for não-configurável.

+ +

Um {{jsxref("TypeError")}} é lançado quando são realizadas tentativas de se alterar propriedades não-configuráveis (exceto o atributo writable) a menos que o valor atual e o novo sejam os mesmos.

+ +

O atributo writable

+ +

Quando o atributo writable de uma propriedade é definido como false, a propriedade é dita "não-gravável". Seu valor não poderá ser alterado.

+ +
var o = {}; // Cria um novo objeto
+
+Object.defineProperty(o, 'a', {
+  value: 37,
+  writable: false
+});
+
+console.log(o.a); // escreve 37
+
+o.a = 25; // Nenhum erro é lançado (no modo strict seria
+          // lançado mesmo que o valor fosse o mesmo)
+
+console.log(o.a); // escreve 37. A atribuição não teve efeito.
+ +

Como visto no exemplo, tentativas de escrita em uma propriedade não-gravável não alteram seu valor, mas também não lançam erros.

+ +

O atributo enumerable

+ +

O atributo enumerable de uma propriedade define se ela deve ser exibida em uma repetição {{jsxref("Statements/for...in", "for...in")}} e por {{jsxref("Object.keys()")}} ou não.

+ +
var o = {};
+
+Object.defineProperty(o, 'a', {
+  value: 1,
+  enumerable: true
+});
+
+Object.defineProperty(o, 'b', {
+  value: 2,
+  enumerable: false
+});
+
+Object.defineProperty(o, 'c', {
+  value: 3
+}); // o valor padrão para enumerable é false
+
+o.d = 4; // o valor padrão para enumerable é true quando
+         // a propriedade é criada em uma atribuição
+
+for (var i in o) {
+  console.log(i);
+}
+// escreve 'a' e 'd' (em ordem indefinida)
+
+Object.keys(o); // ['a', 'd']
+
+o.propertyIsEnumerable('a'); // true
+o.propertyIsEnumerable('b'); // false
+o.propertyIsEnumerable('c'); // false
+ +

O atributo configurable

+ +

O atributo configurable controla ao mesmo se uma propriedade pode ser deletada do objeto, e se seus atributos (exceto a mudança de writable para false) podem ser alterados.

+ +
var o = {};
+
+Object.defineProperty(o, 'a', {
+  get: function() { return 1; },
+  configurable: false
+});
+
+Object.defineProperty(o, 'a', {
+  configurable: true
+}); // lança um TypeError
+
+Object.defineProperty(o, 'a', {
+  enumerable: true
+}); // lança um TypeError
+
+Object.defineProperty(o, 'a', {
+  set: function() {}
+}); // lança um TypeError (o atributo set já estava definido)
+
+Object.defineProperty(o, 'a', {
+  get: function() { return 1; }
+}); // lança um TypeError
+    // (mesmo o novo get fazendo exatamente a mesma coisa)
+
+Object.defineProperty(o, 'a', {
+  value: 12
+}); // lança um TypeError
+
+console.log(o.a); // escreve 1
+delete o.a; // Nada acontece
+console.log(o.a); // escreve 1
+ +

Se o atributo configurable de o.a fosse true, nenhum dos erros seria lançado e a propriedade estaria deletada ao final.

+ +

Incluindo propriedades e valores padrão

+ +

É importante considerar a forma como os valores padrão para atributos são aplicados. Normalmente existe diferença entre usar a notação por ponto para atribuir um valor e usar Object.defineProperty(), como pode ser visto no exemplo abaixo:

+ +
var o = {};
+
+o.a = 1;
+
+// é equivalente a:
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: true,
+  configurable: true,
+  enumerable: true
+});
+
+// Por outro lado,
+Object.defineProperty(o, 'a', { value: 1 });
+
+// é equivalente a:
+Object.defineProperty(o, 'a', {
+  value: 1,
+  writable: false,
+  configurable: false,
+  enumerable: false
+});
+ +

Setters e getters customizados

+ +

O exemplo abaixo mostra como implementar um objeto auto-arquivável. Quando a propriedade temperature é atribuída, o array archive recebe uma nova entrada de log.

+ +
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 }]
+ +

Neste exemplo, um getter sempre returna o mesmo valor.

+ +
var pattern = {
+    get: function () {
+        return 'Eu sempre retorno esta string, ' +
+               'não importa o que você atribuiu';
+    },
+    set: function () {
+        this.myname = 'esta string é meu nome';
+    }
+};
+
+function TestDefineSetAndGet() {
+    Object.defineProperty(this, 'myproperty', pattern);
+}
+
+var instance = new TestDefineSetAndGet();
+instance.myproperty = 'test';
+
+console.log(instance.myproperty);
+// Eu sempre retorno esta string, não importa o que você atribuiu
+
+console.log(instance.myname); // esta string é meu nome
+
+ +

Propriedades de Herança 

+ +

Se uma propriedade de acessor é herdada, métodos get e set serão chamados quando a propriedade é acessada e modificada sobre os objetos descendentes. Se estes métodos usam uma variável para armazenar o valor, este valor será compartilhada por todos os objetos.

+ +
function myclass() {
+}
+
+var value;
+Object.defineProperty(myclass.prototype, "x", {
+  get() {
+    return value;
+  },
+  set(x) {
+    value = x;
+  }
+});
+
+var a = new myclass();
+var b = new myclass();
+a.x = 1;
+console.log(b.x); // 1
+ +

Isto pode ser corrigido armazenando o valor em outra propriedade. Em métodos get e setthis aponta para o objeto no qual é usado para acessar ou modificar a propriedade.

+ +
function myclass() {
+}
+
+Object.defineProperty(myclass.prototype, "x", {
+  get() {
+    return this.stored_x;
+  },
+  set(x) {
+    this.stored_x = x;
+  }
+});
+
+var a = new myclass();
+var b = new myclass();
+a.x = 1;
+console.log(b.x); // undefined
+ +

Ao contrário das propriedades do acessor, propriedades do valor serão sempre configuradas sobre  o próprio objeto, não sobre um protótipo. Entretanto, se uma propriedade de valor não-gravável é herdada, ele ainda previne de modicação a propriedade do objeto.

+ +
function myclass() {
+}
+
+myclass.prototype.x = 1;
+Object.defineProperty(myclass.prototype, "y", {
+  writable: false,
+  value: 1
+});
+
+var a = new myclass();
+a.x = 2;
+console.log(a.x); // 2
+console.log(myclass.prototype.x); // 1
+a.y = 2; // Ignorado, lança no modo strict
+console.log(a.y); // 1
+console.log(myclass.prototype.y); // 1
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES5.1', '#sec-15.2.3.6', 'Object.defineProperty')}}{{Spec2('ES5.1')}}Definição inicial. Implementada no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.defineproperty', 'Object.defineProperty')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-object.defineproperty', 'Object.defineProperty')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de browser

+ + + +

{{Compat("javascript.builtins.Object.defineProperty")}}

+ +

Notas de compatibilidade

+ +

Redefinindo a propriedade length de um objeto Array 

+ +

É possível redefinir a propriedade {{jsxref("Array.length", "length")}} de arrays, sujeita às restrições de redefinição usuais. (A propriedade {{jsxref("Array.length", "length")}} é inicialmente não configurável, não enumerável, mas gravável. Assim, em um array que não foi modificado, é possível alterar o valor da propriedade {{jsxref("Array.length", "length")}} ou torná-la não-gravável. Não é permitido alterar sua enumerabilidade ou configurabilidade, ou quando se encontrar não-gravável, alterar seu valor ou torná-la gravável novamente.) Entretanto, nem todos os browsers permitem esta redefinição.

+ +

Das versões 4 até 22 do Firefox, um {{jsxref("TypeError")}} é lançado em qualquer tentativa (seja ela permitida ou não) de redefinir a propriedade {{jsxref("Array.length", "length")}} de um array.

+ +

Versões do Chrome que implementam Object.defineProperty() em algumas circunstâncias ignoram um valor para length diferente do valor atual da propriedade {{jsxref("Array.length", "length")}} do array. Em algumas circustâncias, alterar o atributo writable falha de forma silenciosa (sem lançar uma exceção). Além disso, alguns métodos que modificam o array como {jsxref("Array.prototype.push")}} não respeitam uma propriedade length não-gravável.

+ +

Versões do Safari que implementam Object.defineProperty() ignoram um valor para length diferente do valor atual da propriedade {{jsxref("Array.length", "length")}}, e tentantivas de alterar o atributo writable executam sem erros embora não modifiquem seu comportamento.

+ +

Apenas o Internet Explorer 9 a posteriores, e o Firefox 23 e posteriores, parecem implementar total e corretamente a redefinição da propriedade {{jsxref("Array.length", "length")}} de arrays. Por enquanto, não confie que a redefinição da propriedade {{jsxref("Array.length", "length")}} vá funcionar, mesmo que de uma forma particular. E mesmo quando você puder confiar, existem boas razões para não fazer isso.

+ +

Notas específicas para o Internet Explorer 8

+ +

O Internet Explorer 8 implementa o método Object.defineProperty() para uso apenas em objetos DOM. Algumas observações:

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/entries/index.html b/files/pt-br/web/javascript/reference/global_objects/object/entries/index.html new file mode 100644 index 0000000000..1f40f3b693 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/entries/index.html @@ -0,0 +1,110 @@ +--- +title: Object.entries() +slug: Web/JavaScript/Reference/Global_Objects/Object/entries +tags: + - Experimental + - JavaScript + - Objeto + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

O método Object.entries() retorna uma array dos próprios pares  [key, value] enumeráveis de um dado objeto, na mesma ordem dos objetos providos através do loop {{jsxref("Statements/for...in", "for...in")}} (sendo a diferença que o for-in loop enumera também propriedades dispostas na cadeia de prototipagem - prototype chain).

+ +

Sintaxe

+ +
Object.entries(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto cujos próprios pares [key, value] de propriedades enumeráveis deverão ser retornados.
+
+ +

Valor de retorno

+ +

Uma array de pares [key, value] enumeráveis de propriedades de um dado objeto.

+ +

Descrição

+ +

Object.entries() retorna um array cujos elementos são também arrays correspondentes aos pares de propriedades [key, value] enumeráveis encontrados diretamente sobre o objeto. A ordem das propriedades é a mesma que seria se fossem iteradas as propriedades do objeto manualmente.

+ +

Exemplos

+ +
var obj = { foo: 'bar', baz: 42 };
+console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
+
+// objeto array-like
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
+
+// objeto array-like com ordenação aleatória de chave (key)
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
+
+// getFoo é uma propriedade que não é enumerável
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 'bar';
+console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ]
+
+// argumento não-objeto será convertido (conversão implícita) para um objeto
+console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
+
+// itera graciosamente através de chave-valor (key-value)
+var obj = {a: 5, b: 7, c: 9};
+for (var [key, value] of Object.entries(obj)) {
+    console.log(key + ' ' + value); // "a 5", "b 7", "c 9"
+}
+
+// Ou, usando array extras
+Object.entries(obj).forEach(([key, value]) => {
+    console.log(key + ' ' + value); // "a 5", "b 7", "c 9"
+});
+
+ +

Convertendo um Object em um Map

+ +

O construtor {{jsxref("Map", "new Map()")}} aceita entradas iteráveis. Com o Object.entries, você pode facilmente converter de {{jsxref("Object")}} para {{jsxref("Map")}}:

+ +
var obj = { foo: 'bar', baz: 42 };
+var map = new Map(Object.entries(obj));
+console.log(map); // Map { foo: "bar", baz: 42 }
+ +

Polyfill

+ +

Para incluir suporte ao Object.entries em ambientes mais antigos, você pode achar um Polyfill nos repositórios: tc39/proposal-object-values-entrieses-shims/Object.entries.

+ +

Especificaçōes

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}{{Spec2('ESDraft')}}Definição inicial.
+ +

Compatibilidade entre navegadores

+ +
{{Compat("javascript.builtins.Object.entries")}}
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/freeze/index.html b/files/pt-br/web/javascript/reference/global_objects/object/freeze/index.html new file mode 100644 index 0000000000..b705441dee --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/freeze/index.html @@ -0,0 +1,205 @@ +--- +title: Object.freeze() +slug: Web/JavaScript/Reference/Global_Objects/Object/freeze +translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze +--- +
{{JSRef}}
+ +

O método Object.freeze() congela um objeto: isto é, impede que novas propriedades sejam adicionadas a ele; impede que as propriedades existentes sejam removidas; e impede que propriedades existentes, ou sua inumerabilidade, configurabilidade, ou capacidade de escrita sejam alteradas. Em essência o objeto é efetivamente imutável. O método retorna o objeto congelado.

+ +

Sintaxe

+ +
Object.freeze(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto a ser congelado.
+
+ +

Valor de retorno

+ +

O objeto congelado.

+ +

Descrição

+ +

Nada pode ser adicionado ou removido do conjunto de propriedades de um objeto congelado. Qualquer tentativa de fazê-lo irá falhar, ou silenciosamente ou através de um {{jsxref("TypeError")}} exception (mais frequentemente, mas não exclusivamente, quando em {{jsxref("Strict_mode", "strict mode", "", 1)}}).

+ +

Valores não podem ser alterados para propriedades de dados. As propriedades do Accessor (getters e setters) funcionam da mesma forma (e ainda dão a ilusão de que você está alterando o valor). Observe que valores que são objetos ainda podem ser modificados, a menos que eles também sejam congelados.

+ +

Exemplos

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Novas propriedades podem ser adicionadas, propriedades existentes podem ser alteradas ou removidas
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+// Tanto o objeto que está sendo passado, bem como o objeto retornado será congelado.
+// É desnecessário salvar o objeto retornado para congelar o objeto original.
+var o = Object.freeze(obj);
+
+o === obj; // true
+Object.isFrozen(obj); // === true
+
+// De agora em diante qualquer alteração irá falhar
+obj.foo = 'quux'; // silenciosamente não faz nada.
+obj.quaxxor = 'the friendly duck'; // silenciosamente não adiciona a propriedade
+
+// ...e em modo strict tais tentativas irão lançar TypeErrors
+function fail(){
+  'use strict';
+  obj.foo = 'sparky'; // throws um TypeError
+  delete obj.quaxxor; // throws um TypeError
+  obj.sparky = 'arf'; // throws um TypeError
+}
+
+fail();
+
+// As tentativas de alteração através de Object.defineProperty também irão lançar
+Object.defineProperty(obj, 'ohai', { value: 17 }); // throws um TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // throws um TypeError
+
+ +

O exemplo a seguir mostra que  valores do tipo objeto, em um objeto congelado, podem ser alterados (freeze é raso).

+ +
obj1 = {
+  internal: {}
+};
+
+Object.freeze(obj1);
+obj1.internal.a = 'aValue';
+
+obj1.internal.a // 'aValue'
+
+// Para fazer um obj completamente imutável, congele cada objeto em obj.
+// Para fazer isso, nós usamos essa função.
+function deepFreeze(obj) {
+
+  // Recuperar os nomes de propriedade definidos em obj
+  var propNames = Object.getOwnPropertyNames(obj);
+
+  // Congelar as propriedades antes de congelar-se
+  propNames.forEach(function(name) {
+    var prop = obj[name];
+
+    // Congele prop se for um objeto
+    if (typeof prop == 'object' && prop !== null)
+      deepFreeze(prop);
+  });
+
+  // Congele-se (não faz nada se já estiver congelado)
+  return Object.freeze(obj);
+}
+
+obj2 = {
+  internal: {}
+};
+
+deepFreeze(obj2);
+obj2.internal.a = 'anotherValue';
+obj2.internal.a; // undefined
+
+ +

Notas

+ +

Em ES5, se um argumento para este método não for um objeto (um primitivo), então isso irá causar um {{jsxref("TypeError")}}. Em ES6, um argumento não-objeto vai ser tratado como se fosse um objeto comum congelado e simplesmente retornado.

+ +
> Object.freeze(1)
+TypeError: 1 is not an object // ES5 code
+
+> Object.freeze(1)
+1                             // ES6 code
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentários
{{SpecName('ES5.1', '#sec-15.2.3.9', 'Object.freeze')}}{{Spec2('ES5.1')}}Definição inicial. Implementado em JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox (Gecko)ChromeInternet ExplorerOperaSafari
Suporte básico{{CompatGeckoDesktop("2")}}{{CompatChrome("6")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaFirefox Mobile (Gecko)AndroidIE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/fromentries/index.html b/files/pt-br/web/javascript/reference/global_objects/object/fromentries/index.html new file mode 100644 index 0000000000..7197f0f9c0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/fromentries/index.html @@ -0,0 +1,107 @@ +--- +title: Object.fromEntries() +slug: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +--- +
{{JSRef}}
+ +

O método Object.fromEntries() transforma uma lista de pares chave-valor em um objeto.

+ +
{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}
+ + + +

Sintaxe

+ +
Object.fromEntries(iterable);
+ +

Parâmetros

+ +
+
iterable
+
Um iterável como {{jsxref("Array")}} ou {{jsxref("Map")}} ou qualquer outro objeto que implemente o protocolo iterável.
+
+ +

Valor de retorno

+ +

Um novo objeto com suas propriedades definidas pelas entradas fornecidadas pelo iterável.

+ +

Descrição

+ +

O método Object.fromEntries() recebe uma lista de pares chave-valor e retorna  um novo objeto cujas propriedades foram definidas pelas entradas da lista. O parâmetro iterable deve ser um objeto que implemente o método @@iterator, que retorne um objeto iterador que produza um objeto array-like de dois elementos, onde o primeiro será a chave da propriedade e o segundo será o valor associado à chave.

+ +

Object.fromEntries() faz o inverso de {{jsxref("Object.entries()")}}.

+ +

Exemplos

+ +

Convertendo um Map em um Object

+ +

Com o método Object.fromEntries, é possível fazer a conveeção de um {{jsxref("Map")}} em um {{jsxref("Object")}}:

+ +
const map = new Map([ ['foo', 'bar'], ['baz', 42] ]);
+const obj = Object.fromEntries(map);
+console.log(obj); // { foo: "bar", baz: 42 }
+
+ +

Convertendo um Array em um Object

+ +

Com o método Object.fromEntries, é possível converter um {{jsxref("Array")}} em um {{jsxref("Object")}}:

+ +
const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ];
+const obj = Object.fromEntries(arr);
+console.log(obj); // { 0: "a", 1: "b", 2: "c" }
+
+ +

Transformações de objetos

+ +

Com o método Object.fromEntries, seu inverso {{jsxref("Object.entries()")}}, e os métodos para manipulação de arrays, é possível fazer transformações em objetos como por exemplo:

+ +
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 }
+ + + +

Especificações

+ + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}{{Spec2('ESDraft')}}Initial definition in ECMAScript 2019.
+ +

Compatibilidade de Navegadores

+ + + +

{{Compat("javascript.builtins.Object.fromEntries")}}

+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..fad0310e7f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html @@ -0,0 +1,127 @@ +--- +title: Object.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +tags: + - ECMAScript5 + - ECMAScript6 + - JavaScript + - Método(2) + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +--- +
{{JSRef}}
+ +

O método Object.getOwnPropertyDescriptor() retorna um descritor de propriedades para uma propriedade (isto é, uma diretamente presente, e não pertencente ao objeto por força da cadeia de protótipo do objeto) de um dado objeto.

+ +

Sintaxe

+ +
Object.getOwnPropertyDescriptor(obj, prop)
+ +

Parâmetros

+ +
+
obj
+
O objeto no qual deve-se procurar pela propriedade.
+
prop
+
O nome da propriedade cuja descrição é para ser retornada.
+
+ +

Valor de Retorno

+ +

Um descritor de propriedades da propriedade especificada, se esta existir no objeto, ou {{jsxref("undefined")}}, caso contrário.

+ +

Descrição

+ +

Este método permite uma análise da descrição precisa de uma propriedade. Uma propriedade em Javascript consiste de um nome com formato texto-valor e um descritor de propriedades. Mais informações sobre os tipos de descritores de propriedades e seus atributos podem ser encontrados em {{jsxref("Object.defineProperty()")}}.

+ +

Um descritor de propriedade é um registro com alguns dos seguintes atributos:

+ +
+
value
+
o valor associado com a propriedade (somente para descritores de dados).
+
writable
+
true se, e somente se, o valor associado com a propriedade pode ser alterado (somente para descritores de dados).
+
get
+
Uma função que serve como um getter, para obter o valor da propriedade, ou {{jsxref("undefined")}} se não houver (somente para descritores de acesso).
+
set
+
Uma função que serve como um setter, para atribuir um valor à propriedade, ou {{jsxref("undefined")}} se não houver (somente para descritores de acesso).
+
configurable
+
true se, e somente se, o tipo deste descritor de propriedade pode ser alterado e se a propriedade pode ser excluída do objeto correspondente.
+
enumerable
+
true se, e somente se, esta propriedade aparece durante a enumeração das propriedades do objeto correspondente.
+
+ +

Exemplos

+ +
var o, d;
+
+o = { get foo() { return 17; } };
+d = Object.getOwnPropertyDescriptor(o, 'foo');
+// d é { configurable: true, enumerable: true, get: /*A função getter*/, 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 }
+
+ +

Notas

+ +

No ES5, o primeiro parâmetro deste método não é um objeto (tipo primitivo), então ele irá gerar um {{jsxref("TypeError")}}. No ES6, um primeiro argumento não-objeto será primeiramente convertido para objeto.

+ +
Object.getOwnPropertyDescriptor("foo", 0);
+// TypeError: "foo" is not an object  // Código ES5
+
+Object.getOwnPropertyDescriptor("foo", 0);
+// {configurable:false, enumerable:true, value:"f", writable:false}  // Código ES6
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.3', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de Navegadores

+ +
+
+ + +

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptor")}}

+
+
+ +

 

+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html new file mode 100644 index 0000000000..b12a764811 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html @@ -0,0 +1,104 @@ +--- +title: Object.getOwnPropertyDescriptors() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +--- +
{{JSRef}}
+ +

O Object.getOwnPropertyDescriptors() método retorna todas as descrições próprias da propriedade de um dado objeto.

+ +
{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}
+ +

Sintaxe

+ +
Object.getOwnPropertyDescriptors(obj)
+ +

Parâmetro

+ +
+
obj
+
O objeto pelo o qual deseja obter todos os descritores de propriedade próprios.
+
+ +

Valor retornado

+ +

Um objeto contendo todas as propriedades descritivas de um objeto. Pode ser um objeto vazio, se não existir propriedade.

+ +

Descrição

+ +

Esse método permite examinar a descrição precisa de todas as propriedades de um objeto. Uma propriedade em JavaScript consiste de um nome com valor string ou um {{jsxref("Symbol")}} e uma propriedade descritora. Outras informações sobre propriedade de tipo descritoras e seus atributos podem ser encontradas em {{jsxref("Object.defineProperty()")}}.

+ +

Uma propriedade descritora é um registro com alguns dos seguintes atributos:

+ +
+
value
+
O valor associdado com à propriedade (somente descritores de dados).
+
writable
+
true se somente o valor associado com a propriedade pode ser alterada (somente descritores de dados).
+
get
+
Uma função que serve como um capturador para a propriedade ou {{jsxref("undefined")}} se não existir um capturador (somente descritores de acesso).
+
set
+
Uma função que serve como um configurador para a propriedade, ou {{jsxref("undefined")}} se não existir um configurador (somente descritores de acesso).
+
configurable
+
true se e somente se o tipo da propriedade descritora pode ser alterada e se a propriedade pode ser deletada do objeto correspondente.
+
enumerable
+
true se e somente se essa propriedade se mostrar durante a enumeração da propriedade no objeto correspondente.
+
+ +

Exemplos

+ +

Criando um clone superficial

+ +

Enquanto o {{jsxref("Object.assign()")}} método vai copiar somente o enumerável e as próprias propriedades da origem de um objeto para o objeto alvo, você é capaz de usar esse método e {{jsxref("Object.create()")}} para uma cópia superficial entre dois objetos desconhecidos:

+ +
Object.create(
+  Object.getPrototypeOf(obj),
+  Object.getOwnPropertyDescriptors(obj)
+);
+
+ +

Criando uma subclasse

+ +

Um modo típico de criar uma subclasse é definir a subclasse, configurar um protótipo para uma instância da superclasse e depois difinir as propriedades daquela instância. Isso pode ficar estranho especialmente para os capturadores e configuradores. Ao invés disso, você pode usar esse código para configurar o protótipo :

+ +
function superclass() {}
+superclass.prototype = {
+  // Define seu método e propriedades aqui
+};
+function subclass() {}
+subclass.prototype = Object.create(
+  superclass.prototype,
+  {
+    // Define seu método e propriedades aqui
+  }
+);
+
+ +

Especificações

+ + + + + + + + + + +
Especificações
{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}
+ +

Compatibiliadde de navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertynames/index.html new file mode 100644 index 0000000000..1843ce8d21 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertynames/index.html @@ -0,0 +1,211 @@ +--- +title: Object.getOwnPropertyNames() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +tags: + - Objeto + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +--- +
{{JSRef}}
+ +

O método Object.getOwnPropertyNames() retorna um vetor com todas as propriedades (enumeráveis ou não) encontradas diretamente em um dado objeto.

+ +

Sintaxe

+ +
Object.getOwnPropertyNames(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto, cujas suas próprias propriedades, enumeráveis ou não, serão retornadas.
+
+ +

Descrição

+ +

Object.getOwnPropertyNames() retorna um vetor cujos elementos são strings correspondentes as propriedades enumeráveis ou não, encontradas em obj. A ordem das propriedades enumeráveis no vetor é consistente com a ordenação exposta por um laço  {{jsxref("Statements/for...in", "for...in")}} (ou por {{jsxref("Object.keys()")}}) nas propriedades do objeto. A ordenação das propriedades não-enumeráveis no vetor, e entre as propriedades enumeráveis, não está definida.

+ +

Exemplos

+ +

Usando Object.getOwnPropertyNames()

+ +
var arr = ['a', 'b', 'c'];
+console.log(Object.getOwnPropertyNames(arr).sort());
+// logs ["0", "1", "2", "length"]
+
+// Array-like object
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.getOwnPropertyNames(obj).sort());
+// logs ["0", "1", "2"]
+
+// Logging property names and values using Array.forEach
+Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
+  console.log(val + ' -> ' + obj[val]);
+});
+// logs
+// 0 -> a
+// 1 -> b
+// 2 -> c
+
+// non-enumerable property
+var my_obj = Object.create({}, {
+  getFoo: {
+    value: function() { return this.foo; },
+    enumerable: false
+  }
+});
+my_obj.foo = 1;
+
+console.log(Object.getOwnPropertyNames(my_obj).sort());
+// logs ["foo", "getFoo"]
+
+ +

Se voce quer somente as propriedades enumeráveis, veja {{jsxref("Object.keys()")}} ou use um laço {{jsxref("Statements/for...in", "for...in")}} (contudo, note que isto irá retornar propriedades enumeráveis não encontradas diretamente naquele objeto, mas também junto com a cadeia prototype do objeto a menos que o último seja filtrado com {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).

+ +

Ítens na cadeia prototype não são listados:

+ +
function ParentClass() {}
+ParentClass.prototype.inheritedMethod = function() {};
+
+function ChildClass() {
+  this.prop = 5;
+  this.method = function() {};
+}
+ChildClass.prototype = new ParentClass;
+ChildClass.prototype.prototypeMethod = function() {};
+
+console.log(
+  Object.getOwnPropertyNames(
+    new ChildClass() // ["prop", "method"]
+  )
+);
+
+ +

Obtenha somente não-enumeráveis

+ +

Isto usa a função {{jsxref("Array.prototype.filter()")}} para remover as chaves enumeráveis (obtidas com {{jsxref("Object.keys()")}}) de uma lista com todas as chaves (obtidas com Object.getOwnPropertyNames()) deixando somente as chaves não-enumeráveis.

+ +
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) {
+    // not found in enum_only keys mean the key is non-enumerable,
+    // so return true so we keep this in the filter
+    return true;
+  } else {
+    return false;
+  }
+});
+
+console.log(nonenum_only);
+
+ +

Notas

+ +

No ES5, se o argumento desse método não é um objeto (um tipo primitivo), então isso causará um {{jsxref("TypeError")}}. No ES6, um argumento diferente de objeto será transformado em um objeto.

+ +
Object.getOwnPropertyNames('foo');
+// TypeError: "foo" is not an object (ES5 code)
+
+Object.getOwnPropertyNames('foo');
+// ["0", "1", "2", "length"]  (ES6 code)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EsperificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}{{Spec2('ES5.1')}} +

Definição inicial. Implementado no JavaScript 1.8.5.

+
{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade em navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Notas específicas para SpiderMonkey

+ +

Antes do SpiderMonkey 28 {{geckoRelease("28")}}, Object.getOwnPropertyNames não via propriedades não resolvidas de objetos {{jsxref("Error")}}. Isto foi resolvido em versões posteriores ({{bug("724768")}}).

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html new file mode 100644 index 0000000000..319253b313 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html @@ -0,0 +1,79 @@ +--- +title: Object.getOwnPropertySymbols() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +--- +
{{JSRef}}
+ +

O Object.getOwnPropertySymbols() método retorna uma array com todas propriedades de símbolo encontradas diretamente em um determinado objeto dado.

+ +
{{EmbedInteractiveExample("pages/js/object-getownpropertysymbols.html")}}
+ + + +

Sintaxe

+ +
Object.getOwnPropertySymbols(obj)
+ +

Parâmetro

+ +
+
obj
+
O objeto pelo qual as propriedades de símbolos são retornas.
+
+ +

Valor retornado

+ +

Uma array com todas as propriedades de símbolos encontradas diretamente pelo o objeto dado.

+ +

Descrição

+ +

Similar do {{jsxref("Object.getOwnPropertyNames()")}}, você pode obter todas as propriedades de símbolo de um objeto dado como um array de símbolos. Lembre que o próprio {{jsxref("Object.getOwnPropertyNames()")}} não contém as propriedades de símbolo de um objeto e somente as propriedades de string.

+ +

Como todos os objetos não possuem símbolos próprios inicialmente, o Object.getOwnPropertySymbols() retorna uma array vazia a menos que você tenha definido as propriedades de símbolo do seu objeto .

+ +

Exemplos

+ +

Usando 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); // retorno esperado 2
+console.log(objectSymbols);        // retorno esperado (2) [Symbol(a), Symbol(b)]
+console.log(objectSymbols[0]);     // retorno esperado Symbol(a)
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}
+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Object.getOwnPropertySymbols")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/getprototypeof/index.html b/files/pt-br/web/javascript/reference/global_objects/object/getprototypeof/index.html new file mode 100644 index 0000000000..a1e3bf1910 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/getprototypeof/index.html @@ -0,0 +1,124 @@ +--- +title: Object.getPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +--- +
{{JSRef}}
+ +

O método Object.getPrototypeOf() retorna o prototype (isto é, o valor da propriedade interna [[Prototype]]) do objeto especificado.

+ +

Sintaxe

+ +
Object.getPrototypeOf(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto cujo prototype será retornado.
+
+ +

Exemplos

+ +
var proto = {};
+var obj = Object.create(proto);
+Object.getPrototypeOf(obj) === proto; // true
+
+ +

Notas

+ +

No ES5 será lançada uma exceção {{jsxref("TypeError")}} se o parâmetro obj não for um objeto. No ES6, no entanto, esse valor será submetido a um {{jsxref("Object")}} equivalente ao seu tipo e retornado.

+ +
Object.getPrototypeOf("foo");
+// TypeError: "foo" não é um objeto (código ES5)
+Object.getPrototypeOf("foo");
+// String.prototype                  (código ES6)
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.2', 'Object.getPrototypeOf')}}{{Spec2('ES5.1')}}definição inicial.
{{SpecName('ES6', '#sec-object.getprototypeof', 'Object.getProtoypeOf')}}{{Spec2('ES6')}} 
+ +

Compatibilidade com navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticasChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("12.10")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticasAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Notas específicas para o Opera

+ +

Embora as versões mais antigas do Opera não suportem Object.getPrototypeOf(), ele suporta a propriedade não oficial {{jsxref("Object.proto", "__proto__")}} desde de a sua versão 10.50.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/hasownproperty/index.html b/files/pt-br/web/javascript/reference/global_objects/object/hasownproperty/index.html new file mode 100644 index 0000000000..aef0554b86 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/hasownproperty/index.html @@ -0,0 +1,193 @@ +--- +title: Object.prototype.hasOwnProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Resumo

+ +

O método hasOwnProperty() retorna um booleano indicando se o objeto possui a propriedade especificada como uma propriedade definida no próprio objeto em questão (ao contrário de uma propriedade herdada).

+ +

Sintaxe

+ +
obj.hasOwnProperty(prop)
+ +

Parâmetros

+ +
+
prop
+
Uma {{jsxref("String")}} ou symbol indicando o nome da propriedade a ser verificada.
+
+ +

Valor de Retorno

+ +

Um {{jsxref("Boolean", "booleano")}} indicando se o objeto possui ou não a propriedade especificada como uma propriedade do próprio objeto e que a propriedade não é uma propriedade herdada.

+ +

Descrição

+ +

Todo objeto descendente de Object herda o método hasOwnProperty. Este método pode ser usado para determinar se um objeto possui a propriedade especificada como propriedade direta do objeto.

+ +

Diferentemente do operador {{jsxref("Operators/in", "in")}}, este método não checa a cadeia prototípica do objeto.

+ +

Nota

+ +

o método hasOwnProperty retorna true mesmo se o valor da propridade em questão é null ou undefined

+ +
o = new Object();
+o.propUm = null;
+o.hasOwnProperty('propUm'); // retorna true
+o.propDois = undefined;
+o.hasOwnProperty('propDois'); // retorna true
+
+ +

Exemplos

+ +

Usando hasOwnProperty para testar a existência de uma propriedade

+ +

O seguinte exemplo determina se o objeto o possui uma propriedade com o nome prop:

+ +
o = new Object();
+o.hasOwnProperty('prop'); // retorna false
+o.prop = 'existe';
+o.hasOwnProperty('prop'); // retorna true
+ +

Propriedades Diretas vs Propriedades Herdadas

+ +

O seguinte exemplo diferencia entre propriedade diretas e propriedade herdadas da cadeia prototípica:

+ +
o = new Object();
+o.prop = 'existe';
+o.hasOwnProperty('prop');             // Retorna true
+o.hasOwnProperty('toString');         // Retorna false
+o.hasOwnProperty('hasOwnProperty');   // Retorna false
+ +

Percorrer através das propriedades de um objeto

+ +

O seguinte exemplo mostra como percorrer as propriedade de um objeto sem executar as propriedade herdadas.

+ +

Vale observar que o loop {{jsxref("Statements/for...in", "for...in")}} percorre somente itens enumeráveis. Entretanto, o método hasOwnProperty também funciona com propriedades não enumeráveis.

+ +
var buz = {
+    fog: 'stack'
+};
+
+for (var nome in buz) {
+    if (buz.hasOwnProperty(nome)) {
+        alert("this is fog (" + nome + ") for sure. Value: " + buz[nome]);
+    }
+    else {
+        alert(nome); // toString ou qualquer outra coisa
+    }
+}
+ +

Exemplo: hasOwnProperty como propriedade

+ +

JavaScript não protege o nome hasOwnProperty, assim, se existir a possibilidade do objeto possuir uma propriedade com esse nome, é necessário usar externamente hasOwnProperty para se ter o resultado correto:

+ +
var foo = {
+    hasOwnProperty: function() {
+        return false;
+    },
+    bar: 'Here be dragons'
+};
+
+foo.hasOwnProperty('bar'); // Sempre retorna false
+
+// Usando a propriedade hasOwnProperty de outro objeto e definindo 'this' como foo
+({}).hasOwnProperty.call(foo, 'bar'); // true
+
+// Também é possível usar hasOwnProperty do objeto
+Object.prototype.hasOwnProperty.call(foo, 'bar'); // true
+
+ +

Observe que neste ultimo caso nenhum novo objeto é criado.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 3rd Edition. Implemented in JavaScript 1.5StandardDefinição inicial.
{{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')}}
+ +

Compatibilidade nos navegadores

+ +

{{ 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() }}
+
+ +

Veja Também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/index.html b/files/pt-br/web/javascript/reference/global_objects/object/index.html new file mode 100644 index 0000000000..eb891fea08 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/index.html @@ -0,0 +1,180 @@ +--- +title: Object +slug: Web/JavaScript/Reference/Global_Objects/Object +tags: + - Objeto +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +
{{JSRef}}
+ +

O construtor Object cria um wrapper de objeto.

+ +

Sintaxe

+ +
// Object initialiser or literal
+{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
+
+// Called as a constructor
+new Object([value])
+ +

Parametros

+ +
+
nameValuePair1, nameValuePair2, ... nameValuePairN
+
Pares de nomes (strings) e valores (qualquer valor) em que o nome é separado do valor por dois pontos.
+
value
+
Qualquer valor.
+
+ +

Descrição

+ +

O construtor Object cria um wrapper de objeto para o valor fornecido. Se o valor for {{jsxref ("null")}} ou {{jsxref ("undefined")}}, ele criará e retornará um objeto vazio, caso contrário, retornará um objeto de um Type que corresponde ao dado valor. Se o valor já for um objeto, ele retornará o valor.

+ +

Quando chamado em um contexto não-construtor, o object se comporta de forma idêntica ao new Object ().

+ +

Veja também object initializer / literal syntax.

+ +

Propriedades do construtor Object

+ +
+
Object.length
+
Tem um valor de 1.
+
{{jsxref("Object.prototype")}}
+
Permite a adição de propriedades a todos os objetos do tipo Object.
+
+ +

Métodos do construtor Object

+ +
+
{{jsxref("Object.assign()")}}
+
Copia os valores de todas as propriedades próprias enumeráveis ​​de um ou mais objetos de origem para um objeto de destino.
+
{{jsxref("Object.create()")}}
+
Cria um novo objeto com o objeto e as propriedades do protótipo especificado.
+
{{jsxref("Object.defineProperty()")}}
+
Adiciona a propriedade nomeada descrita por um determinado descritor a um objeto.
+
{{jsxref("Object.defineProperties()")}}
+
Adiciona as propriedades nomeadas descritas pelos descritores fornecidos a um objeto.
+
{{jsxref("Object.entries()")}}
+
Retorna uma matriz contendo todos os pares [key, value] das próprias propriedades de string enumeráveis ​​de um determinado objeto.
+
{{jsxref("Object.freeze()")}}
+
Congela um objeto: outro código não pode excluir ou alterar nenhuma propriedade.
+
{{jsxref("Object.fromEntries()")}}
+
Retorna um novo objeto de um iterável de pares de valor-chave (reverso à {{jsxref("Object.entries")}}).
+
{{jsxref("Object.getOwnPropertyDescriptor()")}}
+
Retorna um descritor de propriedade para uma propriedade nomeada em um objeto.
+
{{jsxref("Object.getOwnPropertyDescriptors()")}}
+
Retorna um objeto contendo todos os descritores de propriedade para um objeto.
+
{{jsxref("Object.getOwnPropertyNames()")}}
+
Retorna uma matriz contendo os nomes de todas as propriedades enumeráveis ​​e não enumeráveis ​​do próprio objeto fornecido.
+
{{jsxref("Object.getOwnPropertySymbols()")}}
+
Retorna uma matriz de todas as propriedades de símbolo encontradas diretamente sobre um determinado objeto.
+
{{jsxref("Object.getPrototypeOf()")}}
+
Retorna o protótipo do objeto especificado.
+
{{jsxref("Object.is()")}}
+
Compara se dois valores são o mesmo valor. Equivale a todos os valores de NaN (que diferem da Comparação de Igualdade Abstrata e da Comparação de Igualdade Estrita).
+
{{jsxref("Object.isExtensible()")}}
+
Determina se a extensão de um objeto é permitida.
+
{{jsxref("Object.isFrozen()")}}
+
Determina se um objeto foi congelado.
+
{{jsxref("Object.isSealed()")}}
+
Determina se um objeto está selado.
+
{{jsxref("Object.keys()")}}
+
Retorna uma matriz contendo os nomes de todas as propriedades de string enumeráveis ​​do objeto fornecido.
+
{{jsxref("Object.preventExtensions()")}}
+
Impede qualquer extensão de um objeto.
+
{{jsxref("Object.seal()")}}
+
Impede que outro código exclua propriedades de um objeto.
+
{{jsxref("Object.setPrototypeOf()")}}
+
Define o protótipo (isto é, a propriedade interna [[Prototype]]).
+
{{jsxref("Object.values()")}}
+
Retorna uma matriz contendo os valores que correspondem a todas as propriedades de string enumeráveis ​​do próprio objeto.
+
+ +

Instâncias de Object e Object de protótipo de objeto

+ +

Todos os objetos em JavaScript são descendentes do Object; todos os objetos herdam métodos e propriedades de {{jsxref("Object.prototype")}}, embora eles possam ser substituídos. Por exemplo, protótipos de outros construtores substituem a propriedade constructor e fornecer seus próprios métodos toString(). As alterações no objeto de protótipo Object são propagadas para todos os objetos, a menos que as propriedades e os métodos sujeitos a essas alterações sejam substituídos na cadeia de protótipos.

+ +

Propriedades (enUS)

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Properties')}}
+ +

Métodos (enUS)

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Methods')}}
+ +

Excluindo uma propriedade de um objeto

+ +

Não há nenhum método em um Objeto para excluir suas próprias propriedades (por exemplo, como Map.prototype.delete()). Para isso, é necessário usar o operador delete.

+ +

Exemplos

+ +

Usando Object com tipos undefinednull

+ +

Os exemplos a seguir armazenam um Object vazio na variável "o":

+ +
var o = new Object();
+
+ +
var o = new Object(undefined);
+
+ +
var o = new Object(null);
+
+ +

Using Object to create Boolean objects

+ +

Os exemplos a seguir armazenam objetos {{jsxref("Boolean")}} na variável "o":

+ +
// equivalent to o = new Boolean(true);
+var o = new Object(true);
+
+ +
// equivalent to o = new Boolean(false);
+var o = new Object(Boolean());
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2', 'Object')}}{{Spec2('ES5.1')}}------------------------------------------------
{{SpecName('ES6', '#sec-object-objects', 'Object')}}{{Spec2('ES6')}}Adicionado Object.assign, Object.getOwnPropertySymbols, Object.setPrototypeOf e Object.is
{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}{{Spec2('ESDraft')}}Adicionado  Object.entries, Object.values e Object.getOwnPropertyDescriptors.
+ +

Compatibilidade

+ +
+ + +

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

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/is/index.html b/files/pt-br/web/javascript/reference/global_objects/object/is/index.html new file mode 100644 index 0000000000..ff3131de50 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/is/index.html @@ -0,0 +1,177 @@ +--- +title: Object.is() +slug: Web/JavaScript/Reference/Global_Objects/Object/is +tags: + - Comparação + - Condição + - ECMAScript6 + - Igualdade + - JavaScript + - Objeto + - condicional + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/is +--- +
{{JSRef}}
+ +

O método Object.is() determina se dois valores correspondem ao mesmo valor.

+ +

Sintaxe

+ +
Object.is(value1, value2);
+ +

Parâmetros

+ +
+
value1
+
O primeiro valor a ser comparado.
+
value2
+
O segundo valor a ser comparado.
+
+ +

Return value

+ +

Um {{jsxref("Boolean")}} indicando se os dois argumentos possuem o mesmo valor ou não.

+ +

Descrição

+ +

Object.is() determina se dois valores correspondem ao mesmo valor. Dois valores correspondem ao mesmo valor se uma das seguintes condições for verdadeira:

+ + + +

Isso não é o mesmo que ser igual de acordo com o operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. O operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} aplica diversas coerções para ambos os lados (se eles não correspondem ao mesmo Tipo) antes de testar a igualdade (resultando em comportamentos como a comparação "" == false retornar true), enquanto Object.is não realiza a coerção de nenhum dos valores.

+ +

Isso também não é o mesmo que ser igual de acordo com o operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. O operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (assim como o operador {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) trata os valores numéricos -0 e +0 como iguais e trata {{jsxref("Number.NaN")}} como não igual a {{jsxref("NaN")}}.

+ +

Exemplos

+ +
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
+
+// Casos especiais
+Object.is(0, -0);            // false
+Object.is(-0, -0);           // true
+Object.is(NaN, 0/0);         // true
+
+ +

Polyfill para navegadores que não suportam ES6

+ +

Object.is() é uma adição proposta ao padrão ECMA-262; e como tal, pode não estar presente em todos os navegadores. Você pode contornar essa situação por meio da adição do seguinte código no começo de seus scripts. Isso permitirá a você utilizar Object.is(), mesmo quando não houver suporte por parte do navegador.

+ +
if (!Object.is) {
+  Object.is = function(x, y) {
+    // Algoritmo para verificar se os valores sao iguais
+    if (x === y) { // Passos 1-5, 7-10
+      // Passos 6.b-6.e: +0 != -0
+      return x !== 0 || 1 / x === 1 / y;
+    } else {
+      // Passo 6.a: NaN == NaN
+      return x !== x && y !== y;
+    }
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-object.is', 'Object.is')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("30")}}{{CompatGeckoDesktop("22")}} +

{{CompatNo}}

+
{{CompatVersionUnknown}}{{CompatSafari("9")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatUnknown}}{{CompatGeckoMobile("22")}}{{CompatNo}}{{CompatNo}}{{CompatSafari("9")}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/isextensible/index.html b/files/pt-br/web/javascript/reference/global_objects/object/isextensible/index.html new file mode 100644 index 0000000000..7ef9f5f97c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/isextensible/index.html @@ -0,0 +1,107 @@ +--- +title: Object.isExtensible() +slug: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +--- +
{{JSRef}}
+ +

O método Object.isExtensible() verifica se um objeto pode ser extendido (se é ou não possível adicinar novas propriedades).

+ +
{{EmbedInteractiveExample("pages/js/object-isextensible.html")}}
+ + + +

Sintaxe

+ +
Object.isExtensible(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto a ser verificado.
+
+ +

Valor de retorno

+ +

Um valor booleano ({{jsxref("Boolean")}}) que indica se o objeto pode ser extendido.

+ +

Descrição

+ +

Objetos são extensíveis por padrão: novas propriedades podem ser adicionadas, e (em ambientes que suportam {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}}) a propriedade __proto__ pode ser modificada. Um objeto pode ser marcado como não extensível usando {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}}, ou {{jsxref("Object.freeze()")}}.

+ +

Exemplos

+ +
// Novos objetos podem ser extendidos.
+var empty = {};
+Object.isExtensible(empty); // === true
+
+// ...mas isso pode mudar.
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === false
+
+// Objetos selados, não podem ser extendidos.
+var sealed = Object.seal({});
+Object.isExtensible(sealed); // === false
+
+// Objetos congelados também não podem ser extendidos.
+var frozen = Object.freeze({});
+Object.isExtensible(frozen); // === false
+
+ +

Notas

+ +

No ES5, se o argumento fornecido não for um objeto (um tipo primitivo), isso vai causar um erro do tipo {{jsxref("TypeError")}}. No ES2015, um argumento que não é um objeto será tratado como um objeto não extensível, simplesmente retornando false.

+ +
Object.isExtensible(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isExtensible(1);
+// false                         (ES2015 code)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-object.isextensible', 'Object.isExtensible')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.isExtensible")}}

+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html new file mode 100644 index 0000000000..1cab1b4843 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/isfrozen/index.html @@ -0,0 +1,172 @@ +--- +title: Object.isFrozen() +slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +--- +
{{JSRef}}
+ +

O método Object.isFrozen() determina se um objeto está {{jsxref("Object.freeze()", "frozen", "", 1)}}.

+ +
{{EmbedInteractiveExample("pages/js/object-isfrozen.html")}}
+ + + +

Sintaxe

+ +
Object.isFrozen(obj)
+ +

Parameters

+ +
+
obj
+
O objeto que será verificado.
+
+ +

Return value

+ +

Um valor {{jsxref("Boolean")}} indicando se o objeto está frozen.

+ +

Descrição

+ +

Um objeto estará frozen se, e apenas se, ele não for {{jsxref("Object.isExtensible()", "extensible", "", 1)}}, todas as suas propriedades não são configuráveis e todas suas propriedades de dados (propriedades que não são asessores de propriedades com getters ou setters) não podem ser modificadas.

+ +

Examples

+ +
// Um novo objeto é extensível, então ele não está frozen.
+Object.isFrozen({}); // === false
+
+// Um objeto vazio que não é extensível
+// é vagamente frozen.
+var vacuouslyFrozen = Object.preventExtensions({});
+Object.isFrozen(vacuouslyFrozen); // === true
+
+// Um novo objeto com uma propriedade também é extensível,
+// portanto não está frozen.
+var oneProp = { p: 42 };
+Object.isFrozen(oneProp); // === false
+
+// Impedir extensões do objeto ainda
+// não o torna frozen, pois a propriedade ainda será
+// configurável (e modificável).
+Object.preventExtensions(oneProp);
+Object.isFrozen(oneProp); // === false
+
+// ...Porém, deletando a propriedade o objeto se tornará
+// vagamente frozen.
+delete oneProp.p;
+Object.isFrozen(oneProp); // === true
+
+// Um objeto não extensível e não modificável,
+// mas com uma propriedade configurável não será frozen.
+var nonWritable = { e: 'plep' };
+Object.preventExtensions(nonWritable);
+Object.defineProperty(nonWritable, 'e', {
+  writable: false
+}); // tornar não modificável
+Object.isFrozen(nonWritable); // === false
+
+// Alterando a propriedade para não configurável
+// tornará o objeto frozen.
+Object.defineProperty(nonWritable, 'e', {
+  configurable: false
+}); // make non-configurable
+Object.isFrozen(nonWritable); // === true
+
+// Um objeto não extensível com uma propriedade não configurável
+// mas modificável não será frozen.
+var nonConfigurable = { release: 'the kraken!' };
+Object.preventExtensions(nonConfigurable);
+Object.defineProperty(nonConfigurable, 'release', {
+  configurable: false
+});
+Object.isFrozen(nonConfigurable); // === false
+
+// Alterando a propriedade para não modificável
+// tornará o objeto frozen.
+Object.defineProperty(nonConfigurable, 'release', {
+  writable: false
+});
+Object.isFrozen(nonConfigurable); // === true
+
+// Um objeto não extensível com um assessor de propriedade
+// configurável não será frozen.
+var accessor = { get food() { return 'yum'; } };
+Object.preventExtensions(accessor);
+Object.isFrozen(accessor); // === false
+
+// ...Mas alterando essa propriedade para não configurável
+// o objeto se tornará frozen.
+Object.defineProperty(accessor, 'food', {
+  configurable: false
+});
+Object.isFrozen(accessor); // === true
+
+// A forma mais fácil para um objeto ser frozen
+// é se o método Object.freeze foi usado nele.
+var frozen = { 1: 81 };
+Object.isFrozen(frozen); // === false
+Object.freeze(frozen);
+Object.isFrozen(frozen); // === true
+
+// Por definição, um objeto frozen não é extensível.
+Object.isExtensible(frozen); // === false
+
+// Também por definição, um objeto frozen estará sealed.
+Object.isSealed(frozen); // === true
+
+ +

Notas

+ +

No ES5, se o argumento deste método não for um objeot (uma primitiva), ele irá lançar um {{jsxref("TypeError")}}. No ES2015, um argumento que não é objeto será sempre tratado como se fosse um objeto frozen, simplesmente retornando true.

+ +
Object.isFrozen(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isFrozen(1);
+// true                          (ES2015 code)
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}{{Spec2('ES5.1')}}Initial definition. Implemented in JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-object.isfrozen', 'Object.isFrozen')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.isFrozen")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/isprototypeof/index.html b/files/pt-br/web/javascript/reference/global_objects/object/isprototypeof/index.html new file mode 100644 index 0000000000..07ff5404a3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/isprototypeof/index.html @@ -0,0 +1,124 @@ +--- +title: Object.prototype.isPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +tags: + - Objeto + - Prototipo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +--- +
{{JSRef}}
+ +

O método isPrototypeOf() checa se um objeto existe em na cadeia de protótipos de um outro objeto.

+ +
+

isPrototypeOf() difere do operador {{jsxref("Operators/instanceof", "instanceof")}}. Na expressão "objeto instanceof UmaFuncaoQualquer", a cadeia de protótipos do objeto é comparada com UmaFuncaoQualquer.prototype, e não com a própria função UmaFuncaoQualquer.

+
+ +

Sintaxe

+ +
prototypeObj.isPrototypeOf(objeto)
+ +

Parâmetros

+ +
+
objeto
+
Objeto no qual será feito uma busca na cadeia de protótipos.
+
+ +

Retorno

+ +

Um {{jsxref("Boolean")}} indicando se prototypeObj está na cadeia de protótipos do objeto.

+ +

Erros possíveis

+ +
+
{{jsxref("TypeError")}}
+
Um {{jsxref("TypeError")}} é mostrado se prototypeObj é undefined ou null.
+
+ +

Descrição

+ +

O método isPrototypeOf() lhe permite checar se um objeto está ou não na cadeia de protótipos (cadeia hieráquica) de um outro objeto.

+ +

Em outras palavras, você pode descobrir se um objeto x (já instanciado) é herdeiro de um objeto y.

+ +

 

+ +

Exemplos

+ +

Este exemplo demonstra que Baz.prototype, Bar.prototypeFoo.prototype eObject.prototype estão na cadeia de protótipos de  baz , ou seja, baz herda atributos de Baz, Bar e Foo:

+ +
function Foo() {}
+function Bar() {}
+function Baz() {}
+
+Bar.prototype = Object.create(Foo.prototype);
+Baz.prototype = Object.create(Bar.prototype);
+
+var baz = new Baz();
+
+console.log(Baz.prototype.isPrototypeOf(baz)); // true
+console.log(Bar.prototype.isPrototypeOf(baz)); // true
+console.log(Foo.prototype.isPrototypeOf(baz)); // true
+console.log(Object.prototype.isPrototypeOf(baz)); // true
+
+ +

O métodoisPrototypeOf(), junto com o operador {{jsxref("Operators/instanceof", "instanceof")}} vêm a ser útil se você tem um código que só pode funcionar quando estiver lidando com objetos que descendem de uma cadeia de protótipos específicos, por exemplo, para garantir que certos métodos ou propriedades estarão presentes naquele objeto que você precisa. 

+ +

Por exemplo, checar se o objeto baz descende de Foo.prototype:

+ +
if (Foo.prototype.isPrototypeOf(baz)) {
+  // fazer algo seguramente
+}
+
+ +

Specificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition.
{{SpecName('ES5.1', '#sec-15.2.4.6', 'Object.prototype.isPrototypeOf')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.isprototypeof', 'Object.prototype.isPrototypeOf')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.prototype.isprototypeof', 'Object.prototype.isPrototypeOf')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com o Browser

+ +
+ + +

{{Compat("javascript.builtins.Object.isPrototypeOf")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/issealed/index.html b/files/pt-br/web/javascript/reference/global_objects/object/issealed/index.html new file mode 100644 index 0000000000..67f42f78bc --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/issealed/index.html @@ -0,0 +1,134 @@ +--- +title: Object.isSealed() +slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed +--- +
{{JSRef}}
+ +

O método Object.isSealed() determina se um objeto está selado.

+ +
{{EmbedInteractiveExample("pages/js/object-issealed.html")}}
+ + + +

Sintaxe

+ +
Object.isSealed(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto que deverá ser verificado.
+
+ +

Valor retornado

+ +

Um {{jsxref("Boolean")}} indicando se o objeto fornecido está ou não selado.

+ +

Descrição

+ +

Retorna true se o objeto está selado, senão false. Um objeto está selado se ele for "não {{jsxref("Object.isExtensible", "extensible", "", 1)}}" e se todas as suas propriedades estão como "não configuráveis" e assim sendo "não removíveis" (mas não necessariamente "não escrevíveis").

+ +

Exemplos

+ +
// Objetos não são selados por padrão.
+var empty = {};
+Object.isSealed(empty); // === false
+
+// Se você fizer um objeto não extensível vazio,
+// ele estará vagamente selado.
+Object.preventExtensions(empty);
+Object.isSealed(empty); // === true
+
+// O mesmo não é verdadeiro em um objeto "não vazio",
+// a não ser que todas as suas propriedades sejam "não configuráveis".
+var hasProp = { fee: 'fie foe fum' };
+Object.preventExtensions(hasProp);
+Object.isSealed(hasProp); // === false
+
+// Mas torne-os todos "não configuráveis"
+// e o objeto se tornará selado.
+Object.defineProperty(hasProp, 'fee', {
+  configurable: false
+});
+Object.isSealed(hasProp); // === true
+
+// O jeito mais fácil de selar um objeto, com certeza,
+// é Object.seal.
+var sealed = {};
+Object.seal(sealed);
+Object.isSealed(sealed); // === true
+
+// Um objeto selado é, por definição, não extensível.
+Object.isExtensible(sealed); // === false
+
+// Um objeto selado pode estar congelado,
+// mas não precisa estar.
+Object.isFrozen(sealed); // === true
+// (todas as propriedades também não escrevíveis)
+
+var s2 = Object.seal({ p: 3 });
+Object.isFrozen(s2); // === false
+// ('p' continua "escrevível")
+
+var s3 = Object.seal({ get p() { return 0; } });
+Object.isFrozen(s3); // === true
+// (somente a configurabilidade importa nos assessores de propriedade)
+
+ +

Notas

+ +

No ES5, se o argumento para esse método não é um objeto (um primitivo), então ele irá causar um {{jsxref("TypeError")}}. No ES2015, um argumento que não seja objeto irá ser tratado como se fosse um objeto selado qualquer, simplesmente retornando true.

+ +
Object.isSealed(1);
+// TypeError: 1 is not an object (ES5 code)
+
+Object.isSealed(1);
+// true                          (ES2015 code)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.issealed', 'Object.isSealed')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com Navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.isSealed")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/keys/index.html b/files/pt-br/web/javascript/reference/global_objects/object/keys/index.html new file mode 100644 index 0000000000..022fdfb410 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/keys/index.html @@ -0,0 +1,190 @@ +--- +title: Object.keys() +slug: Web/JavaScript/Reference/Global_Objects/Object/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys +--- +
{{JSRef}}
+ +

O método Object.keys() retorna um array de propriedades enumeraveis de um determinado objeto, na mesma ordem em que é fornecida por um laço {{jsxref("Statements/for...in", "for...in")}} (a diferença é que um laço for-in  enumera propriedades que estejam na cadeia de protótipos).

+ +

Sintaxe

+ +
Object.keys(obj)
+ +

Parametros

+ +
+
obj
+
O objeto cujas propriedades são enumeráveis.
+
+ +

Descrição

+ +

Object.keys() retorna um array cujo os  elementos são strings correspondentes para a propriedade enumerável encontrada diretamento sobre o objeto. A ordenação das propriedades é a mesma que a dada pelo loop sobre as propriedades do objeto manualmente.

+ +

Exemplos

+ +
var arr = ['a', 'b', 'c'];
+console.log(Object.keys(arr)); // console: ['0', '1', '2']
+
+// array com objeto
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.keys(obj)); // console: ['0', '1', '2']
+
+// array como objeto com ordenação aleatória por chave
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.keys(an_obj)); // console: ['2', '7', '100']
+
+// getFoo é uma propriedade que não é enumerável
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = 1;
+
+console.log(Object.keys(my_obj)); // console: ['foo']
+
+ +

Se você quiser todas as propriedades, mesmo que não enumeráveis, consulte:{{jsxref("Object.getOwnPropertyNames()")}}.

+ +

Notas

+ +

Em ES5, Se o argumento para o método this não é um objeto(um primitivo), em seguida ele irá causar um {{jsxref("TypeError")}}. Em ES2015, um argumento não-objeto será forçado a um objeto.

+ +
Object.keys("foo");
+// TypeError: "foo" is not an object (ES5 code)
+
+Object.keys("foo");
+// ["0", "1", "2"]                   (ES2015 code)
+
+ +

Polyfill

+ +

Para adicionar suporte Object.keys compatíveis em ambientes mais antigos que não têm suporte nativo para isso, copie o seguinte trecho:

+ +
// De 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 chamado de 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;
+    };
+  }());
+}
+
+ +

Por favor, note que o código acima inclui chaves não-enumeráveis no IE7 (e talvez IE8), ao passar em um objeto a partir de uma janela diferente.

+ +

Para um simples Browser Polyfill, veja Javascript - Object.keys Browser Compatibility.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}{{Spec2('ES5.1')}}Definição inicial. Implementado em  JavaScript 1.8.5.
{{SpecName('ES2015', '#sec-object.keys', 'Object.keys')}}{{Spec2('ES2015')}} 
+ +

Browser compatibilidade

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracteristicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("5")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracteristicaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html b/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html new file mode 100644 index 0000000000..c9964127c5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/observe/index.html @@ -0,0 +1,161 @@ +--- +title: Object.observe() +slug: Web/JavaScript/Reference/Global_Objects/Object/observe +tags: + - JavaScript + - Obsoleto + - observe +translation_of: Archive/Web/JavaScript/Object.observe +--- +
+

{{JSRef}} {{obsolete_header}}

+ +

O método Object.observe() era usado para observações de mudanças, de forma assíncronas de um objeto. Ele fornecia um fluxo de mudanças na ordem em que elas ocorriam. Porém, está API foi depreciada e removida dos navegadores. Você pode utilizar o objeto {{jsxref("Proxy")}} como alternativa.

+
+ +

Sintaxe

+ +
Object.observe(obj, callback)
+ +

Parâmetros

+ +
+
obj
+
O objeto a ser observado.
+
callback
+
A função chamada cada vez que as alterações são feitas, com o seguinte argumento: +
+
changes
+
Um array de objetos onde cada item representa uma mudança. As propriedades destes objetos de mudança são: +
    +
  • name: O nome da propriedade que foi alterada.
  • +
  • object: O objeto alterado depois que a mudança foi feita.
  • +
  • type: Uma string indicando o tipo de mudança. Pode ser "add", "update", ou "delete".
  • +
  • oldValue: Apenas para os tipos "update" e "delete". O valor antes da alteração.
  • +
+
+
acceptList
+
A lista dos tipos de alterações a serem observadas no objeto dado para o retorno de chamada dado. Se omitida, o array ["add", "update", "delete", "reconfigure", "setPrototype", "preventExtensions"] será usado.
+
+

Retorno

+ +

O objeto será retornado.

+
+
+
+
+ +

Descrição

+ +

O callback é chamado à cada vez que uma mudança ocorre no obj, com um array contendo todas as mudanças na ordem em que elas ocorreram.

+ +

Exemplos

+ +

Exemplo: Registrando todos os três tipos diferentes

+ +
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}]
+
+ +

Exemplo: Data Binding

+ +
// Um modelo chamado "user"
+var user = {
+  id: 0,
+  name: 'Brendan Eich',
+  title: 'Mr.'
+};
+
+// Criando uma saudação para o user
+function updateGreeting() {
+  user.greeting = 'Olá, ' + user.title + ' ' + user.name + '!';
+}
+updateGreeting();
+
+Object.observe(user, function(changes) {
+  changes.forEach(function(change) {
+    // Sempre que o name e o title mudarem, o updateGreeting será executado
+    if (change.name === 'name' || change.name === 'title') {
+      updateGreeting();
+    }
+  });
+});
+
+ +

Especificações

+ +

Strawman proposal for ECMAScript 7.

+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatNo}}{{CompatChrome("36")}}{{CompatNo}}{{CompatNo}}{{CompatOpera("23")}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/preventextensions/index.html b/files/pt-br/web/javascript/reference/global_objects/object/preventextensions/index.html new file mode 100644 index 0000000000..35446ed876 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/preventextensions/index.html @@ -0,0 +1,131 @@ +--- +title: Object.preventExtensions() +slug: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +tags: + - Objeto + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +--- +
{{JSRef}}
+ +

O método Object.preventExtensions() impede que novas propriedades sejam adicionadas a um objeto (isto é, impede futuras extensões ao objeto).

+ +

Syntax

+ +
Object.preventExtensions(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto a tornar-se não-extensível.
+
+ +

Valor de retorno

+ +

Um objeto tornado não-extensível.

+ +

Descrição

+ +

Um objeto é extensível se novas propriedades puderem der adicionadas ao mesmo. Object.preventExtensions() marca um objeto como não mais extensível, de forma que este nunca terá novas propriedades além daquelas que o objeto tinha quando foi marcado como não-extensível. Note que as propriedades de um objeto não-extensível, em geral, ainda poderão ser apagadas. Tentativas de adicionar novas propriedades a um objeto não-extensível falharão, tanto silenciosamente ou lançando uma exceção {{jsxref("TypeError")}} (mais comumente, mas não exclusivamente, quando em {{jsxref("Functions_and_function_scope/Strict_mode", "strict mode", "", 1)}}).

+ +

Object.preventExtensions() evita apenas a adição de novas propriedades diretas. Proprieades ainda poderão ser adicionadas ao protótipo do objeto.

+ +

É impossível tornar um objeto extensível novamente uma vez que o mesmo tenha se tornado não-extensível.

+ +

Exemplos

+ +
// Object.preventExtensions retorna o objeto
+// tornado não-extensível.
+var obj = {};
+var obj2 = Object.preventExtensions(obj);
+obj === obj2; // verdadeiro
+
+// Objetos são extensíveis por padrão...
+var empty = {};
+Object.isExtensible(empty); // === verdadeiro
+
+// ...mas isso pode ser mudado.
+Object.preventExtensions(empty);
+Object.isExtensible(empty); // === falso
+
+// Object.defineProperty lança erro quando adiciona-se
+// uma nova propriedade a um objeto não-extensível.
+var nonExtensible = { removable: true };
+Object.preventExtensions(nonExtensible);
+Object.defineProperty(nonExtensible, 'new', {
+  value: 8675309
+}); // lança um TypeError
+
+// No modo restrito, tentar adicionar novas propriedades a
+// um objeto não-extensível lança um TypeError.
+function fail() {
+  'use strict';
+  // lança um TypeError
+  nonExtensible.newProperty = 'FAIL';
+}
+fail();
+
+ +

O protótipo não-extensível de um objeto é imutável:

+ +
var fixed = Object.preventExtensions({});
+// lança um 'TypeError'.
+fixed.__proto__ = { oh: 'hai' };
+ +

Notas

+ +

No ES5, se o argumento atribuído a este método não for um objeto (for um primitivo), isso causará um erro de tipo {{jsxref("TypeError")}}. No ES2015, um argumento não-objeto será tratado como se o mesmo fosse um objeto não-extensível comum, simplesmente retornando-o.

+ +
Object.preventExtensions(1);
+// TypeError: 1 não é um objeto (código ES5)
+
+Object.preventExtensions(1);
+// 1                             (código ES2015)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.2.3.10', 'Object.preventExtensions')}}{{Spec2('ES5.1')}}Definição inicial. Implementado em JavaScript 1.8.5.
{{SpecName('ES6', '#sec-object.preventextensions', 'Object.preventExtensions')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.preventextensions', 'Object.preventExtensions')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.preventExtensions")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/pt-br/web/javascript/reference/global_objects/object/propertyisenumerable/index.html new file mode 100644 index 0000000000..a68117bc0c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/propertyisenumerable/index.html @@ -0,0 +1,128 @@ +--- +title: Object.prototype.propertyIsEnumerable() +slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +--- +
{{JSRef}}
+ +

O método propertyIsEnumerable() retorna um booleano indicando quando a propriedade especificada é enumerável e é a propriedade do próprio objeto

+ +
{{EmbedInteractiveExample("pages/js/object-prototype-propertyisenumerable.html", "taller")}}
+ + + +

Sintaxe

+ +
obj.propertyIsEnumerable(prop)
+ +

Parâmetros

+ +
+
prop
+
O nome da propriedade para teste
+
+ +

Valor de Retorno

+ +

O {{jsxref("Boolean")}} indicando se a propriedade especificada é enumeravel e é a propriedade do objeto

+ +

Descrição

+ +

Every object has a propertyIsEnumerable method. This method can determine whether the specified property in an object can be enumerated by a {{jsxref("Statements/for...in", "for...in")}} loop, with the exception of properties inherited through the prototype chain. If the object does not have the specified property, this method returns false.

+ +

Exemplos

+ +

O uso basico de propertyIsEnumerable

+ +

O exemplos a seguir mostram o uso de propertyIsEnumerable em um objeto e um array:

+ +
var o = {};
+var a = [];
+o.prop = 'is enumerable';
+a[0] = 'is enumerable';
+
+o.propertyIsEnumerable('prop');   // returns true
+a.propertyIsEnumerable(0);        // returns true
+
+ +

Objetos User-defined vs. built-in

+ +

Os exemplos a seguir demostram a enumerabilidade da propriedade user-defined vs. built-in :

+ +
var a = ['is enumerable'];
+
+a.propertyIsEnumerable(0);          // returns true
+a.propertyIsEnumerable('length');   // returns false
+
+Math.propertyIsEnumerable('random');   // returns false
+this.propertyIsEnumerable('Math');     // returns false
+
+ +

Propriedade Direct vs. inherited

+ +
var a = [];
+a.propertyIsEnumerable('constructor');         // returns false
+
+function firstConstructor() {
+  this.property = 'is not enumerable';
+}
+
+firstConstructor.prototype.firstMethod = function() {};
+
+function secondConstructor() {
+  this.method = function() { return 'is enumerable'; };
+}
+
+secondConstructor.prototype = new firstConstructor;
+secondConstructor.prototype.constructor = secondConstructor;
+
+var o = new secondConstructor();
+o.arbitraryProperty = 'is enumerable';
+
+o.propertyIsEnumerable('arbitraryProperty');   // returns true
+o.propertyIsEnumerable('method');              // returns true
+o.propertyIsEnumerable('property');            // returns false
+
+o.property = 'is enumerable';
+
+o.propertyIsEnumerable('property');            // returns true
+
+// These return false as they are on the prototype which
+// propertyIsEnumerable does not consider (even though the last two
+// are iteratable with for-in)
+o.propertyIsEnumerable('prototype');   // returns false (as of JS 1.8.1/FF3.6)
+o.propertyIsEnumerable('constructor'); // returns false
+o.propertyIsEnumerable('firstMethod'); // returns false
+
+ +

Especificações

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}
+ +

Compatibilidade com Navegadores

+ +
+ + +

{{Compat("javascript.builtins.Object.propertyIsEnumerable")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/proto/index.html b/files/pt-br/web/javascript/reference/global_objects/object/proto/index.html new file mode 100644 index 0000000000..11221c8bf9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/proto/index.html @@ -0,0 +1,203 @@ +--- +title: Object.prototype.__proto__ +slug: Web/JavaScript/Reference/Global_Objects/Object/proto +tags: + - Depreciado + - ECMAScript 2015 + - JavaScript + - Objeto + - Propriedade + - Prototipo + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto +--- +
+

Cuidado: Alterando o [[Prototype]] de um objeto é, pela natureza que as engines do Javascript modernos otimizam os acessos à propriedades, uma operação muito lenta, em TODOS os mecanismos browsers e JavaScript. Os efeitos no desempenho de alteração na herança são sutis e distantes, e não se limitam simplesmente ao tempo gasto em na declaração obj.__proto__ = ..., mas podem se estender para qualquer código que tenha acesso a qualquer objeto cujo [[Prototype]] foi alterado. Se você se preocupa com desempenho, evite configurar o [[Prototype]] de um objeto. Ao invés disso, crie um novo objeto com o [[Prototype]] desejado usando {{jsxref("Object.create()")}}.

+
+ +
+

Cuidado: Enquanto Object.prototype.__proto__ é suportado hoje em dia em quase todos os navegadores, a existência e o comportamento exato foram padronizados na especificação ECMAScript 2015 como um recurso legado para assegurar compatibilidade com os navegadores. Para melhor suporte, recomenda-se que apenas {{jsxref("Object.getPrototypeOf()")}} seja usado em vez disso.

+
+ +
{{JSRef}}
+ +

A propriedade __proto__ de {{jsxref("Object.prototype")}} é uma propriedade de acesso (uma função getter e uma setter) que expõe o interno [[Prototype]] (ou um objeto ou {{jsxref("Global_Objects/null", "null")}}) de um objeto o qual é acessado.

+ +

O uso de __proto__ é controverso, e foi desencorajado. Nunca foi incluído originalmente na especificação do idioma EcmaScript, mas os navegadores modernos decidiram implementá-lo de qualquer maneira. Somente recentemente, a propriedade __proto__ foi padronizada na especificação de linguagem ECMAScript 2015 para navegadores para garantir compatibilidade, e então ser suportada no futuro. É obsoleta a favor de {{jsxref("Object.getPrototypeOf")}}/{{jsxref("Reflect.getPrototypeOf")}} e {{jsxref("Object.setPrototypeOf")}}/{{jsxref("Reflect.setPrototypeOf")}} (embora ainda, definir [[Prototype]] é uma operação lenta que deve ser evitada se o desempenho for uma preocupação).

+ +

A propriedade __proto__ também pode ser usada em uma definição literal de objeto para definir o objeto [[Prototype]] na criação, como uma alternativa para {{jsxref("Object.create()")}}. Veja: object initializer / literal syntax.

+ +

Sintaxe

+ +
var shape = {};
+var circle = new Circle();
+
+// Define o objeto prototype.
+// OBSOLETO. Isto é somente exemplo. NÃO FAÇA ISSO em código real.
+shape.__proto__ = circle;
+
+// Retorna o objeto prototype
+console.log(shape.__proto__ === circle); // true
+
+ +
var shape = function () {
+};
+var p = {
+    a: function () {
+        console.log('aaa');
+    }
+};
+shape.prototype.__proto__ = p;
+
+var circle = new shape();
+
+circle.a();//aaa
+
+console.log(shape.prototype === circle.__proto__);//true
+
+//ou
+
+var shape = function () {
+};
+var p = {
+    a: function () {
+        console.log('a');
+    }
+};
+
+var circle = new shape();
+circle.__proto__ = p;
+
+
+circle.a(); //  a
+
+console.log(shape.prototype === circle.__proto__);//false
+
+//ou
+
+function test() {
+}
+test.prototype.myname = function () {
+    console.log('myname');
+
+}
+var a = new test()
+
+console.log(a.__proto__ === test.prototype);//true
+
+a.myname();//myname
+
+
+//ou
+
+var fn = function () {
+};
+fn.prototype.myname = function () {
+    console.log('myname');
+}
+
+var obj = {
+    __proto__: fn.prototype
+};
+
+
+obj.myname();//myname
+
+ +

Nota: são dois underscores(underlines), seguidos de cinco caracteres "proto", seguidos por mais dois underscores(underlines).

+ +

Descrição

+ +

A função getter de __proto__ expõe o valor interno de [[Prototype]] de um objeto. Para objetos criado usando um objeto literal, este valor é {{jsxref("Object.prototype")}}. Para os objetos criados usando literais de matrizes, esse valor é {{jsxref("Array.prototype")}}. Para funções, esse valor é {{jsxref("Function.prototype")}}. Para objeto criados usando new fun, onde fun é uma função construtora built-in fornecida pelo JavaScript ({{jsxref("Array")}}, {{jsxref("Boolean")}}, {{jsxref("Date")}}, {{jsxref("Number")}}, {{jsxref("Object")}}, {{jsxref("String")}}, e assim por diante — incluindo novos construtores adicionados como evolução do JavaScript), este valor é sempre fun.prototype. Para objetos criados usando new fun, onde fun é uma função definida em um script, esse valor é o valor de  fun.prototype. (Ou seja, se o construtor não retornou um outro objeto explicitamente, ou o fun.prototype foi reatribuído desde que a instância foi criada).

+ +

O setter __proto__ permite ao [[Prototype]] de um objeto sejá mutável. O objeto deve ser extensível de acordo com {{jsxref("Object.isExtensible()")}}: se não for, um erro {{jsxref("Global_Objects/TypeError", "TypeError")}} é emitido. O valor fornecido deve ser um objeto ou {{jsxref("Global_Objects/null", "null")}}. Fornecer qualquer outro valor não fará nada.

+ +

Para entender como os prototypes são usados para herança, veja o artigo:Inheritance and the prototype chain.

+ +

A propriedade __proto__ é simplesmente uma propriedade acessora {{jsxref("Object.prototype")}} consistindo de uma função getter e setter. Um acesso de propriedade para __proto__ que eventualmente consulte {{jsxref("Object.prototype")}} irá encontrar esta propriedade, mas um acesso que não consulta {{jsxref("Object.prototype")}} não a encontrará. Se alguma outra propriedade __proto__ for encontrada antes de consultar {{jsxref("Object.prototype")}}, essa propriedade irá ocultar a que encontrou {{jsxref("Object.prototype")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES6', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}{{Spec2('ES6')}}Included in the (normative) annex for additional ECMAScript legacy features for Web browsers (note that the specification codifies what is already in implementations).
{{SpecName('ESDraft', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Notas de compatibilidade

+ +

Enquanto a especificação ECMAScript 2015 dita que o suporte para __proto__ é requerido somente para navegadores (apesar de ser normativo), outros ambientes podem suportar também para uso legado.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/object/prototype/index.html new file mode 100644 index 0000000000..5897f91327 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/prototype/index.html @@ -0,0 +1,226 @@ +--- +title: Object.prototype +slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +tags: + - JavaScript + - Objeto + - Propriedade +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Sumário

+ +

A propriedade Object.prototype representa o {{jsxref("Global_Objects/Object", "Object")}} protótipo do objeto.

+ +

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

+ +

Descrição

+ +

Praticamente todos os objetos em JavaScript descendem de {{jsxref("Global_Objects/Object", "Object")}}; todos os métodos e propriedades herdados de Object.prototype, embora possam ser sobrescritos (exceto um Objeto com protótipo nulo, i.e. Object.create(null)). Por exemplo, outros protótipos construtores sobrescrevem a propriedade construtora e fornece seus próprios {{jsxref("Object.prototype.toString()", "toString()")}} métodos.

+ +

Modificações no Objeto protótipo do objeto são propagadas a todos objetos através do encadeamento de protótipos, a menos que as propriedades e métodos  submetidos às mudanças sejam sobrescritos mais além no encadeamento dos protótipos. Este recurso oferece um mecânismo muito poderoso apesar de perigoso para sobrescrita e extensão de objetos.

+ +

Propriedades

+ +
+
{{jsxref("Object.prototype.constructor")}}
+
Especifica a função que cria um objeto protótipo.
+
{{jsxref("Object.prototype.__proto__")}} {{non-standard_inline}}
+
Aponta para o objeto que foi usado como protótipo quando o objeto foi instanciado.
+
{{jsxref("Object.prototype.__noSuchMethod__")}} {{non-standard_inline}}
+
Permite definir uma função que será executada quando um membro indefinido do objeto for chamado como método.
+
{{jsxref("Object.prototype.__count__")}} {{obsolete_inline}}
+
Usado para retornar um número de propriedades enumeráveis diretamente num objeto definido pelo usuário, mas foi removida.
+
{{jsxref("Object.prototype.__parent__")}} {{obsolete_inline}}
+
Usado para apontar a um contexto do objeto, mas foi removida.
+
+ +

Métodos

+ +
+
{{jsxref("Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Associa uma função com uma propriedade que, quando acessada, executa uma função e retorna seu valor de retorno.
+
{{jsxref("Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Associa uma função com uma propriedade que, quando definida, executa uma função que modifica a propriedade.
+
{{jsxref("Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Retorna a função associada com a propriedade específicada pelo {{jsxref("Object.defineGetter", "__defineGetter__")}} método.
+
{{jsxref("Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
+
Retorna a função associada com a propriedade especificada pelo {{jsxref("Object.defineSetter", "__defineSetter__")}} método.
+
{{jsxref("Object.prototype.hasOwnProperty()")}}
+
Retorna um boolean indicando se um objeto contém a propriedade especificada como uma propriedade direta de um objeto e não herdada através da cadeia de protótipo.
+
{{jsxref("Object.prototype.isPrototypeOf()")}}
+
Retorna uma indicação booleana se o objeto especificado está na cadeia de protótipo do objeto este método é chamado.
+
{{jsxref("Object.prototype.propertyIsEnumerable()")}}
+
Retorna um boolean indicando se o atributo interno ECMAScript DontEnum attribute está definido.
+
{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna uma string contendo o código de um objeto literal representando o objeto que este método é  chamado; você pode usar este valor para criar um novo objeto.
+
{{jsxref("Object.prototype.toLocaleString()")}}
+
Chama {{jsxref("Object.toString", "toString()")}}.
+
{{jsxref("Object.prototype.toString()")}}
+
Retorna uma representação do objeto em forma de string.
+
{{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}
+
Remove um ponto de escuta da propriedade do objeto.
+
{{jsxref("Object.prototype.valueOf()")}}
+
Retorna o valor primitivo do objeto especificado.
+
{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}
+
Adiciona um ponto de escuta à propriedade do objeto.
+
{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}
+
Usado para avaliar uma string de código JavaScript no contexto do objeto especificado, mas foi removido.
+
+ +

Exemplos

+ +

Quando é alterado o comportamento de um método de um Objeto protótipo, considere injetar código envolvendo sua extensão antes ou depois ta lógica existente. Por exemplo, este (não testado) código irá pré-condicionalmente executar uma lógica personalizada antes da lógica embutida ou a extensão de alguém será executada.

+ +

Quando uma função é chamada os argumentos para a chamada são segurados no array de argumentos como "variável". Por exemplo, na chamada "minhaFuncao(a, b, c)", os argumentos no corpo da minhaFuncao irão conter 3 elementos array correspondentes a (a, b, c). Quando modificamos os protótipos com ganchos, simplesmente passamos this & a variável arguments (o estado de chamada) para o comportamento atual pela chamada apply() na função. Este padrão pode ser usado por qualquer protótipo, tal como Node.prototype, Function.prototype, etc.

+ +
var current = Object.prototype.valueOf;
+
+// Desde que minha propriedade "-prop-value" é transversal e não está
+// sempre na mesma cadeia de protótipo, desejo modificar Object.prototype:
+Object.prototype.valueOf = function() {
+  if (this.hasOwnProperty("-prop-value") {
+    return this["-prop-value"];
+  } else {
+    // Isto não parece com um de meus objetos, então vamos retroceder ao
+    // comportamento padrão para reproduzir o comportamento atual o que
+    // pudermos. O apply se comporta como o"super" em outras linguagens.
+    // Mesmo que valueOf() não receba argumentos, alguns outros ganchos podem.
+    return current.apply(this, arguments);
+  }
+}
+ +

Desde que JavaScript não tem exatamente objetos de subclasse, protótipo é uma forma usual de trabalhar para fazer um objeto "classe base" de certas funções que agem como objetos. Por exemplo:

+ +
var Person = function() {
+  this.canTalk = true;
+  this.greet = function() {
+    if (this.canTalk) {
+      console.log('Hi, I\'m ' + this.name);
+    }
+  };
+};
+
+var Employee = function(name, title) {
+  this.name = name;
+  this.title = title;
+  this.greet = function() {
+    if (this.canTalk) {
+      console.log("Hi, I'm " + this.name + ", the " + 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('Bob', 'Builder');
+var joe = new Customer('Joe');
+var rg = new Employee('Red Green', 'Handyman');
+var mike = new Customer('Mike');
+var mime = new Mime('Mime');
+bob.greet();
+joe.greet();
+rg.greet();
+mike.greet();
+mime.greet();
+
+ +

O retorno será:

+ +
Hi, I'm Bob, the Builder
+Hi, I'm Joe
+Hi, I'm Red Green, the Handyman
+Hi, I'm Mike
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesSituaçãoComentário
ECMAScript 1st Edition. Implemented in JavaScript 1.0.PadrãoDefinição inicial.
{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}}{{Spec2('ES6')}} 
+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
AspectoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
AspectoAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico.{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

 

diff --git a/files/pt-br/web/javascript/reference/global_objects/object/seal/index.html b/files/pt-br/web/javascript/reference/global_objects/object/seal/index.html new file mode 100644 index 0000000000..a3b6ffa66a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/seal/index.html @@ -0,0 +1,173 @@ +--- +title: Object.seal() +slug: Web/JavaScript/Reference/Global_Objects/Object/seal +tags: + - objeto selar selado +translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal +--- +
{{JSRef}}
+ +

O método Object.seal() sela um Objeto, evitando que novas propriedades sejam adicionadas à ele e marcando todas as propriedades existentes como não configuráveis. Valores das propriedades atuais ainda podem ser alterados desde que essas propriedades sejam graváveis (writable).

+ +

Sintaxe

+ +
Object.seal(obj)
+ +

Parâmetros

+ +
+
obj
+
O Objeto que deve ser selado.
+
+ +

Valor de retorno

+ +

O Objeto sendo selado.

+ +

Descrição

+ +

Por padrão, objetos são {{jsxref("Object.isExtensible()", "extensible", "", 1)}} (novas propriedades podem ser adicionadas à eles). Selar um objeto evita que novas propriedades sejam adicionadas e marca todas as propriedades existentes como não configuráveis. Isto tem o efeito de tornar as propriedades no objeto fixas e imutáveis. Tornando todas as propriedades não configuráveis também evita que as mesmas sejam convertidas de propriedades de dados para propriedades de acesso e vice-versa, mas não evita que os valores das propriedades de dados sejam alterados. A tentativa de deletar ou adicionar propriedades à um objeto selado, ou converter uma propriedade de dado para uma propriedade de acesso ou vice-versa, irá falhar, seja silenciosamente como jogando o erro {{jsxref("TypeError")}} (mais comumente, mas não exclusivamente, quando em modo rigoroso {{jsxref("Strict_mode", "strict mode", "", 1)}} de código).

+ +

A cadeia de prototipação permanece intocada. Entretanto, a propriedade {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} é selada também.

+ +

Retorna a referência ao Objeto passado.

+ +

Exemplos

+ +
var obj = {
+  prop: function() {},
+  foo: 'bar'
+};
+
+// Novas propriedades podem ser adicionadas, propriedades existentes podem ser alteradas ou removidas.
+obj.foo = 'baz';
+obj.lumpy = 'woof';
+delete obj.prop;
+
+var o = Object.seal(obj);
+
+o === obj; // true
+Object.isSealed(obj); // === true
+
+// Alterar o valor das propriedades em um objeto selado ainda funciona.
+obj.foo = 'quux';
+
+// Mas você não pode converter propriedades de dados em propriedades de acesso, e vice-versa.
+Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // throws a TypeError
+
+// Agora quaisquer mudanças, que não sejam aos valores da das propriedades, irão falhar.
+obj.quaxxor = 'the friendly duck'; // silently doesn't add the property
+delete obj.foo; // silently doesn't delete the property
+
+// e em modo rigoroso (strict mode) tais tentativas irão jogar erros do tipo TypeErrors.
+function fail() {
+  'use strict';
+  delete obj.foo; // throws a TypeError
+  obj.sparky = 'arf'; // throws a TypeError
+}
+fail();
+
+// Tentativas através do Object.defineProperty também irão falhar.
+Object.defineProperty(obj, 'ohai', { value: 17 }); // lança um erro do tipo TypeError
+Object.defineProperty(obj, 'foo', { value: 'eit' }); // altera o valor da propriedade existente
+
+ +

Notas

+ +

No ES5, se o argumento passado à este método não é um objeto (primitivo) , irá causar um erro {{jsxref("TypeError")}}. No ES6, qualquer argumento que não seja um objeto será tratado como se fosse um objeto ordinário selado e simplesmente irá retorná-lo

+ +
Object.seal(1);
+// TypeError: 1 não é um Objeto (código ES5)
+
+Object.seal(1);
+// 1                             (código ES6)
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no Javascript 1.8.5.
{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-object.seal', 'Object.seal')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade em Browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("6")}}{{CompatGeckoDesktop("2.0")}}{{CompatIE("9")}}{{CompatOpera("12")}}{{CompatSafari("5.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/setprototypeof/index.html b/files/pt-br/web/javascript/reference/global_objects/object/setprototypeof/index.html new file mode 100644 index 0000000000..1a27cbd99e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/setprototypeof/index.html @@ -0,0 +1,249 @@ +--- +title: Object.setPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +tags: + - ECMAScript 2015 + - JavaScript + - Método(2) + - Objeto + - Prototype + - Protótipo(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +--- +

{{JSRef}}

+ +

O método Object.setPrototypeOf() configura o 'prototype' (i.e., a propriedade interna [[Prototype]])  de um objeto específico para outro objeto ou {{jsxref("null")}}.

+ +
+

Atenção: Mudar o [[Prototype]] de um objeto é, pela natureza de como os modernos mecanismos JavaScript otimizam os acessos de propriedade, uma operação muito lenta, em todos navegadores e mecanismos JavaScript. O efeito sobre o desempenho de alterar a herança são sutis e vastas e não se limitam simplesmente ao tempo gasto em obj.__proto__ = ... statement, mas pode estender a qualquer código que tem acesso a qualquer objeto cujo [[Prototype]] foi alterado. Se você se preocupa com desempenho, você deveria evitar configurar o [[Prototype]] de um objeto. Em vez disso, crie um novo objeto com o [[Prototype]] desejado usando {{jsxref("Object.create()")}}.

+
+ +

Sintaxe

+ +
Object.setPrototypeOf(obj, prototype);
+ +

Parâmetros

+ +
+
obj
+
O objeto que deve ter seu 'prototype' definido.
+
prototype
+
O novo 'prototype' do objeto  (um objeto ou {{jsxref("null")}}).
+
+ +

Valor de retorno

+ +

O objeto especificado.

+ +

Descrição

+ +

Gera uma exceção {{jsxref("TypeError")}} se o objeto cujo [[Prototype]] é para ser modificado não for extensível de acordo com {{jsxref("Object.isExtensible()")}}. Não faz nada se o parâmetro 'prototype' não for um objeto ou {{jsxref("null")}} (ex., número, texto, boleano, ou {{jsxref("undefined")}}). Caso contrário, este método muda o [[Prototype]] do obj para um novo valor.

+ +

Object.setPrototypeOf() é uma especificação ECMAScript 2015. É geralmente considerada a maneira correta de definir o 'prototype' de um objeto, em relação à propriedade mais controversa {{jsxref("Object.prototype.__proto__")}}.

+ +

Exemplos

+ +
var dict = Object.setPrototypeOf({}, null);
+
+ +

Polyfill

+ +

Usando a propriedade mais antiga {{jsxref("Object.prototype.__proto__")}}, nós podemos facilmente definir Object.setPrototypeOf se já não estiver disponível:

+ +
// Funciona somente no Chrome e FireFox, não funciona no IE:
+Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
+  obj.__proto__ = proto;
+  return obj;
+}
+
+ +

Adicionando 'Prototype' em cadeia

+ +

Uma combinação de Object.getPrototypeOf() e {{jsxref("Object.proto", "Object.prototype.__proto__")}} permite anexar toda uma cadeia de 'prototype' a um novo objeto 'prototype':

+ +
/**
+*** Object.appendChain(@object, @prototype)
+*
+* Acrescente o primeiro 'prototype' não nativo de uma cadeia a um novo 'prototype'.
+* Retorna @object (se for um valor primitivo, será transformado em um objeto).
+*
+*** 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")
+*
+* Adicione o primeiro 'prototype' não nativo de uma cadeia ao objeto nativo Function.prototype, então anexar a nova função
+* Function(["@arg"(s)], "@function_body") àquela cadeia.
+* Retorna a função.
+*
+**/
+
+Object.appendChain = function(oChain, oProto) {
+  if (arguments.length < 2) {
+    throw new TypeError('Object.appendChain - Argumentos insuficientes');
+  }
+  if (typeof oProto !== 'object' && typeof oProto !== 'string') {
+    throw new TypeError('segundo argumento de Object.appendChain deve ser um objeto ou uma 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;
+}
+
+ +

Exemplos

+ +

Primeiro exemplo: Adicionar uma cadeia a um 'prototype'.

+ +
function Mammal() {
+  this.isMammal = 'yes';
+}
+
+function MammalSpecies(sMammalSpecies) {
+  this.species = sMammalSpecies;
+}
+
+MammalSpecies.prototype = new Mammal();
+MammalSpecies.prototype.constructor = MammalSpecies;
+
+var oCat = new MammalSpecies('Felis');
+
+console.log(oCat.isMammal); // 'yes'
+
+function Animal() {
+  this.breathing = 'yes';
+}
+
+Object.appendChain(oCat, new Animal());
+
+console.log(oCat.breathing); // 'yes'
+
+ +

Segundo exemplo: Transformar um valor primitivo em uma instância de seu construtor e anexar sua cadeia a um 'prototype'.

+ +
function MySymbol() {
+  this.isSymbol = 'yes';
+}
+
+var nPrime = 17;
+
+console.log(typeof nPrime); // 'number'
+
+var oPrime = Object.appendChain(nPrime, new MySymbol());
+
+console.log(oPrime); // '17'
+console.log(oPrime.isSymbol); // 'yes'
+console.log(typeof oPrime); // 'object'
+
+ +

Terceiro exemplo: Anexar uma cadeia ao objeto Function.prototype e anexar uma nova função a essa cadeia.

+ +
function Person(sName) {
+  this.identity = sName;
+}
+
+var george = Object.appendChain(new Person('George'),
+                                'console.log("Hello guys!!");');
+
+console.log(george.identity); // 'George'
+george(); // 'Hello guys!!'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES2015', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade do navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ConfiguraçãoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome("34")}}{{CompatGeckoDesktop("31")}}{{CompatIE("11")}}{{CompatVersionUnknown}}{{CompatSafari("9")}}
+ +

 

+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ConfiguraçãoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("31")}}{{CompatUnknown}}{{CompatNo}}{{CompatSafari("9")}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/tolocalestring/index.html b/files/pt-br/web/javascript/reference/global_objects/object/tolocalestring/index.html new file mode 100644 index 0000000000..4d857a21e4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/tolocalestring/index.html @@ -0,0 +1,115 @@ +--- +title: Object.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +tags: + - JavaScript + - Method + - Object + - Objeto + - Prototipo + - Prototype + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +--- +

{{JSRef}}

+ +

O método toLocaleString() retorna uma cadeia de caracteres (string) representando o objeto. Este método é feito para ser sobrescrito por objetos derivados para propósitos de localização específica.

+ +
{{EmbedInteractiveExample("pages/js/object-prototype-tolocalestring.html")}}
+ + + +

Sintaxe

+ +
obj.toLocaleString()
+ +

Valor de retorno

+ +

Uma string representando o objeto.

+ +

Descrição

+ +

toLocaleString do {{jsxref("Object")}} returna o resultado da chamada {{jsxref("Object.toString", "toString()")}}.

+ +

Esta função é provida para dar aos objetos um método toLocaleString genérico, mesmo que nem todos os usem. Veja a lista abaixo.

+ +

Objetos sobrescrevendo toLocaleString

+ + + +

Exemplos

+ +

Sobrescrita do Array toLocaleString()

+ +

Em objetos {{jsxref("Array")}}, {{jsxref("Array.toLocaleString", "toLocaleString()")}} pode ser usado para imprimir valores do arranjo como uma string, opcionalmente com identificadores de localização específicos (como símbolos monetários) atrelados a eles:

+ +

Por exemplo:

+ +
const testArray = [4, 7, 10];
+
+let euroPrices = testArray.toLocaleString('fr', { style: 'currency', currency: 'EUR'});
+// "4,00 €,7,00 €,10,00 €"
+ +

Sobrescrita do Date toLocaleString()

+ +

Em objetos {{jsxref("Date")}}, {{jsxref("Date.toLocaleString", "toLocaleString()")}} é usado para imprimir datas mais apropriadas para localizações específicas:

+ +

Por exemplo:

+ +
const testDate = new Date(Date.now());
+// "Date Fri May 29 2020 18:04:24 GMT+0100 (British Summer Time)"
+
+let deDate = testDate.toLocaleString('de');
+// "29.5.2020, 18:04:24"
+
+var frDate = testDate.toLocaleString('fr');
+//"29/05/2020 à 18:04:24"
+ +

Sobrescrita de Number toLocaleString()

+ +

Em objetos {{jsxref("Number")}}, {{jsxref("Number.toLocaleString", "toLocaleString()")}} é usado para imprimir números para localizações específicas, e.g. com os corretos separadores:

+ +

Por exemplo:

+ +
const testNumber = 2901234564;
+// "2901234564"
+
+let deNumber = testNumber.toLocaleString('de');
+// "2.901.234.564"
+
+let frNumber = testNumber.toLocaleString('fr');
+// "2 901 234 564"
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Object.toLocaleString")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/object/tosource/index.html new file mode 100644 index 0000000000..e0a8edcaa5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/tosource/index.html @@ -0,0 +1,136 @@ +--- +title: Object.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Object/toSource +tags: + - JavaScript + - Method + - Non-standard + - Não padronizado + - Object + - Objeto + - Obsoleto + - Prototipo + - Prototype + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource +--- +
{{JSRef}} {{obsolete_header}}
+ +

O método toSource() retorna uma cadeia de caracteres (string) representando o código fonte do objeto.

+ +

Sintaxe

+ +
Object.toSource();
+obj.toSource();
+
+ +

Valor de retorno

+ +

Uma string representando o código fonte do objeto.

+ +

Descrição

+ +

O método toSource() retorna os seguintes valores:

+ + + +

Você pode chamar toSource() enquanto debuga para examinar os conteúdos de um objeto.

+ +

Sobrescrevendo o método toSource()

+ +

É seguro para objetos sobrescreverem o método toSource(). Por exemplo:

+ +
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")
+
+ +

Métodos toSource() embutidos

+ +

Cada tipo principal do JavaScript tem seu próprio método toSource(). Esses objetos são:

+ + + +

Limitações em objetos cíclicos

+ +

Em case de objetos que contém referências para eles mesmos, e.g. uma lista ligada cíclica ou uma árvore que pode ser percorrida pelos dois sentidos, toSource() não irá recriar a auto-referência, como no Firefox 24. Por exemplo:

+ +
var obj1 = {};
+var obj2 = { a: obj1 };
+obj1.b = obj2;
+
+console.log('Cyclical: ' + (obj1.b.a == obj1));
+
+var objSource = obj1.toSource(); // retorna "({b:{a:{}}})"
+
+obj1 = eval(objSource);
+
+console.log('Cyclical: ' + (obj1.b.a == obj1));
+
+ +

Se uma estrutura cíclica é empregada e toSource() é necessário, o objeto deve prover uma sobrescrita para toSource(), ou usando a referência para um construtor ou provendo uma função anônima.

+ +

Exemplos

+ +

Usando toSource()

+ +

O seguinte código define o tipo do objeto Dog e cria theDog, um objeto do tipo Dog:

+ +
function Dog(name, breed, color, sex) {
+  this.name = name;
+  this.breed = breed;
+  this.color = color;
+  this.sex = sex;
+}
+
+theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
+
+ +

Chamando o método toSource() de theDog mostra o código fonte JavaScript que define o objeto:

+ +
theDog.toSource();
+// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
+
+ +

Especificações

+ +

Não faz parte de nenhum padrão.

+ +

Compatibilidade de navegador

+ +
+ + +

{{Compat("javascript.builtins.Object.toSource")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/object/tostring/index.html new file mode 100644 index 0000000000..1e1453778e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/tostring/index.html @@ -0,0 +1,163 @@ +--- +title: Object.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toString +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Sumário

+ +

O método toString() retorna uma string representando o objeto.

+ +

Sintaxe

+ +
obj.toString()
+ +

Descrição

+ +

Todo objeto possui um método toString() que é chamado automaticamente quando o objeto precisa ser representado como um valor em texto ou quando o objeto é referenciado de uma maneira que requeira uma string. Por padrão, o método toString() é herdado de todo objeto descendente de  Object. Se e o método não é sobrescrito em um objeto personalizado, toString() retorna "[object type]", onde type é o tipo do objeto. O código a seguir ilustra isso:

+ +
var o = new Object();
+o.toString();           // retorna [object Object]
+
+ +
+

Note: Starting in JavaScript 1.8.5 toString() called on {{jsxref("Global_Objects/null", "null")}} returns [object Null], and {{jsxref("Global_Objects/undefined", "undefined")}} returns [object Undefined], as defined in the 5th Edition of ECMAScript and a subsequent Errata. See {{anch("Example:_Using_toString_to_detect_object_type", "Using toString to detect object type")}}.

+
+ +

Examples

+ +

Exemplo: Sobrepondo o método inicial toString 

+ +

Você pode criar uma função para ser chamada no lugar do método toString(). O método toString() não requer parâmetros e deve retornar uma string. O método toString() criado por você pode ter o valor que quiser, mas será mais útil se usar informações do objeto.

+ +

O código abaixo define o objeto Dog e cria theDog, um objeto do tipo Dog:

+ +
function Dog(name, breed, color, sex) {
+  this.name = name;
+  this.breed = breed;
+  this.color = color;
+  this.sex = sex;
+}
+
+theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
+
+ +

Se você chamar o método toString() neste objeto, ele retornará o valor original herdado de {{jsxref("Global_Objects/Object", "Object")}}:

+ +
theDog.toString(); // returns [object Object]
+
+ +

O código abaixo cria e faz com que dogToString() sobrescreva o toString() original. Esta função gera uma string contendo name, breed, color, and sex do objeto, na forma de "propriedade = valor;".

+ +
Dog.prototype.toString = function dogToString() {
+  var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed;
+  return ret;
+}
+
+ +

Usando este código, toda vez que theDog for usado em um texto (string), JavaScript automaticamente chamará a função dogToString(), a qual retornará:

+ +
Dog Gabby is a female chocolate Lab
+
+ +

Exemplo: Usando toString() para detectar a classe do objeto

+ +

toString() pode ser usado com qualquer objeto e permite que você pegue sua classe. Para usar Object.prototype.toString() com qualquer objeto, deverá chamar {{jsxref("Function.prototype.call()")}} ou {{jsxref("Function.prototype.apply()")}} nele, passando o objeto que quer inspecionar como o primeiro parâmetro, chamado thisArg.

+ +
var toString = Object.prototype.toString;
+
+toString.call(new Date);    // [object Date]
+toString.call(new String);  // [object String]
+toString.call(Math);        // [object Math]
+
+// Since JavaScript 1.8.5
+toString.call(undefined);   // [object Undefined]
+toString.call(null);        // [object Null]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition.StandardInitial definition. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-15.2.4.2', 'Object.prototype.toString')}}{{Spec2('ES5.1')}}Call on {{jsxref("Global_Objects/null", "null")}} returns [object Null], and {{jsxref("Global_Objects/undefined", "undefined")}} returns [object Undefined]
{{SpecName('ES6', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}{{Spec2('ES6')}} 
+ +

Compatibilidade

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/valueof/index.html b/files/pt-br/web/javascript/reference/global_objects/object/valueof/index.html new file mode 100644 index 0000000000..a78642c377 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/valueof/index.html @@ -0,0 +1,110 @@ +--- +title: Object.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf +--- +
{{JSRef}}
+ +

O método valueOf() retorna o valor primitivo do objeto especificado.

+ +
{{EmbedInteractiveExample("pages/js/object-prototype-valueof.html")}}
+ + + +

Sintaxe

+ +
object.valueOf()
+ +

Valor retornado

+ +

O valor primitivo do objeto especificado.

+ +

Descrição

+ +

JavaScript chama o método valueOf para converter um objeto em um valor primitivo. Você raramente precisará chamar o método valueOf por ele mesmo; O JavaScript chamará ele automaticamente quando encontrar um objeto onde um valor primitivo for esperado.

+ +

Por padrão, o método valueOf é herdado por cada objeto descendente de {{jsxref("Object")}}. Todo núcleo embutido do objeto sobrescreve esse método para retornar um valor apropriado. Se um objeto não tem um valor primitivo, valueOf retorna o próprio objeto.

+ +

Você pode usar valueOf dentro do seu próprio código para converter um objeto embutido, em um valor primitivo. Quando você criar um objeto customizado, você pode sobrescrever Object.prototype.valueOf() para chamar um método customizado ao invés do método padrão  {{jsxref("Object")}}.

+ +

Sobrescrevendo valueOf para objetos customizados

+ +

Você pode criar uma função para ser chamada no lougar do método padrão valueOf. Sua função não pode ter nenhum argumento.

+ +

Suponha que você tem um tipo de objeto MyNumberType e você quer criar um método valueOf para ele. O código a seguir atribui uma função definida por usuário para o método valueOf desse objeto:

+ +
MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };
+ +

Com o código anterior no lugar, a qualquer hora um objeto do tipo MyNumberType é usado em um contexto onde deve ser representado como um valor primitivo, o JavaScript chama automaticamente a função definida no código anterior.

+ +

Um método valueOf de um objeto é geralmente chamado pelo JavaScript, mas você pode chamá-lo se quiser da seguinte maneira:

+ +
myNumberType.valueOf()
+ +
+

Nota: Objetos em contexto de string convertidos através do método {{jsxref("Object.toString", "toString()")}}, o que é diferente de objetos {{jsxref("String")}} convertendo para string primiriva utlizando valueOf. Todos os objetos têm uma conversão string, somente se "[object type]". Mas muitos objetos não convertem para number, boolean, or function.

+
+ +

Exemplos

+ +

Usando valueOf

+ +
function MyNumberType(n) {
+    this.number = n;
+}
+
+MyNumberType.prototype.valueOf = function() {
+    return this.number;
+};
+
+var myObj = new MyNumberType(4);
+myObj + 3; // 7
+
+ +

Espeficações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusCometário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade do browser

+ +
+ + +

{{Compat("javascript.builtins.Object.valueOf")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/object/values/index.html b/files/pt-br/web/javascript/reference/global_objects/object/values/index.html new file mode 100644 index 0000000000..a95e01a704 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/object/values/index.html @@ -0,0 +1,139 @@ +--- +title: Object.values() +slug: Web/JavaScript/Reference/Global_Objects/Object/values +translation_of: Web/JavaScript/Reference/Global_Objects/Object/values +--- +
{{JSRef}} {{SeeCompatTable}}
+ +

O método Object.values() retorna um array com os valores das propriedades de um dado objeto, na mesma ordem provida pelo {{jsxref("Statements/for...in", "for...in")}} laço (sendo a diferença que o laço for-in também enumera as propriedades na cadeia prototype).

+ +

Sintaxe

+ +
Object.values(obj)
+ +

Parâmetros

+ +
+
obj
+
O objeto cujos valores das propriedades enumeradas serão retornados.
+
+ +

Valor de retorno

+ +

Um array contendo os valores das propriedades enumeradas do dado objeto.

+ +

Descrição

+ +

Object.values() retorna um array cujos elementos são os valores das propriedades enumeradas encontradas no objeto. A ordem das propriedades é a mesma que a dada pelo laço sobre os valores da propriedade do objeto manualmente.

+ +

Exemplos

+ +
var obj = { foo: "bar", baz: 42 };
+console.log(Object.values(obj)); // ['bar', 42]
+
+// array como objeto
+var obj = { 0: 'a', 1: 'b', 2: 'c' };
+console.log(Object.values(obj)); // ['a', 'b', 'c']
+
+// array como objeto com ordenação de chave aleatória
+var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
+console.log(Object.values(an_obj)); // ['b', 'c', 'a']
+
+// getFoo é a propriedade a qual não é enumerável
+var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
+my_obj.foo = "bar";
+console.log(Object.values(my_obj)); // ['bar']
+
+// argumento não-objeto será coagido num objeto
+console.log(Object.values("foo")); // ['f', 'o', 'o']
+
+ +

Biblioteca de Suporte

+ +

Para adicionar compatibilidade ao suporte de  Object.values em ambientes antigos que nativamente não o suportam, você pode encontrar uma biblioteca de suporte nos repositórios tc39/proposal-object-values-entries ou no es-shims/Object.values.

+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçõesSituaçãoComentário
{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}{{Spec2('ESDraft')}}Initial definition.
+ +

Compatibilidade com Navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
AspectoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatChrome(51.0)}} [1]{{CompatGeckoDesktop(47)}}{{CompatNo}}{{CompatNo}}{{CompatNo}} [2]
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
AspectoAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome para Android
Suporte básico{{CompatNo}}{{CompatChrome(51.0)}} [1]{{CompatGeckoMobile(47)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatChrome(51.0)}} [1]
+
+ +

[1] Por trás de uma flag.

+ +

[2] Ver bug 150131.

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/parsefloat/index.html b/files/pt-br/web/javascript/reference/global_objects/parsefloat/index.html new file mode 100644 index 0000000000..a2d1ea3c8b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/parsefloat/index.html @@ -0,0 +1,171 @@ +--- +title: parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/parseFloat +translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

A função parseFloat() analisa um argumento string e retorna um número de ponto flutuante.

+ +

Síntaxe

+ +
parseFloat(string)
+ +

Parâmetros

+ +
+
string
+
Uma string que representa o valor a ser analisado.
+
+ +

Descrição

+ +

parseFloat é uma função top-level e não está associada a nenhum objeto.

+ +

parseFloat analisa um argumento string, e retorna um numero de ponto flutuante. Se ele encontrar um carácter diferente de um sinal (+ ou -), numeral (0-9), um ponto decimal, ou um expoente, ele retorna o valor até esse ponto e ignora esse caractere e todos os caracteres seguintes. Espaços a direita e a esquerda são permitidos.

+ +

Se o primeiro carácter não puder ser convertido para um número, parseFloat retorna NaN.

+ +

Para propósitos aritméticos, o valor NaN não é um número de qualquer raiz. Você pode chamar a função {{jsxref("isNaN")}} para determinar se o resultado do parseFloat é NaN. Se NaN for passado em operações aritméticas, a operação também retornará NaN.

+ +

parseFloat também pode analisar e retornar o valor Infinity. Você pode usar a função {{jsxref("isFinite")}} para determinar se a função é um número finito (not Infinity, -Infinity, ou NaN).

+ +

Exemplos

+ +

parseFloat retornando um número

+ +

O exemplo a seguir sempre retorna 3.14

+ +
parseFloat("3.14");
+parseFloat("314e-2");
+parseFloat("0.0314E+2");
+parseFloat("3.14more non-digit characters");
+
+ +

parseFloat retornando NaN

+ +

O exemplo a seguir retorna NaN

+ +
parseFloat("FF2");
+
+ +

A função stricter parse

+ +

As vezes é útil ter uma maneira mais rigorosa para analisar valores float, expressões regulares podem ajudar:

+ +
var filterFloat = function (value) {
+    if(/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
+      .test(value))
+      return Number(value);
+  return NaN;
+}
+
+console.log(filterFloat('421'));               // 421
+console.log(filterFloat('-421'));              // -421
+console.log(filterFloat('+421'));              // 421
+console.log(filterFloat('Infinity'));          // Infinity
+console.log(filterFloat('1.61803398875'));     // 1.61803398875
+console.log(filterFloat('421e+0'));            // NaN
+console.log(filterFloat('421hop'));            // NaN
+console.log(filterFloat('hop1.61803398875'));  // NaN
+
+
+ +

Observe que este código é somente um exemplo; ele não aceita números válidos, tais como 1. ou 0,5.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{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')}} 
+ +

Compátibilidade nos navegadores

+ +

{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/parseint/index.html b/files/pt-br/web/javascript/reference/global_objects/parseint/index.html new file mode 100644 index 0000000000..ba7d40aa86 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/parseint/index.html @@ -0,0 +1,224 @@ +--- +title: parseInt() +slug: Web/JavaScript/Reference/Global_Objects/parseInt +translation_of: Web/JavaScript/Reference/Global_Objects/parseInt +--- +
{{jsSidebar("Objects")}}
+ +

Sumário

+ +

A função parseInt() analisa um argumento string e retorna um inteiro na base especificada.

+ +

Sintaxe

+ +
parseInt(string, base);
+ +

Parâmetros

+ +
+
string
+
+

O valor a analisar. Se o argumento string não for uma string, então o valor é convertido para uma string (utilizando a operação abstrata ToString). Os espaços em branco na string são ignorados.

+
+
+ +
+
base
+
Um inteiro entre 2 e 36 que representa a base da string (sistemas numéricos matemáticosmencionada no parâmetro anterior. Especifique 10 para o sistema numérico decimal comumente usado por humanos. Sempre especifique este parâmetro para eliminar confusão do leitor e para garantir o comportamento esperado. Implementações diferentes produzem resultados diferentes quando base não é especificado, normalmente assumindo o valor como 10.
+
+ +

Valor de retorno

+ +

Um número inteiro analisado a partir da string fornecida. Se o primeiro caracter não puder ser convertido para um número, {{jsxref("NaN")}} é retornado.

+ +

Descrição

+ +

A função parseInt converte seu primeiro argumento para uma string, analisa, e retorna um inteiro ou NaN. Se não NaN, o valor retornado será a representação decimal inteira do primeiro argumento obtido como um número na base especificada. Por exemplo, umabase 10 indica para converter de um número decimal, 8 octal, 16 hexadecimal, e assim por diante. Para bases acima de 10, as letras do alfabeto indicam numerais maiores que 9. Por exemplo, para números hexadecimais (base 16), A até F são usados.

+ +

Se parseInt encontrar um caracter que não seja um numeral na base especificada, ele o ignora e a todos os caracteres subsequentes e retorna o valor inteiro analisado até aquele ponto. parseInt trunca números para valores inteiros. Espaços no início e fim são permitidos.

+ +

Se base é undefined ou 0 (ou ausente), JavaScript assume o seguinte:

+ + + +

Se o primeiro caracter não puder ser convertido para um número, parseInt retorna NaN.

+ +

Para propósitos aritméticos, o valor NaN não é um número em qualquer base. Você pode chamar a função {{jsxref("Global_Objects/isNaN", "isNaN")}} para determinar se o resultado de parseInt é NaN. Se NaN for passado em operações aritméticas, o resultado da operação também será NaN.

+ +

Para converter um número para seu literal string em uma base específica use intValue.toString(base).

+ +

Exemplos

+ +

Exemplo: Usando parseInt

+ +

Os seguintes exemplos sempre retornam 15:

+ +
parseInt(" 0xF", 16);
+parseInt(" F", 16);
+parseInt("17", 8);
+parseInt(021, 8);
+parseInt("015", 10);
+parseInt(15.99, 10);
+parseInt("FXX123", 16);
+parseInt("1111", 2);
+parseInt("15*3", 10);
+parseInt("15e2", 10);
+parseInt("15px", 10);
+parseInt("12", 13);
+
+ +

Os seguintes exemplos sempre retornam NaN:

+ +
parseInt("Hello", 8); // Não é realmente um número
+parseInt("546", 2);   // Dígitos não são válidos para representações binárias
+
+ +

Os seguintes exemplos sempre retornam -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);
+
+ +

O seguinte exemplo retorna 224:

+ +
parseInt("0e0", 16);
+
+ +

Interpretação octal sem informar a base

+ +

Embora desencorajado pelo ECMAScript 3 e proibido pelo ECMAScript 5, muitas implementações interpretam uma string numérica começando com um 0 como octal. O exemplo abaixo pode ter um resultado octal, ou ele pode ter um resultado decimal.  Sempre especifique uma base para evitar este comportamento não confiável.

+ +
parseInt("0e0"); // 0
+parseInt("08"); // 0, '8' não é um dígito octal.
+
+ +

O ECMAScript 5 remove a interpretação octal

+ +

A especificação ECMAScript 5 da funcão parseInt não permite mais que as implementações tratem Strings começando com o caracter 0 como um valor octal. O ECMAScript 5 declara:

+ +

A função parseInt produz um valor inteiro ditado pela interpretação do conteúdo de uma argumento string de acordo com uma base específicada. Espaços em branco no início da string são ignorados. Se a base for undefined ou 0, ela é assumida como 10 exceto quando o número começa com os pares de caracter 0x or 0X, e neste caso a base 16 é assumida. Se a base é 16, o número pode também opcionalmente começar com os pares de caracter 0x or 0X.

+ +

Isto difere do ECMAScript 3, que desencoraja mas permite a interpretação octal.

+ +

Muitas implementações não adotaram este comportamento a partir de 2013, e porque browser antigos devem ser suportados, sempre especifique uma base.

+ +

Uma função de análise mais rigorosa

+ +

É útil em algum momento ter uma maneira mais rigorosa para analisar valores inteiros. Expressões regulares podem ajudar:

+ +
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
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.PadrãoDefinição inicial
{{SpecName('ES5.1', '#sec-15.1.2.2', 'parseInt')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-parseint-string-radix', 'parseInt')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de navegador

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/all/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/all/index.html new file mode 100644 index 0000000000..eec13d056a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/all/index.html @@ -0,0 +1,245 @@ +--- +title: Promise.all() +slug: Web/JavaScript/Reference/Global_Objects/Promise/all +tags: + - ECMAScript 2015 + - ECMAScript6 + - JavaScript + - Method + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all +--- +
{{JSRef}}
+ +

O método Promise.all(iterable) retorna uma única {{jsxref("Promise")}} que resolve quando todas as promises no argumento iterável forem resolvidas ou quando o iterável passado como argumento não contém promises. É rejeitado com o motivo da primeira promise que foi rejeitada.

+ +

{{EmbedInteractiveExample("pages/js/promise-all.html")}}

+ + + +

Sintaxe

+ +
Promise.all(iterable);
+ +

Parâmetros

+ +
+
iterable
+
Um objeto iterável, como um {{jsxref("Array")}} ou {{jsxref("String")}}.
+
+ +

Retorno

+ + + +

Descrição

+ +

Esse método pode ser usado para agregar resultados de várias promises.

+ +

Resolução

+ +

A promise retornada é resolvida com um array contendo todos os valores dos iteráveis passados como argumento (como valores que não são promises).

+ + + +

Rejeição

+ +

Se qualquer uma das promises passadas for rejeitada, Promise.all assíncronamente é rejeitada com o valor da promise rejeitada, independentemente se outras promises foram resolvidas.

+ +

Exemplos

+ +

Utilizando Promise.all 

+ +

Promise.all espera que todas as promises sejam resolvidas (ou a primeira rejeição).

+ +
var p1 = Promise.resolve(3);
+var p2 = 1337;
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(() => {
+    resolve("foo");
+  }, 100);
+});
+
+Promise.all([p1, p2, p3]).then(valores=> {
+  console.log(valores); // [3, 1337, "foo"]
+});
+
+ +

Se o iterável conter valores que não são promises, eles serão ignorados, mas ainda serão contados no array da promise retornada (se a promise for resolvida):

+ +
// Essa será considerada como se o iterável passado fosse vazio, logo ela será resolvido
+var p = Promise.all([1,2,3]);
+// Essa será considerada como se o iterável passado contém apenas a promise resolvida com o valor "444", logo ela é resolvida
+var p2 = Promise.all([1,2,3, Promise.resolve(444)]);
+// Esse será considerada como se o iterável passado contém apenas o valor de rejeição "555" da promise, logo ela é rejeitada
+var p3 = Promise.all([1,2,3, Promise.reject(555)]);
+
+// Utilizando setTimeout para executar código depois que a pilha estiver vazia
+setTimeout(function() {
+    console.log(p);
+    console.log(p2);
+    console.log(p3);
+});
+
+// logs
+// Promise { <estado>: "resolvida", <valor>: Array[3] }
+// Promise { <estado>: "resolvida", <valor>: Array[4] }
+// Promise { <estado>: "rejeitada", <razão>: 555 }
+
+ +

Assincronia ou sincronia da Promise.all

+ +

O exemplo a seguir demonstra a assincronia (ou sincronia, se o iterável passado for fazio) de Promise.all:

+ +
// Passamos o argumento como um array de promises que já estão resolvidas para disparar Promise.all a mais rápido possível
+var arrayPromisesResolvidas = [Promise.resolve(33), Promise.resolve(44)];
+
+var p = Promise.all(arrayPromisesResolvidas);
+// Logando imediatamente o valor de p
+console.log(p);
+
+// Utilizando setTimeout para executar código depois que a pilha estiver vazia
+setTimeout(function() {
+    console.log('a pilha está vazia agora');
+    console.log(p);
+});
+
+// logs, em ordem:
+// Promise { <estado>: "pendente" }
+// a pilha está vazia agora
+// Promise { <estado>: "resolvida", <valor>: Array[2] }
+
+ +

A mesma coisa acontece se Promise.all for rejeitada:

+ +
var arrayPromisesMisturadas = [Promise.resolve(33), Promise.reject(44)];
+var p = Promise.all(arrayPromisesMisturadas);
+console.log(p);
+setTimeout(function() {
+    console.log('a pilha está vazia agora');
+    console.log(p);
+});
+
+// logs
+// Promise { <estado>: "pendente" }
+// a pilha está vazia agora
+// Promise { <estado>: "rejeitada", <razão>: 44 }
+
+ +

Mas, Promise.all resolve sincromamente se e somente se o iterável passado for vazio:

+ +
var p = Promise.all([]); // será resolvida imediatamente
+var p2 = Promise.all([1337, "oi"]); // um valor que não é uma promise será ignorado, mas a avaliação será feita assíncronamente
+console.log(p);
+console.log(p2)
+setTimeout(function() {
+    console.log('a pilha está vazia agora');
+    console.log(p2);
+});
+
+// logs
+// Promise { <estado>: "resolvida", <valor>: Array[0] }
+// Promise { <estado>: "pendente" }
+// a pilha está vazia agora
+// Promise { <estado>: "resolvida", <valor>: Array[2] }
+
+ +

Comportamente de falhar rapidamente de Promise.all

+ +

Promise.all é rejeitada se qualquer um dos elementos for rejeitado. Por exemplo, se você passar quartro promises que resolvem após um intervalo de tempo e uma promise que rejeita imediatamente, então Promise.all será rejeitada imediatamente.

+ +
var p1 = new Promise((resolve, reject) => {
+  setTimeout(() => resolve('um'), 1000);
+});
+var p2 = new Promise((resolve, reject) => {
+  setTimeout(() => resolve('dois'), 2000);
+});
+var p3 = new Promise((resolve, reject) => {
+  setTimeout(() => resolve('três'), 3000);
+});
+var p4 = new Promise((resolve, reject) => {
+  setTimeout(() => resolve('quatro'), 4000);
+});
+var p5 = new Promise((resolve, reject) => {
+  reject(new Error('rejeitada'));
+});
+
+
+// Usando .catch:
+Promise.all([p1, p2, p3, p4, p5])
+.then(valores => {
+  console.log(valores);
+})
+.catch(erro => {
+  console.log(erro.message)
+});
+
+// No console:
+// "rejeitada"
+
+ +

É possível mudar esse comportamente lidando com possíveis rejeições:

+ +
var p1 = new Promise((resolve, reject) => {
+  setTimeout(() => resolve('p1_resolução_atrasada'), 1000);
+});
+
+var p2 = new Promise((resolve, reject) => {
+  reject(new Error('p2_rejeição_imediata'));
+});
+
+Promise.all([
+  p1.catch(erro => { return erro }),
+  p2.catch(erro => { return erro }),
+]).then(valores => {
+  console.log(valores[0]) // "p1_resolução_atrasada"
+  console.log(valores[1]) // "Erro: p2_rejeição_imediata"
+})
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-promise.all', 'Promise.all')}}{{Spec2('ES2015')}} +

Definição inicial em um padrão ECMA.

+
{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade com browsers

+ + + +

{{Compat("javascript.builtins.Promise.all")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/allsettled/index.html new file mode 100644 index 0000000000..770a4fd3a7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/allsettled/index.html @@ -0,0 +1,64 @@ +--- +title: Promise.allSettled() +slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +--- +

{{JSRef}}

+ +

O método Promise.allSettled() retorna uma promessa que é resolvida após todas as promessas dadas serem resolvidas ou rejeitadas, com um array de objetos que descrevem o resultado de cada promessa.

+ +

É tipicamente usado quando você tem múltiplas tarefas assíncronas que não são dependentes das conclusões umas das outras, ou quando você sempre quer ter o resultado de cada promessa.

+ +

Para comparação, a promessa retornada por {{jsxref("Promise.all()")}} pode ser mais apropriada para tarefas que dependem umas das outras, ou se você precisa que todas as tarefas sejam rejeitadas quando apenas uma é. 

+ +
{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}}
+ +

Sintaxe

+ +
promise.allSettled(iterable);
+ +

Parâmetros

+ +
+
iterable
+
Um objeto iterável, como um {{jsxref("Array")}}, onde cada membro é uma Promise.
+
+ +

Valor retornado

+ +

Uma {{jsxref("Promise")}} pendente que vai ser preenchida assíncronamente quando todas as promessas na coleção fornecida forem completas, sendo aceitas ou rejeitadas. Quando isso acontecer, é retornado um array contendo um resultado para cada promessa passada como entrada.

+ +

Para cada objeto no array retornado, existe uma string status. Se o status for fulfilled, então o campo value estará presente. Se o status for rejected, então o campo reason estará presente. O valor (value) ou o motivo da falha (reason) refletem o valor com que cada promessa foi completada (ou rejeitada).

+ +

Especificaçṍes

+ + + + + + + + + + + + + + +
SpecificationStatusComment
Promise.allSettled() (TC39 Stage 4 Draft){{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Promise.allSettled")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/catch/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/catch/index.html new file mode 100644 index 0000000000..a39d4576d7 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/catch/index.html @@ -0,0 +1,138 @@ +--- +title: Promise.prototype.catch() +slug: Web/JavaScript/Reference/Global_Objects/Promise/catch +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch +--- +
{{JSRef}}
+ +
O método catch() retorna uma Promise e lida apenas com casos rejeitados. Ele possui o mesmo comportamento de quando chamamos {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}} (de fato, chamando obj.catch(onRejected) internamente é chamado obj.then(undefined, onRejected)).
+ +

Sintaxe

+ +
p.catch(onRejected);
+
+p.catch(function(motivo) {
+   // rejeição
+});
+
+ +

Parâmetros

+ +
+
onRejected
+
Uma {{jsxref("Function")}} chamada quando a Promise é rejeitada. Esta função possui um argumento:
+ reason da rejeição.
+       O motivo da rejeição.
+
+ A Promise retornada pelo catch() é rejeitada apenas se onRejected cospe um erro ou se o o retorno da Promise foi rejeitada por si mesmo, ou seja, foi resolvida.
+
+ +

Valor de retorno

+ +

Internamente chamamos Promise.prototype.then sobre o objeto que é chamando passando parâmetros como undefined e onRejected no manipulador de eventos. Então retornamos o valor da chamada que é {{jsxref("Promise")}}.

+ +
+

O exemplo abaixo está cuspindo uma string. Isso é considerado uma má prática. Sempre cuspir uma instance de erro (Error). Em todo caso, a parte que faz a captura deve fazer verificaçoes sobre os argumentos para saber se é uma string ou um erro e você poderá perder informações valiosas como stack traces.

+
+ +

Demonstração de uma camada interna:

+ +
// Sobrescrevendo o techo original de  Promise.prototype.then/catch adicionando alguns logs
+(function(Promise){
+    var originalThen = Promise.prototype.then;
+    var originalCatch = Promise.prototype.catch;
+
+    Promise.prototype.then = function(){
+        console.log('> > > > > > chamando .then em %o com argumentos: %o', this, arguments);
+        return originalThen.apply(this, arguments);
+    };
+    Promise.prototype.catch = function(){
+        console.log('> > > > > > chamando .catch em %o com argumentos: %o', this, arguments);
+        return originalCatch.apply(this, arguments);
+    };
+
+})(this.Promise);
+
+
+// chamando um catch em uma Promise já resolvida.
+Promise.resolve().catch(function XXX(){});
+
+// logs:
+// > > > > > > chamando .catch na Promise{} com os argumentos: Arguments{1} [0: function XXX()]
+// > > > > > > chamando .then na Promise{} com os argumentos: Arguments{2} [0: undefined, 1: function XXX()]
+ +

Description

+ +

O método catch pode ser útil para manipulação de erros na composição da sua promise.

+ +

Exemplos

+ +

Usando o método catch

+ +
var p1 = new Promise(function(resolve, reject) {
+  resolve('Sucesso');
+});
+
+p1.then(function(value) {
+  console.log(value); // "Sucesso!"
+  throw 'Ah, não!';
+}).catch(function(e) {
+  console.log(e); // "Ah, não!"
+}).then(function(){
+  console.log('Após um catch, a sequencia é restaurada');
+}, function () {
+  console.log('Não engatilhado devido ao catch');
+});
+
+// O seguinte se comporta da mesma maneira que o anterior
+p1.then(function(value) {
+  console.log(value); // "Sucesso!"
+  return Promise.reject('Ah, não!');
+}).catch(function(e) {
+  console.log(e); // "Ah, não!"
+}).then(function(){
+  console.log('Após um catch, a sequencia é restaurada');
+}, function () {
+  console.log('Não engatilhado devido ao catch');
+});
+
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{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')}}
+ +

Compatibilidade dos browsers

+ + + + + +

{{Compat("javascript.builtins.Promise.catch")}}

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/finally/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/finally/index.html new file mode 100644 index 0000000000..59dff0a6cf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/finally/index.html @@ -0,0 +1,100 @@ +--- +title: Promise.prototype.finally() +slug: Web/JavaScript/Reference/Global_Objects/Promise/finally +tags: + - JavaScript + - Promises + - Referencia + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally +--- +
{{JSRef}}
+ +

O método finally() retorna uma {{jsxref("Promise")}}. Quando a promise for estabelecida, tenha ela sido realizada ou rejeitada, executa-se a função callback especificada. Isso permite a execução de um código que acontecerá independentemente da Promise ter sido realizada (com sucesso) ou rejeitada (com falha).

+ +

Assim, você pode evitar a duplicação do código em ambos os handlers {{jsxref("Promise.then", "then()")}} e {{jsxref("Promise.catch", "catch()")}} da Promise.

+ +

Sintaxe

+ +
p.finally(quandoEstabelecida);
+
+p.finally(function() {
+   // concluída (realizada ou rejeitada)
+});
+
+ +

Parâmetros

+ +
+
quandoEstabelecida
+
Uma {{jsxref("Function")}} chamada quando a Promise é concluída.
+
+ +

Valor de retorno

+ +

Retorna uma {{jsxref("Promise")}} onde o manipulador finally é definido como a função especificada, quandoEstabelecida.

+ +

Descrição

+ +

O método finally() pode ser útil quando você deseja realizar algum tipo de processamento ou limpeza quando a promise for estabelecida, independentemente de seu resultado (sucesso ou falha).

+ +

O método finally() é bastante similar a chamar .then(quandoEstabelecida, quandoEstabelecida). Porém, existem algumas diferenças:

+ + + +
+

Nota: Um throw (ou retorno de uma promise rejeitada) no callback de finally rejeitará a nova promise com a razão de rejeição especificada na chamada de throw().

+
+ +

Exemplos

+ +
let carregando = true;
+
+fetch(minhaRequisicao).then(function(resposta) {
+    var tipoConteudo = response.headers.get("content-type");
+    if(tipoConteudo && tipoConteudo.includes("application/json")) {
+      return resposta.json();
+    }
+    throw new TypeError("Opa, isso não é JSON!");
+  })
+  .then(function(json) { /* processamento do seu JSON */ })
+  .catch(function(erro) { console.log(erro); })
+  .finally(function() { carregando = false; });
+
+
+ +

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
TC39 proposalStage 4 
+ +

Compatibilidade dos navegadores

+ + + +

{{Compat("javascript.builtins.Promise.finally")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/index.html new file mode 100644 index 0000000000..d3d0e76322 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/index.html @@ -0,0 +1,174 @@ +--- +title: Promise +slug: Web/JavaScript/Reference/Global_Objects/Promise +tags: + - ECMAScript6 + - JavaScript + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +
{{JSRef("Global_Objects", "Promise")}}
+ +

Promise é um objeto usado para processamento assíncrono. Um Promise (de "promessa") representa um valor que pode estar disponível agora, no futuro ou nunca.

+ +
+

Nota: Esse artigo descreve o construtor Promise,os métodos e propriedades de tais objetos. Para aprender sobre como promises funcionam e como utilizá-los, é aconselhavel a leitura de utilizando promises. O construtor é utilizado para embrulhar funções sem suporte ao conceito "promise".

+
+ +

Descrição

+ +

Uma Promise representa um proxy para um valor que não é necessariamente conhecido quando a promessa é criada. Isso permite a associação de métodos de tratamento para eventos da ação assíncrona num caso eventual de sucesso ou de falha. Isto permite que métodos assíncronos retornem valores como métodos síncronos: ao invés do valor final, o método assíncrono retorna uma promessa ao valor em algum momento no futuro.

+ +

Um Promise está em um destes estados: 

+ + + +

Uma promessa pendente pode se tornar realizada com um valor ou rejeitada por um motivo (erro). Quando um desses estados ocorre, o método then do Promise é chamado, e ele chama o método de tratamento associado ao estado (rejected ou resolved).  Se a promessa foi realizada ou rejeitada quando o método de tratamento correspondente for associado, o método será chamado, deste forma não há uma condição de competição entre uma operação assíncrona e seus manipuladores que estão sendo associados.

+ +

Como os métodos Promise.prototype.then e Promise.prototype.catch  retornam promises, eles podem ser encadeados — uma operação chamada composição.

+ +

+ +

Propriedades

+ +
+
Promise.length
+
Propriedade length cujo valor é sempre 1 (número de argumentos do método construtor).
+
{{jsxref("Promise.prototype")}}
+
Representa o protótipo para o método construtor da Promise.
+
+ +

Métodos

+ +
+
{{jsxref("Promise.all", "Promise.all(lista)")}}
+
Retorna uma promise que é resolvida quando todas as promises no argumento lista forem resolvidas ou rejeitada assim que uma das promises da lista for rejeitada. Se a promise retornada for resolvida, ela é resolvida com um array dos valores das promises resolvidas da lista. Se a promise for rejeitada, ela é rejeitada com o motivo da primeira promise que foi rejeitada na lista. Este método pode ser útil para agregar resultados de múltiplas promises.
+
{{jsxref("Promise.race", "Promise.race(lista)")}}
+
Retorna uma promise que resolve ou rejeita assim que uma das promises do argumento lista resolve ou rejeita, com um valor ou o motivo daquela promise.
+
+ +
+
{{jsxref("Promise.reject", "Promise.reject(motivo)")}}
+
Retorna um objeto Promise que foi rejeitado por um dado motivo.
+
+ +
+
{{jsxref("Promise.resolve", "Promise.resolve(valor)")}}
+
Retorna um objeto Promise que foi resolvido com um dado valor. Se o valor é thenable (possui um método then), a promise retornada "seguirá" este método, adotando esse estado eventual; caso contrário a promise retornada será realizada com o valor. Geralmente, se você quer saber se um valor é uma promise ou não, utilize {{jsxref("Promise.resolve", "Promise.resolve(valor)")}} e trabalhe com a valor de retorno que é sempre uma promise.
+
+ +

Protótipo Promise

+ +

Propriedades

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Propriedades')}}

+ +

Métodos

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Métodos')}}

+ +

Exemplos

+ +

Criando uma Promise

+ + + +

Este pequeno exemplo mostra o mecanismo de uma Promise. O método testPromise() é chamado cada vez que {{HTMLElement("button")}} é clicado. Isso cria uma promise que resolverá, usando {{domxref("window.setTimeout()")}}, o contador de promise promiseCount (iniciando em 1) a cada 1 a 3s randomicamente. O construtor Promise() é usado para criar a promise.

+ +

A realização da promise é simplesmente registrada, por meio de configuração na função callback de realização  usando {{jsxref("Promise.prototype.then()","p1.then()")}}. Alguns logs mostram como a parte síncrona do método é desacoplada da conclusão assíncrona da promise.

+ +
var promiseCount = 0;
+function testPromise() {
+  var thisPromiseCount = ++promiseCount;
+
+  var log = document.getElementById('log');
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+      ') Started (<small>Sync code started</small>)<br/>');
+
+  // Criamos uma nova promise: prometemos a contagem dessa promise (após aguardar 3s)
+  var p1 = new Promise(
+    // a função resolve() é chamada com a capacidade para resolver ou
+    // rejeitar a promise
+    function(resolve, reject) {
+      log.insertAdjacentHTML('beforeend', thisPromiseCount +
+          ') Promise started (<small>Async code started</small>)<br/>');
+      // Isto é apenas um exemplo para criar assincronismo
+      window.setTimeout(
+        function() {
+          // Cumprimos a promessa !
+          resolve(thisPromiseCount)
+        }, Math.random() * 2000 + 1000);
+    });
+
+  // definimos o que fazer quando a promise for realizada
+  p1.then(
+    // apenas logamos a mensagem e o valor
+    function(val) {
+      log.insertAdjacentHTML('beforeend', val +
+          ') Promise fulfilled (<small>Async code terminated</small>)<br/>');
+    });
+
+  log.insertAdjacentHTML('beforeend', thisPromiseCount +
+      ') Promise made (<small>Sync code terminated</small>)<br/>');
+}
+
+ + + +

Este exemplo é executado pelo click do botão. Você precisa de uma versão de navegedor com suporte a Promise. Clicando algumas vezes no botão num curto intervalo de tempo, você verá as diferentes promises sendo realizadas uma após a outra.

+ +

{{EmbedLiveSample("Criando_uma_Promise", "500", "200")}}

+ +

Carregando uma imagem com XHR

+ +

Outro simples exemplo usando Promise e XMLHTTPRequest para carregar imagens está disponível no repositório GitHub MDN promise-test. Você também pode vê-lo em ação. Cada passo é comentado e lhe permite acompanhar de perto a arquitetura de Promise e XHR.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
domenic/promises-unwrappingDraftStandardization work is taking place here.
{{SpecName('ES2015', '#sec-promise-objects', 'Promise')}}{{Spec2('ES2015')}}Initial definition in an ECMA standard.
+ +

Compatibilidade de Navegador

+ +

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

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/prototype/index.html new file mode 100644 index 0000000000..a422dd886e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/prototype/index.html @@ -0,0 +1,113 @@ +--- +title: Promise.prototype +slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +
{{JSRef("Global_Objects", "Promise")}}
+ +

Sumário

+ +

A propriedade Promise.prototype representa o protótipo para o construtor {{jsxref("Promise")}}.

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

Descrição

+ +

{{jsxref("Promise")}} instância herdada de {{jsxref("Promise.prototype")}}. Você pode usar o objeto construtor para adicionar propriedades ou métodos  para todas as instâncias de Promise.

+ +

Propriedades

+ +
+
Promise.prototype.constructor
+
Retorna a função que cria uma instância. Isso é a função padrão {{jsxref("Promise")}}.
+
+ +

Métodos

+ +
+
{{jsxref("Promise.catch", "Promise.prototype.catch(onRejected)")}}
+
Adiciona um callback que trata rejeição para a promise e, retorna uma nova promise resolvendo o valor retornado do callback, se ele for chamado, ou para seu valor original de conclusão se a promise for realizada.
+
{{jsxref("Promise.then", "Promise.prototype.then(onFulfilled, onRejected)")}}
+
Adiciona os métodos de tratamento da realização e rejeição da promise e, retorna uma nova promise resolvendo para o valor do método chamado.
+
+ +

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-promise.prototype', 'Promise.prototype')}}{{Spec2('ES6')}}Initial definition.
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support32{{CompatGeckoDesktop(24.0)}} as Future
+ {{CompatGeckoDesktop(25.0)}} as Promise behind a flag[1]
+ {{CompatGeckoDesktop(29.0)}} by default
{{CompatNo}}197.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatGeckoMobile(24.0)}} as Future
+ {{CompatGeckoMobile(25.0)}} as Promise behind a flag[1]
+ {{CompatGeckoMobile(29.0)}} by default
{{CompatNo}}{{CompatNo}}iOS 832
+
+ +

[1] Gecko 24 has an experimental implementation of Promise, under the initial name of Future. It got renamed to its final name in Gecko 25, but disabled by default behind the flag dom.promise.enabled. Bug 918806 enabled Promises by default in Gecko 29.

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/race/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/race/index.html new file mode 100644 index 0000000000..13a3c659b5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/race/index.html @@ -0,0 +1,149 @@ +--- +title: Promise.race() +slug: Web/JavaScript/Reference/Global_Objects/Promise/race +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race +--- +
{{JSRef}}
+ +

O método Promise.race(iterable) retorna uma promise que resolve ou rejeita assim que uma das promises no iterável resolver ou rejeitar, com o valor ou razão daquela promise.

+ +

Sintaxe

+ +
Promise.race(iterable);
+ +

Parâmetros

+ +
+
iterable
+
Um objeto iterável, como um {{jsxref("Array")}}. Veja iterável.
+
+ +

Descrição

+ +

A função race retorna uma Promise que é estabelecida da mesma forma que a primeira promise passada estabelecer. Ela resolve ou rejeita, o que acontecer primeiro.

+ +

Exemplos

+ +

Usando Promise.race – exemplos com setTimeout

+ +
var p1 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 500, "one");
+});
+var p2 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 100, "two");
+});
+
+Promise.race([p1, p2]).then(function(value) {
+  console.log(value); // "two"
+  // Ambos resolvem, mas p2 é mais rápido
+});
+
+var p3 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 100, "three");
+});
+var p4 = new Promise(function(resolve, reject) {
+    setTimeout(reject, 500, "four");
+});
+
+Promise.race([p3, p4]).then(function(value) {
+  console.log(value); // "three"
+  // p3 é mais rápido, então ela resolve
+}, function(reason) {
+  // Não é chamado
+});
+
+var p5 = new Promise(function(resolve, reject) {
+    setTimeout(resolve, 500, "five");
+});
+var p6 = new Promise(function(resolve, reject) {
+    setTimeout(reject, 100, "six");
+});
+
+Promise.race([p5, p6]).then(function(value) {
+  // Não é chamado
+}, function(reason) {
+  console.log(reason); // "six"
+  // p6 é mais rápido, então ela rejeita
+});
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-promise.race', 'Promise.race')}}{{Spec2('ES6')}}Definição inicial em um padrão ECMA.
+ +

Compatibilidade com browsers

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico32{{CompatGeckoDesktop(29.0)}}{{CompatNo}}197.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Suporte básico{{CompatNo}}{{CompatGeckoMobile(29.0)}}{{CompatNo}}{{CompatNo}}832
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/reject/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/reject/index.html new file mode 100644 index 0000000000..6097afe484 --- /dev/null +++ b/files/pt-br/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}}
+ +

O método Promise.reject(motivo) retorna um objeto Promise que é rejeitada com um dado motivo.

+ +

Sintaxe

+ +
Promise.reject(motivo);
+ +

Parâmetros

+ +
+
motivo
+
Motivo pelo qual este Promise foi rejeitado.
+
+ +

Descrição

+ +

O método estático Promise.reject retorna uma Promise que é rejeitada. Para fins de debug e captura de erros seletiva, é útil que o motivo seja uma instanceof {{jsxref("Error")}}.

+ +

Exemplos

+ +

Usando o método estático Promise.reject()

+ +
Promise.reject("Testando reject estático").then(function(motivo) {
+  // não executado
+}, function(motivo) {
+  console.log(motivo); // "Testando reject estático"
+});
+
+Promise.reject(new Error("falha")).then(function(erro) {
+  // não executado
+}, function(erro) {
+  console.log(erro); // Stacktrace
+});
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES6', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ES6')}}Definição inicial em um padrão ECMA.
{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com browsers

+ + + +

{{Compat("javascript.builtins.Promise.reject")}}

+ +

 

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/resolve/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/resolve/index.html new file mode 100644 index 0000000000..f4c1220158 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/resolve/index.html @@ -0,0 +1,144 @@ +--- +title: Promise.resolve() +slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve +tags: + - ECMAScript6 + - ES6 + - JavaScript + - Método(2) + - Promise +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve +--- +
{{JSRef}}
+ +

O método Promise.resolve(value) retorna um objeto {{jsxref("Promise")}} que é resolvido com o valor passado. Se o valor for thenable (ex: tiver um método {{jsxref("Promise.then", "\"then\"")}}), a promise retornada irá "seguir" esse thenable, adotando seu estado final; se o valor for uma promise, o objeto será o resultado da chamada Promise.resolve; do contrário a promise será realizada com o valor.

+ +

Sintaxe

+ +
Promise.resolve(value);
+Promise.resolve(promise);
+Promise.resolve(thenable);
+
+ +

Parametros

+ +
+
value
+
Argumento a ser resolvido pela Promise. Pode também ser uma Promise ou um thenable a resolver.
+
+ +

Valor retornado

+ +

A {{jsxref("Promise")}} que será resolvida com o valor passado ou com a {{jsxref("Promise")}} passada como valor, caso o valor seja um objeto {{jsxref("Promise")}} 

+ +

Descrição

+ +

A função estática Promise.resolve retorna uma Promise de que será resolvida.

+ +

Examples

+ +

Usando o método estático Promise.resolve

+ +
Promise.resolve("Success").then(function(value) {
+  console.log(value); // "Success"
+}, function(value) {
+  // not called
+});
+
+ +

Resolvendo um array

+ +
var p = Promise.resolve([1,2,3]);
+p.then(function(v) {
+  console.log(v[0]); // 1
+});
+
+ +

Resolvendo outra Promise

+ +
var original = Promise.resolve(true);
+var cast = Promise.resolve(original);
+cast.then(function(v) {
+  console.log(v); // true
+});
+
+
+ +

A ordem invertida dos logs acontece devido ao fato de que os handlers são chamados assincronamente. Veja como o then funciona aqui.

+ +

Resolvendo thenables e disparando Errors

+ +
// Resolving a thenable object
+var p1 = Promise.resolve({
+  then: function(onFulfill, onReject) { onFulfill("fulfilled!"); }
+});
+console.log(p1 instanceof Promise) // true, object casted to a Promise
+
+p1.then(function(v) {
+    console.log(v); // "fulfilled!"
+  }, function(e) {
+    // not called
+});
+
+// Thenable throws before callback
+// Promise rejects
+var thenable = { then: function(resolve) {
+  throw new TypeError("Throwing");
+  resolve("Resolving");
+}};
+
+var p2 = Promise.resolve(thenable);
+p2.then(function(v) {
+  // not called
+}, function(e) {
+  console.log(e); // TypeError: Throwing
+});
+
+// Thenable throws after callback
+// 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) {
+  // not called
+});
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ES2015')}}Definição inicial no padrão ECMA.
{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade dos navegadores

+ + + +

{{Compat("javascript.builtins.Promise.resolve")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/promise/then/index.html b/files/pt-br/web/javascript/reference/global_objects/promise/then/index.html new file mode 100644 index 0000000000..5e3c015947 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/promise/then/index.html @@ -0,0 +1,181 @@ +--- +title: Promise.prototype.then() +slug: Web/JavaScript/Reference/Global_Objects/Promise/then +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then +--- +
{{JSRef("Global_Objects", "Promise")}}
+ +

Resumo

+ +

O método then() retorna uma Promise. Possui dois argumentos, ambos são "call back functions", sendo uma para o sucesso e outra para o fracasso da promessa.

+ +

Sintaxe

+ +
p.then(quandoRealizada, quandoRejeitada);
+
+p.then(function(valor) {
+   // sucesso
+  }, function(motivo) {
+  // rejeitada
+});
+
+ +

Parametros

+ +
+
quandoRealizada
+
Uma {{jsxref("Function")}} chamada quando a Promise é cumprida (Sucesso). Essa função tem um argumento, o valor do cumprimento.
+
+ +
+
quandoRejeitada
+
Uma {{jsxref("Function")}} chamada quando a Promise é rejeitada. Essa função tem um argumento, o motivo da recusa.
+
+ +

Descrição

+ +

Assim como o método .then()  e {{jsxref("Promise.prototype.catch()")}} retornam uma Promise, eles podem ser encadeados - uma operação chamada composition.

+ +

Exemplos

+ +

Usando o método then

+ +
var p1 = new Promise(function(resolve, reject) {
+  resolve("Success!");
+  // or
+  // reject ("Error!");
+});
+
+p1.then(function(value) {
+  console.log(value); // Success!
+}, function(reason) {
+  console.log(reason); // Error!
+});
+
+ +

Encadeando

+ +

Já que o método then() devolve uma Promise, você pode facilmente encadeá-los. 

+ +
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
+});
+
+
+ +

No exemplo acima, o último .then() recebeu a soma value + 1, que resultou em 2, porém se o retorno de value + 1 fosse uma Promise que também retornasse value + 1, o resultado seria o mesmo. Note, no exemplo abaixo, que leva 1000ms para a impressão de 2 ocorrer.

+ +
var p2 = new Promise(function(resolve, reject) {
+   resolve(1);
+});
+
+p2.then(function(value) {
+  console.log(value); // 1
+  return new Promise(function (resolve, reject) {
+    setTimeout(function () {
+      resolve(value + 1);
+    }, 1000);
+  });
+}).then(function(value) {
+  console.log(value); // 2
+});
+ +

 

+ +

 

+ +

 

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentários
domenic/promises-unwrappingDraftStandardization work is taking place here.
{{SpecName('ES6', '#sec-promise.prototype.then', 'Promise.prototype.then')}}{{Spec2('ES6')}}Initial definition in an ECMA standard.
+ +

Compatibilidade dos Browsers

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support32{{CompatGeckoDesktop(24.0)}} as Future
+ {{CompatGeckoDesktop(25.0)}} as Promise behind a flag[1]
+ {{CompatGeckoDesktop(29.0)}} by default
{{CompatNo}}197.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support{{CompatNo}}{{CompatGeckoMobile(24.0)}} as Future
+ {{CompatGeckoMobile(25.0)}} as Promise behind a flag[1]
+ {{CompatGeckoMobile(29.0)}} by default
{{CompatNo}}{{CompatNo}}iOS 832
+
+ +

[1] Gecko 24 possui uma implementação experimental de Promise, under the initial name of Future. It got renamed to its final name in Gecko 25, but disabled by default behind the flag dom.promise.enabled. Bug 918806 enabled Promises by default in Gecko 29.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/proxy/index.html b/files/pt-br/web/javascript/reference/global_objects/proxy/index.html new file mode 100644 index 0000000000..2975088492 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/proxy/index.html @@ -0,0 +1,396 @@ +--- +title: Proxy +slug: Web/JavaScript/Reference/Global_Objects/Proxy +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy +--- +
+
{{JSRef}}
+
+ +

O objeto Proxy é usado para definir comportamentos customizados para operações fundamentais (por exemplo, pesquisa de propriedade, atribuição, enumeração, invocação de função, etc.).

+ +

Terminologia

+ +
+
handler
+
Objeto marcador que contém traps.
+
traps
+
Métodos que fornecem acesso à propriedade. Isto é análogo ao conceito de traps (armadilhas) em sistemas operacionais
+
target
+
Objeto que o proxy virtualiza. É frequentemente utilizado como back-end de armazenamento para o proxy. Os invariantes (semânticas que permanecem inalterados) em relação à não-extensibilidade do objeto ou propriedades não-configuráveis são verificados em relação ao target.
+
+ +

Sintaxe

+ +
var p = new Proxy(target, handler);
+
+ +

Parâmetros

+ +
+
target
+
Um objeto target (pode ser qualquer tipo de objeto, incluindo um array, uma função ou até mesmo outro Proxy) a ser envolvido com o Proxy.
+
handler
+
Um objeto cujas propriedades são funções que definem o comportamento do proxy quando uma operação é realizada sobre ele.
+
+ +

Métodos

+ +
+
{{jsxref("Proxy.revocable()")}}
+
Cria um objeto Proxy revogável.
+
+ +

Métodos para manipular objetos

+ +

O objeto manipulado é um objeto reservado que contém traps para Proxy.

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler', 'Methods') }}
+ +

Exemplos

+ +

Exemplo básico

+ +

Neste exemplo simples, o número 37 é retornado como o valor padrão quando o nome da propriedade não está no objeto. Usa-se o manipulador get.

+ +
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
+
+ +

Encaminhamento de Proxy

+ +

Neste exemplo, estamos usando um objeto JavaScript nativo ao qual nosso proxy irá encaminhar todas as operações que são aplicadas para ele.

+ +
var target = {};
+var p = new Proxy(target, {});
+
+p.a = 37; // Operação encaminhada para o alvo
+
+console.log(target.a); // 37. A operação foi devidamente encaminhada
+
+ +

Validação

+ +

Com um Proxy, você pode validar facilmente o valor passado para um objeto. Este exemplo usa o manipulador set.

+ +
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');
+      }
+    }
+
+    //O comportamento padrão para armazenar o valor
+    obj[prop] = value;
+
+    // Indique o sucesso
+    return true;
+  }
+};
+
+let person = new Proxy({}, validator);
+
+person.age = 100;
+console.log(person.age); // 100
+person.age = 'young'; // Lança uma exceção
+person.age = 300; // Lança uma exceção
+ +

Construtor de extensão

+ +

Um proxy de função poderia facilmente estender um construtor com um novo construtor. Este exemplo usa os manipuladores construct e apply.

+ +
function extend(sup, base) {
+  var descriptor = Object.getOwnPropertyDescriptor(
+    base.prototype, 'constructor'
+  );
+  base.prototype = Object.create(sup.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 manipulação de nós

+ +

Às vezes, você deseja alternar o atributo ou o nome da classe de dois elementos diferentes. Veja como usar o manipulador set.

+ +
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');
+      }
+    }
+
+    // O comportamento para armazenar o valor padrão
+    obj[prop] = newval;
+
+    // Indica o sucesso
+    return true;
+  }
+});
+
+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'
+ +

Correção de valor e uma propriedade extra

+ +

O objeto de proxy produtos avalia o valor passado e converte-o em uma matriz, se necessário. O objeto também suporta uma propriedade adicional chamada latestBrowser tanto em getters como em setters.

+ +
let products = new Proxy({
+  browsers: ['Internet Explorer', 'Netscape']
+},
+{
+  get: function(obj, prop) {
+    // An extra property
+    if (prop === 'latestBrowser') {
+      return obj.browsers[obj.browsers.length - 1];
+    }
+
+    //  O comportamento para armazenar o valor padrão
+    return obj[prop];
+  },
+  set: function(obj, prop, value) {
+    // An extra property
+    if (prop === 'latestBrowser') {
+      obj.browsers.push(value);
+      return true;
+    }
+
+    // Converta o valor se não for uma matriz
+    if (typeof value === 'string') {
+      value = [value];
+    }
+
+    //  O comportamento para armazenar o valor padrão
+    obj[prop] = value;
+
+    // Indicate success
+    return true;
+  }
+});
+
+console.log(products.browsers); // ['Internet Explorer', 'Netscape']
+products.browsers = 'Firefox'; // pass a string (by mistake)
+console.log(products.browsers); // ['Firefox'] <- no problem, the value is an array
+
+products.latestBrowser = 'Chrome';
+console.log(products.browsers); // ['Firefox', 'Chrome']
+console.log(products.latestBrowser); // 'Chrome'
+ +

Encontrando um item de objeto em uma matriz por propriedade

+ +

Esta proxy estende uma matriz com alguns recursos de utilidade. Como você vê, você pode "definir" propriedades flexíveis sem usar Object.defineProperties. Este exemplo pode ser adaptado para encontrar uma linha de tabela por sua célula. Nesse caso, o alvo será table.rows

+ +
let products = new Proxy([
+  { name: 'Firefox', type: 'browser' },
+  { name: 'SeaMonkey', type: 'browser' },
+  { name: 'Thunderbird', type: 'mailer' }
+],
+{
+  get: function(obj, prop) {
+    // O comportamento para retornar o valor; Prop geralmente é um inteiro
+    if (prop in obj) {
+      return obj[prop];
+    }
+
+    // Obter o número de produtos; Com 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];
+      }
+    }
+
+    // Obtém um produto por nome
+    if (result) {
+      return result;
+    }
+
+    // Obtém produtos por tipo
+    if (prop in types) {
+      return types[prop];
+    }
+
+    // Obtém tipos de produto
+    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
+ +

Um exemplo completo de lista de traps

+ +

Agora, para criar uma lista completa de amostra de traps, para fins didáticos, tentaremos propor um objeto não nativo que seja particularmente adequado para este tipo de operação: o objeto global docCookies criado por a "little framework" publicada na páginadocument.cookie.

+ +
/*
+  var docCookies = ... get the "docCookies" object here:
+  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();
+  },
+  ownKeys: function (oTarget, sKey) {
+    return oTarget.keys();
+  },
+  has: function (oTarget, sKey) {
+    return sKey in oTarget || oTarget.hasItem(sKey);
+  },
+  defineProperty: function (oTarget, sKey, oDesc) {
+    if (oDesc && 'value' in oDesc) { oTarget.setItem(sKey, oDesc.value); }
+    return oTarget;
+  },
+  getOwnPropertyDescriptor: function (oTarget, sKey) {
+    var vValue = oTarget.getItem(sKey);
+    return vValue ? {
+      value: vValue,
+      writable: true,
+      enumerable: true,
+      configurable: false
+    } : undefined;
+  },
+});
+
+/* Teste Cookies */
+
+console.log(docCookies.my_cookie1 = 'First value');
+console.log(docCookies.getItem('my_cookie1'));
+
+docCookies.setItem('my_cookie1', 'Changed value');
+console.log(docCookies.my_cookie1);
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES2015', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ES2015')}}Definição Inicial.
{{SpecName('ESDraft', '#sec-proxy-objects', 'Proxy')}}{{Spec2('ESDraft')}}?
+ + + + + +

{{Compat("javascript.builtins.Proxy", 2)}}

+ +

Notas Especificas Gecko

+ + + +

Veja também

+ + + +

Nota de licença

+ +

Alguns conteúdos (texto, exemplos) nesta página foram copiados ou adaptados do ECMAScript wiki que contém à licença de conteúdo CC 2.0 BY-NC-SA .

diff --git a/files/pt-br/web/javascript/reference/global_objects/referenceerror/index.html b/files/pt-br/web/javascript/reference/global_objects/referenceerror/index.html new file mode 100644 index 0000000000..5a00314c2c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/referenceerror/index.html @@ -0,0 +1,171 @@ +--- +title: ReferenceError +slug: Web/JavaScript/Reference/Global_Objects/ReferenceError +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +
{{JSRef}}
+ +

O objeto ReferenceError representa um erro quando uma variável não existente é referenciada.

+ +

Sintaxe

+ +
new ReferenceError([message[, fileName[, lineNumber]]])
+ +

Parâmetros

+ +
+
message
+
Opcional. Descrição legível do erro.
+
fileName {{non-standard_inline}}
+
Opcional. O nome do arquivo contendo o código que causou a excessão.
+
lineNumber {{non-standard_inline}}
+
Opcional. O número da linha do código que causou a excessão.
+
+ +

Descrição

+ +

ReferenceError acontece quando é feita uma tentativa de referenciar uma variável que não foi declarada.

+ +

Propriedades

+ +
+
{{jsxref("ReferenceError.prototype")}}
+
Permite a inclusão de propriedades em um objeto ReferenceError.
+
+ +

Métodos

+ +

O ReferenceError não contém métodos próprios, porém, ele herda alguns métodos através da cadeia de protótipos.

+ +

Instâncias do ReferenceError 

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Methods')}}
+ +

Exemplos

+ +

Capturando um ReferenceError

+ +
try {
+  var a = variavelNaoDefinida;
+} catch (e) {
+  console.log(e instanceof ReferenceError); // true
+  console.log(e.message);                   // "variavelNaoDefinida não está definida"
+  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"
+}
+
+ +

Criando um ReferenceError

+ +
try {
+  throw new ReferenceError('Olá', 'arquivoQualquer.js', 10);
+} catch (e) {
+  console.log(e instanceof ReferenceError); // true
+  console.log(e.message);                   // "Olá"
+  console.log(e.name);                      // "ReferenceError"
+  console.log(e.fileName);                  // "arquivoQualquer.js"
+  console.log(e.lineNumber);                // 10
+  console.log(e.columnNumber);              // 0
+  console.log(e.stack);                     // "@Scratchpad/2:2:9\n"
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial.
{{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')}} 
+ +

Compatibilidade com browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/reflect/apply/index.html b/files/pt-br/web/javascript/reference/global_objects/reflect/apply/index.html new file mode 100644 index 0000000000..08621fe798 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/reflect/apply/index.html @@ -0,0 +1,143 @@ +--- +title: Reflect.apply() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/apply +tags: + - ECMAScript6 + - JavaScript + - Reflect + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/apply +--- +
{{JSRef}}
+ +

O método estático Reflect.apply() chama uma função alvo com os argumentos especificados.

+ +

Sintaxe

+ +
Reflect.apply(target, thisArgument, argumentsList)
+
+ +

Parâmetros

+ +
+
target
+
Função que será chamada.
+
thisArgument
+
O valor de "this" que será usado pela function do target.
+
argumentsList
+
Um objeto do tipo array que especifica os argumentos com que o target deve ser chamado.
+
+ +

Valor de retorno

+ +

O resultado da função alvo chamada com o this  e argumentos especificados.

+ +

Exceções

+ +

Um {{jsxref("TypeError")}}, se a função especificada no target não for invocável.

+ +

Descrição

+ +

No ES5, tipicamente é usado o método {{jsxref("Function.prototype.apply()")}} para chamar uma função com o valor de this e argumentos fornecidos como um array (ou um array-like object).

+ +
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
+ +

Com o Reflect.apply isso se torna menos verboso e mais fácil de entender.

+ +

Exemplos

+ +

Usando 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, /ab/, ["confabulation"]).index;
+// 4
+
+Reflect.apply("".charAt, "ponies", [3]);
+// "i"
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-reflect.apply', 'Reflect.apply')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-reflect.apply', 'Reflect.apply')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade do navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support49{{CompatGeckoDesktop(42)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile(42)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/reflect/construct/index.html b/files/pt-br/web/javascript/reference/global_objects/reflect/construct/index.html new file mode 100644 index 0000000000..dece94c79a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/reflect/construct/index.html @@ -0,0 +1,151 @@ +--- +title: Reflect.construct() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/construct +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/construct +--- +
{{JSRef}}
+ +

The static Reflect.construct() method acts like the new operator, but as a function. It is equivalent to calling new target(...args). It gives also the added option to specify a different prototype.

+ +
{{EmbedInteractiveExample("pages/js/reflect-construct.html")}}
+ + + +

Sintaxe

+ +
Reflect.construct(target, argumentsList[, newTarget])
+
+ +

Parametros

+ +
+
target
+
A função alvo à ser chamada.
+
argumentsList
+
Um objeto tipo array que especifica com quais argumentos target deveria ser chamada.
+
newTarget {{optional_inline}}
+
O construtor de quem o protótipo deveria ser usado. Veja também o new.target operador. Se newTarget não estiver presente, será target.
+
+ +

Return value

+ +

A new instance of target (or newTarget, if present), initialized by target as a constructor with the given arguments.

+ +

Exceptions

+ +

A {{jsxref("TypeError")}}, if target or newTarget are not constructors.

+ +

Description

+ +

Reflect.construct allows you to invoke a constructor with a variable number of arguments (which would also be possible by using the spread operator combined with the new operator).

+ +
var obj = new Foo(...args);
+var obj = Reflect.construct(Foo, args);
+
+ +

 

+ +

Reflect.construct() vs Object.create()

+ +

Prior to the introduction of Reflect, objects could be constructed using an arbitrary combination of constructor and prototype by using Object.create().

+ +
function OneClass() {
+    this.name = 'one';
+}
+
+function OtherClass() {
+    this.name = 'other';
+}
+
+// Calling this:
+var obj1 = Reflect.construct(OneClass, args, OtherClass);
+
+// ...has the same result as this:
+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
+
+ +

However, while the end result is the same, there is one important difference in the process. When using Object.create() and Function.prototype.apply(), the new.target operator will point to undefined within the function used as the constructor, since the new keyword is not being used to create the object.

+ +

When invoking Reflect.construct(), on the other hand, the new.target operator will point to the newTarget parameter if supplied, or target if not.

+ +
function OneClass() {
+    console.log('OneClass');
+    console.log(new.target);
+}
+function OtherClass() {
+    console.log('OtherClass');
+    console.log(new.target);
+}
+
+var obj1 = Reflect.construct(OneClass, args);
+// Output:
+//     OneClass
+//     function OneClass { ... }
+
+var obj2 = Reflect.construct(OneClass, args, OtherClass);
+// Output:
+//     OneClass
+//     function OtherClass { ... }
+
+var obj3 = Object.create(OtherClass.prototype);
+OneClass.apply(obj3, args);
+// Output:
+//     OneClass
+//     undefined
+ +

 

+ +

Examples

+ +

Using Reflect.construct()

+ +
var d = Reflect.construct(Date, [1776, 6, 4]);
+d instanceof Date; // true
+d.getFullYear(); // 1776
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-reflect.construct', 'Reflect.construct')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-reflect.construct', 'Reflect.construct')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ + + +

{{Compat("javascript.builtins.Reflect.construct")}}

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/reflect/defineproperty/index.html b/files/pt-br/web/javascript/reference/global_objects/reflect/defineproperty/index.html new file mode 100644 index 0000000000..c4b56f02ca --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/reflect/defineproperty/index.html @@ -0,0 +1,97 @@ +--- +title: Reflect.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +tags: + - ECMAScript 2015 + - JavaScript + - Referencia + - Reflect + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +--- +
{{JSRef}}
+ +

O método estático Reflect.defineProperty() é como o {{jsxref("Object.defineProperty()")}}, mas retorna um {{jsxref("Boolean")}}.

+ +
{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}
+ + + +

Sintaxe

+ +
Reflect.defineProperty(target, propertyKey, attributes)
+
+ +

Parâmetros

+ +
+
target
+
O objeto de destino onde será definida a propriedade.
+
propertyKey
+
O nome da propriedade a ser definida ou modificada.
+
attributes
+
Os atributos para a propriedade que está sendo definida ou modificada.
+
+ +

Valor de retorno

+ +

Um {{jsxref("Boolean")}} indicando se a propriedade foi ou não definida com êxito.

+ +

Erros

+ +

Um {{jsxref("TypeError")}}, se target não for um {{jsxref("Object")}}.

+ +

Descrição

+ +

O método Reflect.defineProperty permite a adição precisa ou a modificação de uma propriedade em um objeto. Para mais detalhes veja o {{jsxref("Object.defineProperty")}}, que é semelhante.

+ +
+

Uma diferença fundamental: Object.defineProperty retorna o objeto ou lança um {{jsxref ("TypeError")}} se a propriedade não tiver sido definida com êxito. Reflect.defineProperty, no entanto, simplesmente retorna um {{jsxref ("Boolean")}} indicando se a propriedade foi ou não definida com êxito.

+
+ +

Exemplos

+ +

Usando Reflect.defineProperty()

+ +
let obj = {}
+Reflect.defineProperty(obj, 'x', {value: 7})  // true
+obj.x                                         // 7
+
+ +

Verificando se a definição da propriedade foi bem-sucedida

+ +

Com o {{jsxref ("Object.defineProperty")}}, que retorna um objeto se for bem-sucedido ou lança um {{jsxref ("TypeError")}}, você usaria um bloco try...catch para detectar qualquer erro que ocorreu ao definir uma propriedade.

+ +

Como Reflect.defineProperty retorna um status de sucesso booleano, você pode usar apenas um bloco if...else aqui:

+ +
if (Reflect.defineProperty(target, property, attributes)) {
+  // success
+} else {
+  // failure
+}
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}
+ +

Compatibilidade do navegador

+ + + +

{{Compat("javascript.builtins.Reflect.defineProperty")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/reflect/index.html b/files/pt-br/web/javascript/reference/global_objects/reflect/index.html new file mode 100644 index 0000000000..e001709367 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/reflect/index.html @@ -0,0 +1,166 @@ +--- +title: Reflect +slug: Web/JavaScript/Reference/Global_Objects/Reflect +tags: + - ECMAScript6 + - JavaScript + - NeedsTranslation + - Overview + - Reflect + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect +--- +
{{JSRef}}
+ +

Reflect é um objeto nativo que provê métodos para operações JavaScript interceptáveis. Os métodos são os mesmos que o dos manipuladores de Proxy. Reflect não é um objeto de função, então não é construtível.

+ +

Descrição

+ +

Ao contrário da maioria dos objetos globais, Reflect não é um construtor. Você não pode usá-lo com o operador new ou invocar o objeto Reflect como uma função. Todas as propriedades e métodos do Reflect são estáticos (igual o objeto {{jsxref("Math")}}).

+ +

O objeto Reflect provê as seguintes funções estáticas as quais tem os mesmos nomes usados pelos métodos manipuladores de Proxy.

+ +

Alguns deste métodos são também os mesmos correspondentes aos métodos em {{jsxref("Object")}}, embora eles tenham diferenças sutis entre eles.

+ +

Métodos

+ +
+
{{jsxref("Reflect.apply()", "Reflect.apply(targetthisArgumentargumentsList)")}}
+
Chama uma função de destino com os argumentos, conforme especificado pelo parâmetro argumentsList. Veja também {{jsxref("Function.prototype.apply()")}}.
+
{{jsxref("Reflect.construct()", "Reflect.construct(targetargumentsList[, newTarget])")}}
+
 O operador new como uma função. Equivalente a chamada new target(...args). Também possui a opção de especificar um prototype diferente
+
{{jsxref("Reflect.defineProperty()", "Reflect.defineProperty(targetpropertyKeyattributes)")}}
+
Similar ao {{jsxref("Object.defineProperty()")}}. Retorna um {{jsxref("Boolean")}} com o valor true se a propriedade foi definida com sucesso.
+
{{jsxref("Reflect.deleteProperty()", "Reflect.deleteProperty(targetpropertyKey)")}}
+
O operador delete como uma função. Equivalente a chamada delete target[name].
+
{{jsxref("Reflect.get()")}}, "Reflect.get(targetpropertyKey[, receiver])"}}
+
Uma função que retorna o valor da propriedade. Funciona como obter uma propriedade de um objeto (target[propertyKey]) como uma função.
+
{{jsxref("Reflect.getOwnPropertyDescriptor()", "Reflect.getOwnPropertyDescriptor(targetpropertyKey)")}}
+
Similar ao {{jsxref("Object.getOwnPropertyDescriptor()")}}. Retorna um descritor de propriedade da propriedade dada se existir no objeto, {{jsxref ("undefined")}} caso contrário.
+
{{jsxref("Reflect.getPrototypeOf()", "Reflect.getPrototypeOf(target)")}}
+
Igual ao {{jsxref("Object.getPrototypeOf()")}}.
+
{{jsxref("Reflect.has()", "Reflect.has(target, propertyKey)")}}
+
O operador in como função. Retorna um {{jsxref("Boolean")}} indicando se existe uma propriedade própria ou herdada.
+
{{jsxref("Reflect.isExtensible()", "Reflect.isExtensible(target)")}}
+
Igual ao {{jsxref("Object.isExtensible()")}}. Returna um {{jsxref("Boolean")}} com o valor true se o destino (parâmetro target) for extensível.
+
{{jsxref("Reflect.ownKeys()", "Reflect.ownKeys(target)")}}
+
Retorna uma matriz das chaves de propriedade do próprio objeto de destino (não herdadas).
+
{{jsxref("Reflect.preventExtensions()", "Reflect.preventExtensions(target)")}}
+
Similar ao {{jsxref("Object.preventExtensions()")}}. Retorna um {{jsxref("Boolean")}} com o valor true se a atualização foi bem sucedida.
+
{{jsxref("Reflect.set()", "Reflect.set(targetpropertyKeyvalue[, receiver])")}}
+
Uma função que atribui valores a propriedades. Retorna um {{jsxref ("Boolean")}} com o valor true se a atualização foi bem sucedida.
+
{{jsxref("Reflect.setPrototypeOf()", "Reflect.setPrototypeOf(targetprototype)")}}
+
Uma função que define o protótipo de um objeto. Retorna um {{jsxref ("Boolean")}} com o valor true se a atualização foi bem sucedida.
+
+

Exemplos

+ +

Verificando se um objeto contém determinadas propriedades

+ +
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
+ +

Retornando as próprias chaves do objeto

+ +
Reflect.ownKeys(duck);
+// [ "name", "color", "greeting" ]
+ +

Adicionando uma nova propriedade ao objeto

+ +
Reflect.set(duck, 'eyes', 'black');
+// returns "true" if successful
+// "duck" now contains the property "eyes: 'black'"
+
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES6', '#sec-reflect-object', 'Reflect')}}{{Spec2('ES6')}}Definição Inicial
{{SpecName('ESDraft', '#sec-reflect-object', 'Reflect')}}{{Spec2('ESDraft')}}Reflect.enumerate foi removido.
+ +

Compatibilidade do navegador

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(49.0)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatChrome(49.0)}}{{CompatChrome(49.0)}}{{CompatGeckoMobile("42")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/reflect/set/index.html b/files/pt-br/web/javascript/reference/global_objects/reflect/set/index.html new file mode 100644 index 0000000000..45022b89d1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/reflect/set/index.html @@ -0,0 +1,146 @@ +--- +title: Reflect.set() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/set +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/set +--- +
{{JSRef}}
+ +

O método estático Reflect.set() define uma propriedade em um objeto.

+ +

Sintaxe

+ +
Reflect.set(alvo, propriedade, valor[, receptor])
+
+ +

Parâmetros

+ +
+
alvo
+
O objeto alvo onde a propriedade será definida.
+
propriedade
+
O nome da propriedade a ser definida.
+
valor
+
o valor a ser definido para a propriedade.
+
receptor
+
+

O valor do this fornecido para a chamada do alvo se um setter é encontrado.

+
+
+ +

Retorno

+ +

Um {{jsxref("Boolean")}} indicando se a definicão da propriedade ocorreu com sucesso ou não.

+ +

Exceções

+ +

Um {{jsxref("TypeError")}}, se o alvo não for um {{jsxref("Object")}}.

+ +

Descrição

+ +

O método Reflect.set permite que você defina uma propriedade em um objeto. Ele define a propriedade e is like the property accessor syntax as a function.

+ +

Examplos

+ +

Usando Reflect.set()

+ +
// Object
+var obj = {};
+Reflect.set(obj, "prop", "value"); // true
+obj.prop; // "value"
+
+// Array
+var arr = ["duck", "duck", "duck"];
+Reflect.set(arr, 2, "goose"); // true
+arr[2]; // "goose"
+
+// É possível truncar o array
+Reflect.set(arr, "length", 1); // true
+arr; // ["duck"];
+
+// Com apenas um argumento, propertKey e valor são undefined
+var obj = {};
+Reflect.set(obj); // true
+Reflect.getOwnPropertyDescriptor(obj, "undefined");
+// { value: undefined, writable: true, enumerable: true, configurable: true }
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-reflect.set', 'Reflect.set')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-reflect.set', 'Reflect.set')}}{{Spec2('ESDraft')}} 
+ +

Compatilibidade com navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support49{{CompatGeckoDesktop(42)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile(42)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/compile/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/compile/index.html new file mode 100644 index 0000000000..de36469d18 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/compile/index.html @@ -0,0 +1,84 @@ +--- +title: RegExp.prototype.compile() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/compile +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/compile +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método compile() está depreciado, é usado para (re-)compilar uma expressão regular durante a execução de um script. É basicamente o mesmo que o construtor RegExp.

+ +

Sintaxe

+ +
regexObj.compile(pattern, flags)
+ +

Parâmetros

+ +
+
pattern
+
  É o texto da expressão regular.
+
flags
+
+

Se especificado, as flags podem ter qualquer combinação dos seguintes valores:

+ +
+
g
+
global.
+
i
+
ignorar caso.
+
m
+
multilinha; trata os caracteres iniciais e finais como (^ e $), trabalhando sobre várias linhas (isto é, corresponde ao início ou ao final de cada linha (delimitado por \n ou \r), não apenas o começo, ou o final de toda a cadeia de entrada).
+
y
+
sticky; corresponde apenas ao índice indicado pela propriedade lastIndex dessa expressão regular na cadeia de destino (e não tenta corresponder a partir de índices posteriores).
+
+
+
+ +

Descrição

+ +

 O método de compilação é obsoleto. Você pode simplesmente usar o construtor RegExp para obter o mesmo efeito.

+ +

Exemplos

+ +

Usando compile()

+ +

O exemplo a seguir mostra como recompilar uma expressão regular com um novo padrão e um nova flag.

+ +
var regexObj = new RegExp('foo', 'gi');
+regexObj.compile('new foo', 'g');
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentario
{{SpecName('ES6', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ES6')}}Initial definition. Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
{{SpecName('ESDraft', '#sec-regexp.prototype.compile', 'RegExp.prototype.compile')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers.
+ +

Browser compativeis

+ +
+ + +

{{Compat("javascript.builtins.RegExp.compile")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/exec/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..b5f722a55d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,230 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +--- +
{{JSRef}}
+ +

O método exec() executa a busca por um padrão em uma determinada string. Retorna um array, ou {{jsxref("null")}}.

+ +

Se você está precisa somente de um retorno verdadeiro/falso, use o método {{jsxref("RegExp.prototype.test()")}} ou {{jsxref("String.prototype.search()")}}.

+ +

Sintaxe

+ +
regexObj.exec(string)
+ +

Parâmetros

+ +
+
string
+
A string para comparar com a expressão regular
+
+ +

Valor retornado

+ +

Se a combinação acontecer, o método exec() o método retorna um array e atualiza as propriedades do objeto da expressão regular. Esse array retornado possui o texto combinado como primeiro item e depois um item para cada captura contendo o respectivo texto.

+ +

Se falhar, o retorno do método exec() será {{jsxref("null")}}.

+ +

Descrição

+ +

Considere o exemplo abaixo:

+ +
// Encontra combinações "quick brown" seguido de "jumps", ignorando caracteres entre eles
+// Relembra "brown" e "jumps"
+// Ignora caixa (maiúsculo e minúsculo)
+var re = /quick\s(brown).+?(jumps)/ig;
+var result = re.exec('The Quick Brown Fox Jumps Over The Lazy Dog');
+
+ +

A tabela a seguir provê os resultados do script:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ObjetoPropriedade/ÍndiceDescriçãoExemplo
result[0]A string completa dos caracteres encontradosQuick Brown Fox Jumps
[1], ...[n ]As combinações de substrings parametrizadas encontradas, se existir. A quantidade de possíveis substrings parametrizadas é ilimitado.[1] = Brown
+ [2] = Jumps
index +

O índice base 0 do valor encontrado na string.

+
4
inputString originalThe Quick Brown Fox Jumps Over The Lazy Dog
relastIndexO índice que começa a próxima combinação encontrada. Quando "g" não é definido, este valor será sempre 0.25
ignoreCaseIndica se a flag "i" foi usada para ignorar caixa alta/baixa.true
globalIndica se a flag "g" foi usada para encontrar combinações de forma global.true
multilineIndica se a flag "m" foi usada para pesquisar em strings de diversas linhas.false
sourceTexto do padrão.quick\s(brown).+?(jumps)
+ +

Exemplos

+ +

Procurando combinações sucessivas

+ +

If your regular expression uses the "g" flag, you can use the exec() method multiple times to find successive matches in the same string. When you do so, the search starts at the substring of str specified by the regular expression's {{jsxref("RegExp.lastIndex", "lastIndex")}} property ({{jsxref("RegExp.prototype.test()", "test()")}} will also advance the {{jsxref("RegExp.lastIndex", "lastIndex")}} property). For example, assume you have this script:

+ +
var myRe = /ab*/g;
+var str = 'abbcdefabh';
+var myArray;
+while ((myArray = myRe.exec(str)) !== null) {
+  var msg = 'Found ' + myArray[0] + '. ';
+  msg += 'Next match starts at ' + myRe.lastIndex;
+  console.log(msg);
+}
+
+ +

This script displays the following text:

+ +
Found abb. Next match starts at 3
+Found ab. Next match starts at 9
+
+ +

Note: Do not place the regular expression literal (or {{jsxref("RegExp")}} constructor) within the while condition or it will create an infinite loop if there is a match due to the {{jsxref("RegExp.lastIndex", "lastIndex")}} property being reset upon each iteration. Also be sure that the global flag is set or a loop will occur here also.

+ +

Usando exec() com RegExp literais

+ +

You can also use exec() without creating a {{jsxref("RegExp")}} object:

+ +
var matches = /(hello \S+)/.exec('This is a hello world!');
+console.log(matches[1]);
+
+ +

This will log a message containing 'hello world!'.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Initial definition. Implemented in 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')}} 
{{SpecName('ESDraft', '#sec-regexp.prototype.exec', 'RegExp.exec')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de browsers

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/ignorecase/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/ignorecase/index.html new file mode 100644 index 0000000000..e6f55b596f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/ignorecase/index.html @@ -0,0 +1,70 @@ +--- +title: RegExp.prototype.ignoreCase +slug: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +tags: + - JavaScript + - Referencia + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +--- +
{{JSRef}}
+ +
O atributo ignoreCase indica se a flag "i" foi ou não utilizada com a expressão regular.
+ +
ignoreCase é um atributo somente leitura de uma instância individual de expressão
+ +
regular. 
+ +
+ +

{{EmbedInteractiveExample("pages/js/regexp-prototype-ignorecase.html")}}

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

Descrição

+ +

O valor de ignoreCase é um {{jsxref("Boolean")}} etrue se a flag "i" foi usada; false caso contrário. A flag "i" indica que maiúsculas e minúsculas são equivalentes ao se tentar casar uma string com a expressão regular.

+ +

Você não pode alterar essa propriedade diretamente.

+ +

Exemplos

+ +

Usando ignoreCase

+ +
var regex = new RegExp('foo', 'i');
+
+console.log(regex.ignoreCase); // true
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}
+ +

Compatibilidade com navegadores

+ +
+ + +

{{Compat("javascript.builtins.RegExp.ignoreCase")}}

+
+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/index.html new file mode 100644 index 0000000000..99ff4a626d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/index.html @@ -0,0 +1,636 @@ +--- +title: RegExp +slug: Web/JavaScript/Reference/Global_Objects/RegExp +tags: + - Construtor + - Expressões Regulares + - JavaScript + - Referencia + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +
{{JSRef("Global_Objects", "RegExp")}}
+ +

Sumário

+ +

O construtor RegExp cria um objeto de expressão regular para realizar uma correspondência de texto com um padrão.

+ +

Para uma introdução à expressões regulares, leia o capítulo de Expressões Regulares no Guia de JavaScript.

+ +

Construtor

+ +

Notações literais e de construtores são possíveis:

+ +
/padrão/flags
+new RegExp(padrão[, flags])
+RegExp(padrão[, flags])
+
+ +

Parâmetros

+ +
+
padrão
+
O texto da expressão regular, ou como em ES5, outro objeto RegExp. Os padrões podem incluir caracteres especiais para correspondencia em um intervalo maior de valores do que uma string literal.
+
flags
+
+

Se especificado, flagsindica os marcadores que podem ser adicionados, ou se um objeto é suficiente para o padrão, os valores de flags serão substituidos por qualquer uma das flags de objetos. O valor de flagsé uma string contendo qualquer combinação dos seguintes valores:

+ +
+
g
+
corresponder globalmente; acha todas as correspondências em vez de parar após achar a primeira
+
i
+
ignorar maiúsc./minúsc.; Se a flag u  estiver ativa, deve ser utilizado o Unicode case folding
+
m
+
multilinha; trata caracteres de início e fim (^ e $) ao operar sobre múltiplas linhas (ou seja, corresponder o início ou fim de cada linha (delimitado por \n ou \r), e não apenas o começo ou fim de toda a string de entrada)
+
+ +
+
u {{experimental_inline}}
+
unicode; trata o padrão como uma sequência de código unicode
+
+ +
+
y {{experimental_inline}}
+
aderente; corresponde apenas pelo index indicado pela propriedade lastIndex dessa expressão regular na string alvo (e não tenta corresponder de qualquer indexes posteriores).
+
+
+
+ +

Descrição

+ +

Há dois modos de criar um objeto RegExp: uma notação literal e um construtor. Para indicar strings, os parâmetros para a notação literal não usam aspas, enquanto os parâmetros para a função do construtor usam. Então, as seguintes expressões criam a mesma expressão regular:

+ +
/ab+c/i;
+new RegExp('ab+c', 'i');
+
+ +

A notação literal compila a expressão regular em tempo de execução. Use a notação literal quando a expressão regular permanecerá constante. Por exemplo, se você usar a notação literal para construir a expressão regular usada em um loop, a expressão regular não será recompilada a cada iteração

+ +

O construtor do objeto da expressão regular, por exemplo, new RegExp('ab+c'), fornece uma compilação em tempo de execução da expressão regular. Use a função construtora quando você sabe que o padrão da expressão regular será mudado, ou você não sabe o padrão e o está recebendo de outra fonte, como uma entrada do usuário.

+ +

Começando com ECMAScript 6, new RegExp(/ab+c/, 'i'), deixou de lançar um {{jsxref("TypeError")}} ("can't supply flags quando constructing one RegExp from another") quando o primeiro argumento é um RegExp e o segundo argumento flags está presente. Uma nova RegExp dos argumentos é criada ao invés disso.

+ +

Quando se usa a função construtora, as regras de escapar em uma string (preceder caracteres especiais com \ quando incluídos na string) são necessárias. Por exemplo, as declarações a seguir são equivalentes:

+ +
var re = /\w+/;
+var re = new RegExp('\\w+');
+
+ +

Significado dos caracteres especiais nas expressões regulares

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Classes de Caracteres
CaractereSignificado
. +

(O ponto) corresponde um único caracter qualquer exceto os caracteres de nova linha: \n, \r, \u2028 ou \u2029.

+ +

Note que a flag multilinha m não muda o comportamento do ponto. Então para corresponder um padrão por múltiplas linhas, o conjunto de caracteres [^] pode ser usado, que corresponderá qualquer caractere, incluindo novas linhas.

+ +

Por exemplo, /.y/ corresponde "my" e "ay", mas não "yes", em "yes make my day".

+
\d +

Corresponde um caractere de dígito no alfabeto basic Latin. Equivalente a [0-9].

+ +

Por exemplo, /\d/ ou /[0-9]/ corresponde "2" em "B2 é o número da suíte".

+
\D +

Corresponde qualquer caractere que não é um dígito no alfabeto basic Latin. Equivalente a [^0-9].

+ +

Por exemplo, /\D/ ou /[^0-9]/ corresponde "B" em "B2 é o suite number".

+
\w +

Corresponde qualquer caractere alfanumérico do alfabeto basic Latin, incluindo o underline. Equivalente a [A-Za-z0-9_].

+ +

Por exemplo, /\w/ corresponde "a" em "apple", "5" em "$5.28", e "3" em "3D".

+
\W +

Corresponde qualquer caractere que não é um alfanumérico do alfabeto basic Latin. Equivalente a [^A-Za-z0-9_].

+ +

Por exemplo, /\W/ ou /[^A-Za-z0-9_]/ corresponde "%" em "50%".

+
\s +

Corresponde um único caractere de espaço em branco, incluindo espaço, tabulação (tab), quebra de página, nova linha (LF) e outros espaços Unicode. Equivalente a [ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u202f\u205f​\u3000].

+ +

Por exemplo, /\s\w*/ corresponde " bar" em "foo bar".

+
\S +

Corresponde um único caractere que não seja um espaço em branco. Equivalente a [^ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​\u202f\u205f​\u3000].

+ +

Por exemplo, /\S\w*/ corresponde "foo" em "foo bar".

+
\tCorresponde uma tabulação.
\rCorresponde uma quebra de linha.
\nCorresponde uma nova linha.
\vCorresponde uma tabulação vertical.
\fCorresponde uma quebra de página.
[\b]Corresponde um caracter backspace. (Não confundir com \b)
\0Corresponde um caractere NUL. Não coloque outro dígito seguinte a esse.
\cX +

Onde X é uma letra de A - Z. Corresponde um caractere de controle em uma string.

+ +

Por exemplo, /\cM/ corresponde control-M em uma string.

+
\xhhCorresponde o caractere com o código hh (dois dígitos hexadecimais).
\uhhhhCorresponde o caractere com o valor Unicode hhhh (quatro dígitos hexadecimais).
\ +

Para caracteres que são geralmente tratados literalmente, indica que o próximo caractere é especial e não deve ser interpretado literalmente.

+ +

Por exemplo, /b/ corresponde o caractere "b". Colocando uma barra invertida antes do "b", ou seja, usando /\b/, o caractere se torna especial, significando corresponder o limite de uma palavra.

+ +

ou

+ +

Para caracteres que são geralmente tratados especialmente, indica que o próximo caractere não é especial e deve ser interpretado literalmente.

+ +

Por exemplo, "*" é um caractere especial que significa 0 ou mais ocorrências do caractere precedente devem ser correspondidas; por exemplo, /a*/ significa corresponder 0 ou mais "a"s. Para corresponder * literalmente, preceda-o com uma barra invertida; por exemplo, /a\*/ corresponde "a*".

+
Conjuntos de Caracteres
CaractereSignificado
[xyz] +

Um conjunto de caracteres. Corresponde qualquer um dos caracteres cercados. Você pode especificar uma extensão de caracteres usando um hífen.

+ +

Por exemplo, [abcd] é o mesmo que [a-d]. Eles correspondem o "b" em "banco" e o "c" em "cortar".

+
[^xyz] +

Um conjunto de caracteres negativo ou complementado. Isto é, corresponde qualquer coisa que não esteja cercada nos colchetes. Você pode especificar uma extensão de caracteres usando um hífen.

+ +

Por exemplo, [^abc] é o mesmo que [^a-c]. Eles inicialmente correspondem "n" em "banco" e "o" em "cortar".

+
Limites
CaractereSignificado
^ +

Corresponde o início de uma entrada. Se a flag multilinha é utilizada, também corresponde imediatamente após um caractere de quebra de linha.

+ +

Por exemplo, /^A/ não corresponde o "A" em "an A", mas corresponde o primeiro "A" em "An A".

+
$ +

Corresponde o fim de uma entrada. Se a flag multilinha é utilizada, também corresponde imediatamente antes de um caractere de quebra de linha.

+ +

Por exemplo, /o$/ não corresponde o "o" em "cantor", mas corresponde em "canto".

+
\b +

Corresponde um limite de palavra de largura zero, como entre uma letra e um espaço. (Não confundir com [\b])

+ +

Por exemplo, /\bno/ corresponde o "no" em "de noite"; /ly\b/ corresponde o "ly" em "possibly yesterday".

+
\B +

Corresponde um limite de uma não palavra de largura zero, como entre duas letras ou entre dois espaços.

+ +

Por exemplo, /\Bte/ corresponde "te" em "de noite", e /on\B/ corresponde "on" em "possivelmente ontem".

+
Agrupamentos e back references
CaractereSignificado
(x) +

Corresponde x e memoriza a correspondência. Esses são chamados parênteses de captura.

+ +

Por exemplo, /(foo)/ corresponde e memoriza "foo" em "foo bar". A substring correspondida pode ser chamada novamente dos elementos do array resultante [1], ..., [n] ou das propriedades predefinidas do objeto RegExp $1, ..., $9.

+ +

Grupos de captura têm uma falta na performance. Se você não necessita que a substring correspondida seja chamada novamente, prefira parênteses de não-captura (veja mais abaixo).

+
\n +

Onde n é um inteiro positivo. A back reference to o last substring matching o n parenthetical no expressão regular (counting left parentheses).

+ +

Por exemplo, /apple(,)\sorange\1/ corresponde "apple, orange," em "apple, orange, cherry, peach". Um exemplo mais completo está a seguir nesta tabela.

+
(?:x)Corresponde x mas não memoriza a correspondência. Esses são chamados parênteses de não-captura. A substring correspondida não pode ser chamada novamente dos elementos do array resultante [1], ..., [n] ou das propriedades predefinidas do objeto RegExp $1, ..., $9.
Quantificadores
CaractereSignificado
x* +

Corresponde o item precedente x zero ou mais vezes.

+ +

Por exemplo, /assusto*/ corresponde "assustoooo" em "Um fantasma assustoooou" e "assust" em "Não me assustei", mas nada em "Um bode grunhiu".

+ +

Note que no caso acima, o único caractere a ser selecionado é "o", pois ele é o caractere imediatamente anterior ao asterisco e não há qualquer operador de agrupamento que indique que mais caracteres deveriam ser submetidos à repetição. Se quiséssemos selecionar a ocorrência sequencial da palavra completa "blah", por exemplo, poderíamos utilizar algum agrupamento como /(blah)*/ o que geraria a seleção de "blahblahblah" na frase "blahblahblah ração para gatos" ou de "blah" na frase "algoritmo blahut-arimoto".

+
x+ +

Corresponde o item precedente x uma ou mais vezes. Equivalente a {1,}.

+ +

Por exemplo, /a+/ corresponde o "o" em "doce" e todos os "o"s em "doooooooce".

+
x? +

Corresponde o item precedente x nenhuma ou uma vez.

+ +

Por exemplo, /e?le?/ corresponde o "el" em "angel" e o "le" em "angle."

+ +

If used imediatamente after qualquer dos quantifiers *, +, ?, ou {}, makes o quantifier non-greedy (matching o minimum number of vezes), como opposed to o default, which é greedy (matching o maximum number of vezes).

+ +

Also used em lookahead assertions, described under (?=), (?!), e (?:) em this table.

+
x(?=y)Corresponde x apenas se x é seguido por y. Por exemplo, /Jack(?=Sprat)/ corresponde "Jack" apenas se for seguido por "Sprat". /Jack(?=Sprat|Frost)/ corresponde "Jack" apenas se for seguido por "Sprat" ou "Frost". Porém, nem "Sprat" nem "Frost" são partes do resultado da correspondência.
x(?!y) +

Corresponde x apenas se x não é seguido por y. Por exemplo, /\d+(?!\.)/ corresponde um número apenas se não for seguido por um ponto.

+ +

/\d+(?!\.)/.exec('3.141') corresponde "141", mas não "3.141".

+
x|y +

Corresponde x ou y.

+ +

Por exemplo, /verde|vermelha/ corresponde "verde" em "maçã verde" e "vermelha" em "maçã vermelha".

+ +

Entretanto, a primeira expressão tem preferência. Se uma string fosse corresponder às duas expressões, ela vai corresponder à que aparece do lado esquerdo do operador |. Por exemplo, /maçãs|maçã/ corresponde "maçãs" na frase "maçãs vermelhas" e "maçã" na frase "maçã verde".

+
x{n} +

Onde n é um número inteiro positivo. Corresponde exatamente n ocorrências do item precedente x.

+ +

Por exemplo, /o{2}/ não corresponde o "o" em "brigadeiro", mas corresponde todos os dois "o"s em "brigadeiroo", e o dois primeiros "o"s em "brigadeirooo".

+
x{n,} +

Onde n é um número inteiro positivo. Corresponde pelo menos n ocorrências do item precedente (sem que haja um limite superior).

+ +

Por exemplo, /o{2,}/ não corresponde o "o" em "brigadeiro", mas corresponde todos os "o"s em "brigadeiroo" e em "brigadeirooooooooo".

+
x{n,m} +

Onde n e m são números inteiros positivos. Corresponde pelo menos n e no máximo m ocorrências do item precedente x.

+ +

Por exemplo, /o{2,4}/ corresponde nada em "brigadeiro", os dois "o"s em "brigadeiroo", os três "o"s em "brigadeirooo", e os primeiros quatro "o"s em "brigadeirooooo".

+ +

É importante perceber que no último caso a correspondência não inclui o último "o" de "brigadeirooooo". Isso se deve ao fato do operador quantificador ter definido o número máximo de ocorrências como 4, ignorando a quinta repetição do caractere.

+
+

x*?
+ x+?
+ x??
+ x{n,}?
+ x{n,m}?

+
+

Operadores non-greedy ou lazy (não-gulosos ou preguiçosos)
+ Esses operadores com a ? no final, operam de maneira semelhante aos seus análogos sem ? mostrados acima, correspondendo múltiplas ocorrências do item precedente x. Entretanto, desta vez a ocorrência selecionada será a mínima possível.

+ +

No exemplo /(blah)*?/, diante da frase "blahblahblah ração para gatos", nada seria selecionado, pois a ocorrência mínima aceita pelo operador *? seria ocorrência de 0 (zero) vezes da string "blah", o que resulta no nada.

+ +

Já a expressão regular /(blah)+?/, diante da mesma frase, corresponderia a "blah", que é a ocorrência mínima aceita pelo operador +?ou seja, 1 (uma) repetição da sequência "blah".

+ +

Em outro exemplo com mais aplicação prática, digamos que se quer corresponder todos os termos que ficam entre aspas em um texto. Se fizéssemos simplesmente a regex  /".*"/, diante de um texto com múltiplas ocorrências de termos entre aspas, como: 'Eu "gosto" muito de "estudar" regex', a nossa expressão regular seria gulosa e selecionaria o maior texto possível que correspondesse à definição, nesse caso, selecionando '"gosto" muito de "estudar"', pois todo esse texto está compreendido entre a primeira aspa (antes de 'gosto') e a última aspa (após 'estudar'), o que é um resultado talvez indesejado.
+ Se usarmos a regex /".*?"/, com o operador não-guloso, as correspondências para a mesma frase seriam '"gosto"' e '"estudar"' separadamente, conforme era a intenção inicial.

+
+ +

Propriedades

+ +
+
{{jsxref("RegExp.prototype")}}
+
Permite a adição de propriedades a todos os objetos.
+
RegExp.length
+
O valor of RegExp.length é 2.
+
+ +
{{jsOverrides("Function", "Properties", "prototype")}}
+ +

Métodos

+ +

O objeto global RegExp não possui métodos próprios, no entanto, herda alguns métodos através da cadeia de prototype.

+ +
{{jsOverrides("Function", "Methods", "prototype")}}
+ +

Objetos e instancias

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Methods')}}
+ +

Exemplos

+ +

Exemplo: Usando uma expressão regular para mudar o fomato dos dados

+ +

O seguinte script usa o método {{jsxref("String.prototype.replace()", "replace()")}} da instância de {{jsxref("Global_Objects/String", "String")}} para casar o nome no format nome sobrenome e produzir no formato sobrenome, nome. No texto substituto, o script usa $1 e $2 para indicar os respectivos parênteses de casamento no padrão da expressão regular.

+ +
var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr);
+
+ +

Isto retornará "Smith, John".

+ +

Exemplo: Usando expressões regulares para quebrar linhas com diferentes fins de linha/quebras de linha

+ +

O final de linha padrão depende da plataforma utilizada (Unix, Windows, etc.). A divisão(split) de linha fornecida neste exemplo funciona com todas as plataformas.

+ +
var text = 'Um texto\nE mais um pouco\r\nE ainda mais\rEsse é o fim';
+var lines = text.split(/\r\n|\r|\n/);
+console.log(lines) // prints [ 'Um texto', 'E mais um pouco', 'E ainda mais', 'Esse é o fim' ]
+ +

Note que a ordem dos padrões na expressão regular importa.

+ +

Exemplo: Usando expressão regular sobre múltiplas linhas

+ +
var s = 'Please yes\nmake my day!';
+s.match(/yes.*day/);
+// Retorna null
+s.match(/yes[^]*day/);
+// Retorna'yes\nmake my day'
+
+ +

Exemplo: Using a expressão regular com o "sticky" flag

+ +

Este exemplo mostra como utilizar a sticky flag em expressões regulares.

+ +
var text = 'First line\nSecond line';
+var regex = /(\S+) line\n?/y;
+
+var match = regex.exec(text);
+console.log(match[1]);        // prints 'First'
+console.log(regex.lastIndex); // prints '11'
+
+var match2 = regex.exec(text);
+console.log(match2[1]);       // prints 'Second'
+console.log(regex.lastIndex); // prints '22'
+
+var match3 = regex.exec(text);
+console.log(match3 === null); // prints 'true'
+
+ +

One can test at run-time whether o sticky flag é supported, using try { … } catch { … }. Para this, either an eval(…) expression ou o RegExp(regex-string, flags-string) syntax must be used (since o /regex/flags notation é processed at compile-time, so throws an exception before o catch block é encountered). Por exemplo:

+ +
var supports_sticky;
+try { RegExp('', 'y'); supports_sticky = true; }
+catch(e) { supports_sticky = false; }
+console.log(supports_sticky); // prints 'true'
+
+ +

Exemplo: Expressão regular e Unicode caracteres

+ +

As mentioned above, \w ou \W only corresponde ASCII based caracteres; por exemplo, "a" to "z", "A" to "Z", "0" to "9" e "_". To match caracteres from other languages such como Cyrillic ou Hebrew, use \uhhhh, onde "hhhh" é o caractere's Unicode valor em hexadecimal. This exemplo demonstrates how one can separate out Unicode caracteres from uma palavra.

+ +
var text = 'Образец text на русском языке';
+var regex = /[\u0400-\u04FF]+/g;
+
+var match = regex.exec(text);
+console.log(match[0]);        // prints 'Образец'
+console.log(regex.lastIndex); // prints '7'
+
+var match2 = regex.exec(text);
+console.log(match2[0]);       // prints 'на' [não print 'text']
+console.log(regex.lastIndex); // prints '15'
+
+// e assim vai
+
+ +

Here's an external resource para getting o complete Unicode block range para different scripts: Regexp-unicode-block.

+ +

Exemplo: Extracting subdomain name from URL

+ +
var url = 'http://xxx.domain.com';
+console.log(/[^.]+/.exec(url)[0].substr(7)); // prints 'xxx'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition.StandardInitial definition. Implemented em JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.10', 'RegExp')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-regexp-regular-expression-objects', 'RegExp')}}{{Spec2('ES6')}}
+ +

Compatibilidade de navegador

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Sticky flag ("y"){{CompatChrome("39")}} (behind flag){{CompatGeckoDesktop("1.9")}} ES4-Style {{bug(773687)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
Sticky flag ("y"){{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("1.9")}} ES4-Style {{bug(773687)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/sticky/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/sticky/index.html new file mode 100644 index 0000000000..2030fc7bf1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/sticky/index.html @@ -0,0 +1,95 @@ +--- +title: RegExp.prototype.sticky +slug: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +--- +
{{JSRef}}
+ +

A propriedade sticky indica se a busca é "pegajosa" (percorre a string somente a partir do índice indicado pela propriedade {{jsxref("RegExp.lastIndex", "lastIndex")}} desta expressão regular). A propriedade sticky em um objeto de expressão regular é somente para leitura.

+ +
{{EmbedInteractiveExample("pages/js/regexp-prototype-sticky.html")}}
+ + + +
{{js_property_attributes(0, 0, 1)}}
+ +

Descrição

+ +

O valor de sticky é do tipo {{jsxref("Boolean")}} e será  true quando a flag "y" for utilizada; senão, será false. A flag "y" indica que as correspondências ocorrerão apenas a partir do indice indicado pela propriedade {{jsxref("RegExp.lastIndex", "lastIndex")}} desta expressão regular na string alvo (e não buscará correspondência em nenhum índice anterior). Uma expressão regular definida como sticky e global ignora a flag global.

+ +

Você não pode alterar essa propriedade diretamente. Ela é somente para leitura.

+ +

Exemplos

+ +

Uilizando uma expressão regular com a flag sticky

+ +
var str = '#foo#';
+var regex = /foo/y;
+
+regex.lastIndex = 1;
+regex.test(str); // true
+regex.lastIndex = 5;
+regex.test(str); // false (lastIndex é levado em conta com a flag sticky)
+regex.lastIndex; // 0 (reinicia quando não ocorre correspondência)
+
+ +

Flag sticky ancorada

+ +

Por diversas versões, a engine SpiderMonkey do Firefox apresentou um bug na asserção de ^ com a flag sticky que fazia expressões iniciando com ^ e usando a flag sticky encontrarem correspondências onde não deveriam. O bug foi introduzido algum tempo após o Firefox 3.6 (que possuía a flag sticky mas não apresentava o bug) e corrigido em 2015. Talvez por este motivo, a especificação ES2015 destaca especificamente que:

+ +
+

Quando a flag y for usada em um padrão, ^ indica que a correspondência ocorrerá apenas no início da entrada, ou (se multiline for true) no início de uma linha.

+
+ +

Exemplos de comportamento esperado:

+ +
var regex = /^foo/y;
+regex.lastIndex = 2;
+regex.test('..foo');   // false - índice 2 não é o início da string
+
+var regex2 = /^foo/my;
+regex2.lastIndex = 2;
+regex2.test('..foo');  // false - índice 2 não é o início da string nem da linha
+regex2.lastIndex = 2;
+regex2.test('.\nfoo'); // true - índice 2 é o início da linha
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES2015', '#sec-get-regexp.prototype.sticky', 'RegExp.prototype.sticky')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-get-regexp.prototype.sticky', 'RegExp.prototype.sticky')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
+ + +

{{Compat("javascript.builtins.RegExp.sticky")}}

+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/regexp/test/index.html b/files/pt-br/web/javascript/reference/global_objects/regexp/test/index.html new file mode 100644 index 0000000000..c3470dc4fe --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/regexp/test/index.html @@ -0,0 +1,152 @@ +--- +title: RegExp.prototype.test() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/test +tags: + - Expressão Regular + - JavaScript + - Prototype + - Referencia + - RegExp + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test +--- +
{{JSRef}}
+ +
O método test() executa uma busca por uma correspondência entre  uma expressão regular e uma string. Retorna true ou false.
+ +

Sintaxe

+ +
regexObj.test(str)
+ +

Parâmetros

+ +
+
str
+
A string que confrontará a expressão regular.
+
+ +

Retorno

+ +

Boolean.

+ +

true se a string str corresponde com o que está descrito na expressão regular.

+ +

Caso contrário, retorna false.

+ +

Descrição

+ +

Use test() sempre que você quiser saber se um padrão está dentro de uma string( similar ao método {{jsxref("String.prototype.search()")}}); Para mais informações (porém com execução mais lenta) use o método {{jsxref("RegExp.prototype.exec()", "exec()")}} (similar ao método {{jsxref("String.prototype.match()")}}). Assim como {{jsxref("RegExp.prototype.exec()", "exec()")}} (ou em combinação com ele), test() quando chamado várias vezes dentro da mesma instância de expressão regular irá avançar seu ponteiro para a correspondência anterior.

+ +

Exemplos

+ +

Usando test()

+ +

Exemplo simples que verifica se "hello" está presente no início de uma string, retornando um booleano como resultado.

+ +
const str = 'hello world!';
+const result = /^hello/.test(str);
+
+console.log(result); // true
+ +

O exemplo a seguir mostra uma mensagem dependendo do sucesso do teste.

+ +
function testinput(re, str){
+  var midstring;
+  if (re.test(str)) {
+    midstring = ' Contém ';
+  } else {
+    midstring = ' não contém ';
+  }
+  console.log(str + midstring + re.source);
+}
+
+ +

Specificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificaçõesStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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')}}
+ +

Compatibilidade com Browser

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Gecko-specific notes

+ +

A priori no Grecko 8.0 {{geckoRelease("8.0")}}, test() foi implementado incorretamente; quando chamado sem parâmetros, ele encontrária uma correspondência com o valor de entrada anterior (RegExp.input property) no lugar de uma correspondência com "undefined". Isso está conrrigido; agora /undefined/.test() resultará em true, no lugar de um erro.

+ +

See also

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/add/index.html b/files/pt-br/web/javascript/reference/global_objects/set/add/index.html new file mode 100644 index 0000000000..c3787149df --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/add/index.html @@ -0,0 +1,131 @@ +--- +title: Set.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/Set/add +tags: + - ECMAScript6 + - JavaScript + - Prototype + - metodo + - set + - set.add +translation_of: Web/JavaScript/Reference/Global_Objects/Set/add +--- +
{{JSRef}}
+ +

O método add() acrescenta um novo elemento com o valor especificado no final de um objeto Set.

+ +

Sintaxe

+ +
mySet.add(value);
+ +

Parâmetros

+ +
+
value
+
Requerido. O valor de um elemento a ser adicionado ao objeto Set.
+
+ +

Valor de retorno

+ +

O objeto Set.

+ +

Exemplos

+ +

Usando o método add

+ +
var mySet = new Set();
+
+mySet.add(1);
+mySet.add(5).add("some text"); // pode ser encadeado
+
+console.log(mySet);
+// Set [1, 5, "some text"]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES6', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}{{Spec2('ESDraft')}}
+ +

Compatilidade de Navegadores (Browser)

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Notas específicas para Firefox

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/clear/index.html b/files/pt-br/web/javascript/reference/global_objects/set/clear/index.html new file mode 100644 index 0000000000..1026fe61f1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/clear/index.html @@ -0,0 +1,110 @@ +--- +title: Set.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/Set/clear +translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear +--- +
{{JSRef}}
+ +

O método clear() remove todos os elementos de um objeto Set.

+ +

Sintaxe

+ +
mySet.clear();
+ +

Exemplos

+ +

Usando o método 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
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES6', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ES6')}}Definições iniciais
{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores (Browser)

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{CompatGeckoDesktop("19.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}25{{CompatGeckoMobile("19.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/delete/index.html b/files/pt-br/web/javascript/reference/global_objects/set/delete/index.html new file mode 100644 index 0000000000..0683060777 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/delete/index.html @@ -0,0 +1,123 @@ +--- +title: Set.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Set/delete +tags: + - ECMAScript6 + - ES6 + - Prototype + - metodo + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete +--- +
{{JSRef}}
+ +

O método delete() remove o elemento especificado de um objeto Set.

+ +

Sintaxe

+ +
mySet.delete(value);
+ +

Parâmetros

+ +
+
value
+
Requerido. O valor do elemento a ser removido do objeto Set.
+
+ +

Return value

+ +

Retorna true se um elemento contido no objeto Set foi removido com sucesso; caso contrário false.

+ +

Exemples

+ +

Uso do método delete

+ +
var mySet = new Set();
+mySet.add("foo");
+
+mySet.delete("bar"); // Retorna false. Nenhum elemento "bar" foi encontrado para deletar.
+mySet.delete("foo"); // Retorna true. remoção bem sucedida.
+
+mySet.has("foo");    // Retorna false. O elemento "foo" não está mais presente.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de Navegadores (Browser)

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico38{{CompatGeckoDesktop("13.0")}}11257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome para AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatNo}}38{{CompatGeckoMobile("13.0")}}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/entries/index.html b/files/pt-br/web/javascript/reference/global_objects/set/entries/index.html new file mode 100644 index 0000000000..67bc464a4e --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/entries/index.html @@ -0,0 +1,109 @@ +--- +title: Set.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Set/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries +--- +
{{JSRef}}
+ +

O método entries() retorna um novo objeto Iterador (Iterator) que contém um array de [valor, valor] para cada elemento de um objeto Set em ordem de inserção. Os objetos Set não possuem chaves (key) como objetos do tipo Map. Entretanto, para manter a API similar a objetos Map, cada entrada (entry) tem o mesmo valor para sua chave (key) e valor (value), então uma matriz array [valor, valor] é retornado.

+ +

Sintaxe

+ +
mySet.entries()
+ +

Exemplos

+ +

Usando 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"]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES6', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ES6')}}Definição inicial
{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores (Browser)

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support38{{ CompatGeckoDesktop("24") }}{{CompatNo}}257.1
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}38{{ CompatGeckoMobile("24") }}{{CompatNo}}{{CompatNo}}8
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/has/index.html b/files/pt-br/web/javascript/reference/global_objects/set/has/index.html new file mode 100644 index 0000000000..1a3f5d68c8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/has/index.html @@ -0,0 +1,86 @@ +--- +title: Set.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Set/has +translation_of: Web/JavaScript/Reference/Global_Objects/Set/has +--- +
{{JSRef}}
+ +

O método has() retorna um valor booleano indicando se um elemento com o valor especificado existe em um objecto Set ou não.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-has.html")}}
+ + + +

Sintaxe

+ +
mySet.has(valor);
+ +

Parâmetros

+ +
+
valor
+
O valor para testar a existência no objeto Set.
+
+ +

Valor de retorno

+ +

Retorna true se um elemento com o valor especificado existe no objeto Setfalse caso contrário.

+ +
+

Nota: Tecnicamente falando, has() usa o algorítimo sameValueZero para determinar quando o elemento dado é encontrado.

+
+ +

Exemplos

+ +

Usando o método has

+ +
var mySet = new Set();
+mySet.add('foo');
+
+mySet.has('foo');  // retorna true
+mySet.has('bar');  // retorna false
+
+var set1 = new Set();
+var obj1 = {'key1': 1};
+set1.add(obj1);
+
+set1.has(obj1);        // retorna true
+set1.has({'key1': 1}); // retorna false porque obj1 e {'key': 1} fazem referência a objetos diferentes.
+set1.add({'key1': 1}); // agora set1 contém 2 registros
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Set.has")}}

+ +

Veja também:

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/index.html b/files/pt-br/web/javascript/reference/global_objects/set/index.html new file mode 100644 index 0000000000..261359a0b0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/index.html @@ -0,0 +1,259 @@ +--- +title: Set +slug: Web/JavaScript/Reference/Global_Objects/Set +tags: + - ECMAScript 2015 + - JavaScript + - Objetos + - Objetos Globais + - conjuntos +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef("Global_Objects", "Set")}}
+ +

Sumário

+ +

O objeto Set permite que você armazene valores únicos de qualquer tipo, desde {{Glossary("Primitive", "valores primitivos")}} a referências a objetos.

+ +

Sintaxe

+ +
 new Set([iterable]);
+ +

Parâmetros

+ +
+
iterable
+
Se um objeto iterável é passado, todos os seus elementos serão adicionados ao novo Set. Se tal parâmetro não for específicado, ou se seu valor for null, o novo Set estará vazio.
+
+ +

Descrição

+ +

Objetos Set são coleções de valores nas quais é possível iterar os elementos em ordem de inserção. Um valor no Set pode ocorrer apenas uma vez; ele é único na coleção do Set.

+ +

Igualdade de valores

+ +

Como cada valor no Set deve ser único, a igualdade será checada e não é baseada no mesmo algoritmo que aquele usado no operador ===. Especificamente, para Sets, +0 (que é exatamente igual a - 0) e - 0 são valores diferentes. No entanto, isto foi modificado na última especificação ECMAScript 2015. Iniciado com o Gecko 29.0 {{geckoRelease("29")}} ({{bug("952870")}}) e pelo  recent nightly Chrome, +0 e -0 são tratados com sendo o mesmo valor em objetos conjunto (Set). Também, NaN e undefined podem ser armazenados em um conjunto Set.

+ +

Propriedades

+ +
+
Set.length
+
O valor da propriedade comprimento é 0.
+
Para contar o número de elementos de um Set, use {{jsxref("Set.prototype.size")}}.
+
{{jsxref("Set.@@species", "get Set[@@species]")}}
+
A função construtora usada para criar objetos derivados.
+
{{jsxref("Set.prototype")}}
+
Representa o prototype do constructor do Set. Permite a adição de propriedades para todos os objetos do tipo Set.
+
+ +

Instâncias Set 

+ +

Todas as instâncias de Set herdam de {{jsxref("Set.prototype")}}.

+ +

Propriedades

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Set/prototype','Properties')}}

+ +

Métodos

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/Set/prototype','Methods')}}

+ +

Exemplos

+ +

Utilizando o objeto Set

+ +
var meuSet = new Set();
+
+meuSet.add(1); // meuSet [1]
+meuSet.add(5); // meuSet [1, 5]
+meuSet.add(5); // 5 já foi adicionando, portanto, meuSet [1, 5]
+meuSet.add("texto");
+var o = {a: 1, b: 2};
+meuSet.add(o);
+
+meuSet.add({a: 1, b: 2}); //  o está referenciando outro objeto
+
+meuSet.has(1); // true
+meuSet.has(3); // false, 3 não foi adicionado ao set (Conjunto)
+meuSet.has(5);              // true
+meuSet.has(Math.sqrt(25));  // true
+meuSet.has("Texto".toLowerCase()); // true
+meuSet.has(o); // true
+
+meuSet.size; // 5
+
+meuSet.delete(5); // remove 5 do set
+meuSet.has(5);    // false, 5 já foi removido
+
+meuSet.size; // 4, nós simplesmente removemos um valor
+
+console.log(meuSet) // Set { 1, 'texto', { a: 1, b: 2 }, { a: 1, b: 2 } }
+
+ + + +

Iterando objetos Set

+ +
// iterar sobre os itens em set
+// loga os itens na ordem: 1, "texto"
+for (let item of meuSet) console.log(item);
+
+// loga os itens na ordem: 1, "texto"
+for (let item of meuSet.keys()) console.log(item);
+
+// loga os itens na ordem: 1, "texto"
+for (let item of meuSet.values()) console.log(item);
+
+// loga os itens na ordem: 1, "texto"
+//(key e value são os mesmos aqui)
+for (let [key, value] of meuSet.entries()) console.log(key);
+
+// converte Set para um Array
+var meuArr = [v for (v of mySet)]; // [1, "some text"]
+
+// o seguinte também funcionará se for executado em um documento HTML
+mySet.add(document.body);
+mySet.has(document.querySelector("body")); // true
+
+// a conversão entre Set e Array
+mySet2 = Set([1,2,3,4]);
+mySet2.size; // 4
+[...mySet2]; // [1,2,3,4]
+
+// intersecção pode ser simulado via
+var intersection = new Set([...set1].filter(x => set2.has(x)));
+
+// Iterar entradas set com forEach
+meuSet.forEach(function(value) {
+  console.log(value);
+});
+
+// 1
+// 2
+// 3
+// 4
+ +

Implementando operações básicas entre conjuntos

+ +
function isSuperset(set, subset) {
+    for (var elem of subset) {
+        if (!set.has(elem)) {
+            return false;
+        }
+    }
+    return true;
+}
+
+function uniao(setA, setB) {
+    var _uniao = new Set(setA);
+    for (var elem of setB) {
+        _uniao.add(elem);
+    }
+    return _uniao;
+}
+
+function interseccao(setA, setB) {
+    var _interseccao = new Set();
+    for (var elem of setB) {
+        if (setA.has(elem)) {
+            _interseccao.add(elem);
+        }
+    }
+    return _interseccao;
+}
+
+function diferencaSimetrica(setA, setB) {
+    var _diferenca = new Set(setA);
+    for (var elem of setB) {
+        if (_diferenca.has(elem)) {
+            _diferenca.delete(elem);
+        } else {
+            _diferenca.add(elem);
+        }
+    }
+    return _diferenca;
+}
+
+function diferenca(setA, setB) {
+    var _diferenca = new Set(setA);
+    for (var elem of setB) {
+        _diferenca.delete(elem);
+    }
+    return _diferenca;
+}
+
+//Exemplos
+var setA = new Set([1, 2, 3, 4]),
+    setB = new Set([2, 3]),
+    setC = new Set([3, 4, 5, 6]);
+
+isSuperset(setA, setB); // => true
+uniao(setA, setC); // => Set [1, 2, 3, 4, 5, 6]
+interseccao(setA, setC); // => Set [3, 4]
+diferencaSimetrica(setA, setC); // => Set [1, 2, 5, 6]
+diferenca(setA, setC); // => Set [1, 2]
+ +

Relação com objetos Array 

+ +
var myArray = ["value1", "value2", "value3"];
+
+// Use o construtor regular de Set para transformar um array dentro de um Set
+var mySet = new Set(myArray);
+
+mySet.has("value1"); // retorna true
+
+// Use o operador de propagação para transformar um Set em um Array.
+alert(uneval([...mySet])); // Irá mostrar-lhe exatamente o mesmo Array como myArray
+ +

Removendo elementos duplicados de um Array

+ +
// Use para remover elementos duplicados de um Array
+
+const numeros = [2,3,4,4,2,3,3,4,4,5,5,6,6,7,5,32,3,4,5]
+
+console.log([...new Set(numeros)])
+
+// [2, 3, 4, 5, 6, 7, 32]
+ +

Relação com objetos String

+ +
var texto = 'India';
+
+var meuSet = new Set(texto);  // Set ['I', 'n', 'd', 'i', 'a']
+meuSet.size;  // 5
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-set-objects', 'Set')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegador (Browser)

+ + + +

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

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/set/prototype/index.html new file mode 100644 index 0000000000..2438fccc1c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/set/prototype/index.html @@ -0,0 +1,84 @@ +--- +title: Set.prototype +slug: Web/JavaScript/Reference/Global_Objects/Set/prototype +tags: + - Propriedade + - Prototipo + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +
{{JSRef}}
+ +

A propriedade Set.prototype representa o protótipo do construtor do objeto {{jsxref("Set")}}.

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

Descrição

+ +

Instâncias de {{jsxref("Set")}} herdam de {{jsxref("Set.prototype")}}. Você pode usar o construtor do objeto protótipo para adicionar propriedades ou métodos para todas as instâncias de Set .

+ +

Propriedades

+ +
+
Set.prototype.constructor
+
Retorna a função que criou o protótipo de uma instância. Esta é a função {{jsxref("Set")}} por padrão.
+
{{jsxref("Set.prototype.size")}}
+
Retorna o número de valores no objeto Set.
+
+ +

Métodos

+ +
+
{{jsxref("Set.add", "Set.prototype.add(value)")}}
+
Anexa um novo elemento com o valor passado ao objeto Set . Retorna o objeto Set.
+
{{jsxref("Set.prototype.clear()")}}
+
Remove todos os elementos do objeto Set.
+
{{jsxref("Set.delete", "Set.prototype.delete(value)")}}
+
Remove o elemento associado ao value e retorna o valor que Set.prototype.has(value) teria retornado anteriormente. Set.prototype.has(value) irá retornar false depois disso.
+
{{jsxref("Set.prototype.entries()")}}
+
Retorna um novo objeto Iterator que contém um array de [value, value] para cada elemento no objeto Set , em ordem de inserção. Isso é similar ao objeto Map, para que cada entrada tenha o mesmo valor para sua chave evalor aqui.
+
{{jsxref("Set.forEach", "Set.prototype.forEach(callbackFn[, thisArg])")}}
+
Chama callbackFn uma vez para cada valor presente no objeto Set, em ordem de inserção. Se um parâmetro thisArg for passado para o forEach, ele será usado como valor de this para cada callback.
+
{{jsxref("Set.has", "Set.prototype.has(value)")}}
+
Retorna um booleano afirmando se um elemento está presente com o dado valor no objeto Set ou não.
+
{{jsxref("Set.prototype.keys()")}}
+
É a mesma função que a função values() e retorna um novo objeto Iterator que contém os valores para cada elemento no objeto Set  em ordem de inserção.
+
{{jsxref("Set.prototype.values()")}}
+
Retorna um novo objeto Iterator que contém os values para cada elemento no objeto Set  em ordem de inserção.
+
{{jsxref("Set.prototype.@@iterator()", "Set.prototype[@@iterator]()")}}
+
Retorna um novo objeto Iterator que contém os values para cada elemento do objeto Set em ordem de inserção.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-set.prototype', 'Set.prototype')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-set.prototype', 'Set.prototype')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

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

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/set/values/index.html b/files/pt-br/web/javascript/reference/global_objects/set/values/index.html new file mode 100644 index 0000000000..be96764668 --- /dev/null +++ b/files/pt-br/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}}
+ +

O método values() retorna um novo objeto Iterator que contem os valores para cada elemento dentro do objeto Set por ordem de inserção.

+ +

O método keys() é um alias desse método (por similaridade com os objetos {{jsxref("Map")}}); ele se comporta exatamente da mesma forma e retorna os valores dos elementos do Set.

+ +
{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}
+ + + +

Sintaxe

+ +
mySet.values();
+
+ +

Valor retornado

+ +

Um novo objeto Iterator condendo os valores de cada elemento contido no Set, por ordem de inserção.

+ +

Exemplos

+ +

Usando 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"
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ES2015')}}Definições iniciais.
{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}{{Spec2('ESDraft')}}
+ +

Browsers compatíveis

+ + + +

{{Compat("javascript.builtins.Set.values")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/@@iterator/index.html b/files/pt-br/web/javascript/reference/global_objects/string/@@iterator/index.html new file mode 100644 index 0000000000..5a7700861c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/@@iterator/index.html @@ -0,0 +1,84 @@ +--- +title: 'String.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/String/@@iterator +tags: + - Iterador + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/@@iterator +--- +
{{JSRef}}
+ +

O método [@@iterator]() retorna um novo objeto Iterator que itera sobre os pontos de código do valor da String, retornando cada ponto de código como um valor String.

+ +

Sintaxe

+ +
str[Symbol.iterator]
+ +

Valor de Retorno

+ +

Novo objeto Iterator.

+ +

Exemplos

+ +

Usando [@@iterator]()

+ +
var str = 'A\uD835\uDC68';
+
+var strIter = str[Symbol.iterator]();
+
+console.log(strIter.next().value); // "A"
+console.log(strIter.next().value); // "\uD835\uDC68"
+
+ +

Usando [@@iterator]() com for..of

+ +
var str = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A';
+
+for (var v of str) {
+  console.log(v);
+}
+// "A"
+// "\uD835\uDC68"
+// "B"
+// "\uD835\uDC69"
+// "C"
+// "\uD835\uDC6A"
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
StatusComment
{{SpecName('ES2015', '#sec-string.prototype-@@iterator', 'String.prototype[@@iterator]()')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-string.prototype-@@iterator', 'String.prototype[@@iterator]()')}}{{Spec2('ESDraft')}}
+ + + + + +

{{Compat("javascript.builtins.String.@@iterator")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/anchor/index.html b/files/pt-br/web/javascript/reference/global_objects/string/anchor/index.html new file mode 100644 index 0000000000..99207cfb2d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/anchor/index.html @@ -0,0 +1,76 @@ +--- +title: String.prototype.anchor() +slug: Web/JavaScript/Reference/Global_Objects/String/anchor +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor +--- +
{{JSRef}} {{deprecated_header}}
+ +
O método anchor() cria uma string começando com uma tag inicial <a name="...">, um texto e uma tag final </a>.
+ +
+

Não use este método. Ao invés, use DOM APIs. Além disso, a especificação HTML não permite mais que o elemento <a> tenha um atributo "name", portanto, esse método nem mesmo cria uma tag válida.

+
+ +

Sintaxe

+ +
str.anchor(name)
+ +

Parâmetros

+ +
+
name
+
Uma string que deve representar o valor do atributo name.
+
+ +

Valor retornado

+ +

Uma string começando com uma tag de início <a name="name">, depois o valor da string e, em seguida, uma tag de fim </a>.

+ +

Descrição

+ +

Não use este método. Ao invés, use DOM APIs. Além disso, a especificação HTML não permite mais que o elemento <a> tenha um atributo "name", portanto, esse método nem mesmo cria uma tag válida.

+ +

Exemplos

+ +

Usando anchor()

+ +
const nome = 'Ricardo';
+console.log(nome.anchor('https://developer.mozilla.org/pt-BR/)');
+
+ +

irá retornar o seguinte código HTML:

+ +
'<a name="https://developer.mozilla.org/pt-BR/">Ricardo</a>'
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.anchor', 'String.prototype.anchor')}}
+ + + + + +

{{Compat("javascript.builtins.String.anchor")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/big/index.html b/files/pt-br/web/javascript/reference/global_objects/string/big/index.html new file mode 100644 index 0000000000..cbfea513f1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/big/index.html @@ -0,0 +1,76 @@ +--- +title: String.prototype.big() +slug: Web/JavaScript/Reference/Global_Objects/String/big +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/big +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método big() cria um elemento HTML <big> fazendo com que o texto dentro dele seja exibido uma uma fonte maior.

+ +
+

Nota de uso: O elemento <big> foi removido no HTML5 e não deve mais ser usado. Em vez disso, web developers devem usar a propriedade CSS correspondente.

+
+ +

Sintaxe

+ +
str.big()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML.

+ +

Descrição

+ +

O método big() cria uma string dentro de uma tag <big>:
+ "<big>str</big>".

+ +

Exemplos

+ +

Usando big()

+ +

Os exemplos abaixo usam métodos do objeto String para alterar o tamanho de uma string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.small());     // <small>Olá, mundo</small>
+console.log(worldString.big());       // <big>Olá, mundo</big>
+console.log(worldString.fontsize(7)); // <fontsize=7>Olá, Mundo</fontsize>
+
+ +

Com o objeto element.style você pode selecionar o atributo style do elemento e manipulá-lo de forma mais genérica, por exemplo:

+ +
document.getElementById('#oIdDoElemento').style.fontSize = '2em';
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.big', 'String.prototype.big')}}
+ + + + + +

{{Compat("javascript.builtins.String.big")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/blink/index.html b/files/pt-br/web/javascript/reference/global_objects/string/blink/index.html new file mode 100644 index 0000000000..b6c77214bb --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/blink/index.html @@ -0,0 +1,71 @@ +--- +title: String.prototype.blink() +slug: Web/JavaScript/Reference/Global_Objects/String/blink +tags: + - Descontinuado + - JavaScript + - Prototipo + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/blink +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método blink() cria um elemento HTML <blink> que faz uma string piscar.

+ +
+

Aviso: A criação de textos que piscam é desaprovada por vários padrões de acessibilidade. O próprio elemento <blink> não é padrão e está obsoleto!

+
+ +

Sintaxe

+ +
str.blink()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <blink>.

+ +

Descrição

+ +

O método blink() cria uma string dentro de uma tag <blink>:
+ "<blink>str</blink>".

+ +

Exemplos

+ + + +

Os exemplos abaixo usam métodos do objeto String para alterar a formatação de uma string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.blink());   // <blink>Olá, mundo</blink>
+console.log(worldString.bold());    // <b>Olá, mundo</b>
+console.log(worldString.italics()); // <i>Olá, mundo</i>
+console.log(worldString.strike());  // <strike>Olá, mundo</strike>
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.blink', 'String.prototype.blink')}}
+ + + + + +

{{Compat("javascript.builtins.String.blink")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/bold/index.html b/files/pt-br/web/javascript/reference/global_objects/string/bold/index.html new file mode 100644 index 0000000000..bc34403734 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/bold/index.html @@ -0,0 +1,68 @@ +--- +title: String.prototype.bold() +slug: Web/JavaScript/Reference/Global_Objects/String/bold +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/bold +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método bold() cria um elemento HTML <b> que faz com que uma string seja exibida em negrito.

+ +

Sintaxe

+ +
str.bold()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <b> .

+ +

Descrição

+ +

O método bold() cria uma string dentro de uma tag <b>:
+ "<b>str</b>".

+ +

Exemplos

+ +

Usando bold()

+ +

Os exemplos abaixo usam métodos do objeto String para alterar a formatação de uma string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.blink());   // <blink>Olá, mundo</blink>
+console.log(worldString.bold());    // <b>Olá, mundo</b>
+console.log(worldString.italics()); // <i>Olá, mundo</i>
+console.log(worldString.strike());  // <strike>Olá, mundo</strike>
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.bold', 'String.prototype.bold')}}
+ + + + + +

{{Compat("javascript.builtins.String.bold")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/charat/index.html b/files/pt-br/web/javascript/reference/global_objects/string/charat/index.html new file mode 100644 index 0000000000..87866ac56b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/charat/index.html @@ -0,0 +1,290 @@ +--- +title: String.prototype.charAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charAt +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt +--- +
{{JSRef}}
+ +

O método charAt() retorna o caractere especificado a partir de uma string.

+ +

Sintaxe

+ +
str.charAt(index)
+ +

Parâmetros

+ +
+
index
+
Um inteiro entre 0 e str.length - 1. Se nenhum índice for definido, charAt() usará 0 como índice.
+
+ +

Valor retornado

+ +

Uma string representando o caractere no índice especificado. Uma string vazia se o index fornecido estiver fora do intervalo de índices da string str.

+ +

Descrição

+ +

Caracteres em uma string são indexados da esquerda para a direita. O índice do primeiro caractere é 0 (zero), e o índice do último caractere em uma string declarada como stringName é stringName.length - 1. Se o índice que você fornecer estiver fora do intervalo de índices da string, JavaScript retornará uma string vazia.

+ +

Se nenhum índice for passado para charAt(), 0 será usado por padrão.

+ +

Exemplos

+ +

Mostrando caracteres em diferente localizações em uma string

+ +

O exemplo a seguir mostra caracteres em diferentes locais em uma string "Brave new world":

+ +
var anyString = 'Brave new world';
+
+console.log("A letra no índice 0 é '" + anyString.charAt(0)   + "'");
+console.log("A letra no índice 1 é '" + anyString.charAt(1)   + "'");
+console.log("A letra no índice 2 é '" + anyString.charAt(2)   + "'");
+console.log("A letra no índice 3 é '" + anyString.charAt(3)   + "'");
+console.log("A letra no índice 4 é '" + anyString.charAt(4)   + "'");
+console.log("A letra no índice 99 é '" + anyString.charAt(999) + "'");
+
+ +

As linhas acima retornam o seguinte:

+ +
A letra no índice 0 é 'B'
+A letra no índice 1 é 'r'
+A letra no índice 2 é 'a'
+A letra no índice 3 é 'v'
+A letra no índice 4 é 'e'
+A letra no índice 99 é ''
+
+ +

Obtendo caracteres inteiros

+ +

O seguinte código fornece um meio de garantir que passar por um loop de string sempre forneça um caractere inteiro, mesmo se a string contiver caracteres que não estão no Plano Multilíngue Básico.

+ +
var str = 'A \uD87E\uDC04 Z'; // We could also use a non-BMP character directly
+for (var i = 0, chr; i < str.length; i++) {
+  if ((chr = getWholeChar(str, i)) === false) {
+    continue;
+  }
+  // Adapt this line at the top of each loop, passing in the whole string and
+  // the current iteration and returning a variable to represent the
+  // individual character
+
+  console.log(chr);
+}
+
+function getWholeChar(str, i) {
+  var code = str.charCodeAt(i);
+
+  if (isNaN(code)) {
+    return ''; // Position not found
+  }
+  if (code < 0xD800 || code > 0xDFFF) {
+    return str.charAt(i);
+  }
+
+  // High surrogate (could change last hex to 0xDB7F to treat high private
+  // surrogates as single characters)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    if (str.length <= (i + 1)) {
+      throw 'High surrogate without following low surrogate';
+    }
+    var next = str.charCodeAt(i + 1);
+      if (0xDC00 > next || next > 0xDFFF) {
+        throw 'High surrogate without following low surrogate';
+      }
+      return str.charAt(i) + str.charAt(i + 1);
+  }
+  // Low surrogate (0xDC00 <= code && code <= 0xDFFF)
+  if (i === 0) {
+    throw 'Low surrogate without preceding high surrogate';
+  }
+  var prev = str.charCodeAt(i - 1);
+
+  // (could change last hex to 0xDB7F to treat high private
+  // surrogates as single characters)
+  if (0xD800 > prev || prev > 0xDBFF) {
+    throw 'Low surrogate without preceding high surrogate';
+  }
+  // We can pass over low surrogates now as the second component
+  // in a pair which we have already processed
+  return false;
+}
+
+ +

Em um ambiente ECMAScript 2016 que permite atribuição desestruturada, o seguinte código é uma alternativa mais sucinta e um pouco mais flexível, pois faz incremento para uma variável de incremento automaticamente (se o caractere justificar que seja um par substituto).

+ +
var str = 'A\uD87E\uDC04Z'; // We could also use a non-BMP character directly
+for (var i = 0, chr; i < str.length; i++) {
+  [chr, i] = getWholeCharAndI(str, i);
+  // Adapt this line at the top of each loop, passing in the whole string and
+  // the current iteration and returning an array with the individual character
+  // and 'i' value (only changed if a surrogate pair)
+
+  console.log(chr);
+}
+
+function getWholeCharAndI(str, i) {
+  var code = str.charCodeAt(i);
+
+  if (isNaN(code)) {
+    return ''; // Position not found
+  }
+  if (code < 0xD800 || code > 0xDFFF) {
+    return [str.charAt(i), i]; // Normal character, keeping 'i' the same
+  }
+
+  // High surrogate (could change last hex to 0xDB7F to treat high private
+  // surrogates as single characters)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    if (str.length <= (i + 1)) {
+      throw 'High surrogate without following low surrogate';
+    }
+    var next = str.charCodeAt(i + 1);
+      if (0xDC00 > next || next > 0xDFFF) {
+        throw 'High surrogate without following low surrogate';
+      }
+      return [str.charAt(i) + str.charAt(i + 1), i + 1];
+  }
+  // Low surrogate (0xDC00 <= code && code <= 0xDFFF)
+  if (i === 0) {
+    throw 'Low surrogate without preceding high surrogate';
+  }
+  var prev = str.charCodeAt(i - 1);
+
+  // (could change last hex to 0xDB7F to treat high private surrogates
+  // as single characters)
+  if (0xD800 > prev || prev > 0xDBFF) {
+    throw 'Low surrogate without preceding high surrogate';
+  }
+  // Return the next character instead (and increment)
+  return [str.charAt(i + 1), i + 1];
+}
+
+ +

Corrigindo charAt() para suportar caracteres não-Plano-Multilíngüe-Básico (PMB)

+ +

Embora o exemplo anterior possa ser mais útil para programas que devem suportar caracteres não BMP (uma vez que não exige que o chamador saiba onde qualquer caractere não BMP pode aparecer), no caso de desejar, na escolha de um caractere por índice, para tratar os pares substitutos em uma string como os caracteres únicos que eles representam, pode-se usar o seguinte:

+ +
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))) {
+    // Go one further, since one of the "characters" is part of a surrogate pair
+    ret += str.charAt(idx + 1);
+  }
+  return ret;
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Initial definition.
{{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}}
+ +
+ + + + + + + + + + + + + + + + + + + +
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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/charcodeat/index.html b/files/pt-br/web/javascript/reference/global_objects/string/charcodeat/index.html new file mode 100644 index 0000000000..67bbbac67d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/charcodeat/index.html @@ -0,0 +1,213 @@ +--- +title: String.prototype.charCodeAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +tags: + - JavaScript + - Referencia + - String + - Unicode + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +--- +
{{JSRef}}
+ +

O método charCodeAt() retorna um número inteiro entre 0 e 65535 que representa a unidade de código UTF-16 no índice fornecido. A unidade de código UTF-16 corresponde ao ponto de código Unicode para pontos de códigos representáveis em uma única unidade de código UTF-16, mas também pode ser a primeira unidade de código de um par substituto não representável em uma única unidade de código UTF-16. Po exemplo: pontos de código Unicode  > (0x10000). Se você quer o valor do ponto de código inteiro, use codePointAt().

+ +

Sintaxe

+ +
str.charCodeAt(index)
+ +

Parâmetros

+ +
+
index
+
Um inteiro maior ou igual a 0 e menor que o comprimento da string. Se não for um número, o padrão será 0.
+
+ +

Valor retornado

+ +

Um número representando o valor de unidade de código UTF-16 do caractere no índice fornecido. O valor {{jsxref("Global_Objects/NaN", "NaN")}} é retornado se o índice estiver fora do intervalo aceitável.

+ +

Descrição

+ +

Os pontos de código Unicode variam de 01114111 (0x10FFFF). Os primeiros 128 pontos de código Unicode são uma correspondência direta da codificação de caracteres ASCII. (Para informações sobre Unicode, veja o JavaScript Guide.)

+ +
+

Nota: o charCodeAt() sempre retornará um valor menor do que 65536. Isso ocorre pois os pontos de código mais altos são representados por um par de pseudo-caracteres "substitutos" (de menor valor) que são usados para compreender o caracter real.
+
+ Por isso, para examinar (ou reproduzir) o caractere completo para valores de caracteres individuais de valor 65536 e acima, é necessário recuperar não apenas o charCodeAt(i), mas também o charCodeAt(i+1) (como se examinando/reproduzindo a string com duas letras), ou usar o codePointAt(i). Veja o exemplo 2 e 3 (abaixo).

+
+ +

Compatibilidade com versões anteriores: Em versões históricas (como JavaScript 1.2) o método charCodeAt() retorna um número indicando o valor de conjunto de códigos ISO-Latin-1 do caractere no dado índice. O conjunto de códigos ISO-Latin-1 varia de 0255. Os primeiros 128 (do 0 ao 127) são uma correspondência direta ao conjunto de caracteres ASCII.

+ +

Exemplos

+ +

Usando charCodeAt()

+ +

O exemplo a seguir retorna 65, o valor Unicode para A.

+ +
'ABC'.charCodeAt(0); // retorna 65
+
+ +

Corrigindo o charCodeAt() para manipular caracteres de Plano Multilingual não Básico se sua presença na string é desconhecida

+ +

Essa versão pode ser usada em loops for e afins quando não sabemos se caracteres de Plano Multilingual não Básico existem antes da posição do índice especificado.

+ +
function fixedCharCodeAt(str, idx) {
+  // ex. fixedCharCodeAt('\uD800\uDC00', 0); // 65536
+  // ex. fixedCharCodeAt('\uD800\uDC00', 1); // false
+  idx = idx || 0;
+  var code = str.charCodeAt(idx);
+  var hi, low;
+
+  // Substituto elevado (poderia mudar o último hex para 0xDB7F para tratar
+  // substitutos privados elevados como caracteres únicos)
+  if (0xD800 <= code && code <= 0xDBFF) {
+    hi = code;
+    low = str.charCodeAt(idx + 1);
+    if (isNaN(low)) {
+      throw 'High surrogate not followed by low surrogate in fixedCharCodeAt()';
+    }
+    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
+  }
+  if (0xDC00 <= code && code <= 0xDFFF) { // Low surrogate
+    // Retornamos false para permitir os loops pularem essa iteração já que já deveria
+    //ter tratado os substitutos elevados acima, na iteração anterior
+    return false;
+    /*hi = str.charCodeAt(idx - 1);
+    low = code;
+    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;*/
+  }
+  return code;
+}
+
+ +

Corrigindo o charCodeAt() para manipular caracteres de Plano Multilingual não Básico se sua presença na string é desconhecida

+ +
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);
+    // Vá um adiante, já que um dos "characters" é parte de um par substituto
+    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
+  }
+  return code;
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.charcodeat', 'String.prototype.charCodeAt')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/codepointat/index.html b/files/pt-br/web/javascript/reference/global_objects/string/codepointat/index.html new file mode 100644 index 0000000000..c2b9caa273 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/codepointat/index.html @@ -0,0 +1,143 @@ +--- +title: String.prototype.codePointAt() +slug: Web/JavaScript/Reference/Global_Objects/String/codePointAt +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt +--- +
{{JSRef}}
+ +

O método codePointAt() retorna um número inteiro não negativo que é o valor do ponto de código Unicode.

+ +
{{EmbedInteractiveExample("pages/js/string-codepointat.html","shorter")}}
+ + + +

Sintaxe

+ +
str.codePointAt(pos)
+ +

Parâmetros

+ +
+
pos
+
A posição de um elemento em uma string a partir do qual retorna o valor do ponto de código.
+
+ +

Valor retornado

+ +

Um número que representa o valor do ponto de código do caractere na pos fornecida. Se não houver nenhum elemento na pos, {{jsxref ("undefined")}} é retornado.

+ +

Descrição

+ +

Se não houver nenhum elemento na posição especificada, é retornado o valor de {{jsxref ("undefined")}}. Se nenhum par substituto UTF-16 começar na pos, a unidade de código na pos será retornada.

+ +

Polyfill

+ +

O seguinte código cria no objeto global String a função codePointAt() conforme especificado em ECMAScript 2015 para navegadores sem suporte nativo:

+ +
/*! https://mths.be/codepointat v0.2.0 by @mathias */
+if (!String.prototype.codePointAt) {
+  (function() {
+    'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
+    var defineProperty = (function() {
+      // IE 8 only supports `Object.defineProperty` on DOM elements
+      try {
+        var object = {};
+        var $defineProperty = Object.defineProperty;
+        var result = $defineProperty(object, object, object) && $defineProperty;
+      } catch(error) {}
+      return result;
+    }());
+    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) { // better `isNaN`
+        index = 0;
+      }
+      // Account for out-of-bounds indices:
+      if (index < 0 || index >= size) {
+        return undefined;
+      }
+      // Get the first code unit
+      var first = string.charCodeAt(index);
+      var second;
+      if ( // check if it’s the start of a surrogate pair
+        first >= 0xD800 && first <= 0xDBFF && // high surrogate
+        size > index + 1 // there is a next code unit
+      ) {
+        second = string.charCodeAt(index + 1);
+        if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate
+          // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+          return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+        }
+      }
+      return first;
+    };
+    if (defineProperty) {
+      defineProperty(String.prototype, 'codePointAt', {
+        'value': codePointAt,
+        'configurable': true,
+        'writable': true
+      });
+    } else {
+      String.prototype.codePointAt = codePointAt;
+    }
+  }());
+}
+
+ +

Exemplos

+ +

Usando codePointAt()

+ +
'ABC'.codePointAt(1)           // retorna 66
+'\uD800\uDC00'.codePointAt(0)  // retorna 65536
+
+'XYZ'.codePointAt(42)          // retorna undefined
+
+ +

Criando um loop com codePointAt()

+ +
for (let codePoint of '\ud83d\udc0e\ud83d\udc71\u2764') {
+   console.log(codePoint.codePointAt(0).toString(16))
+}
+// retorna '1f40e', '1f471', '2764' 
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.String.codePointAt")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/concat/index.html b/files/pt-br/web/javascript/reference/global_objects/string/concat/index.html new file mode 100644 index 0000000000..1ea9f9eacf --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/concat/index.html @@ -0,0 +1,138 @@ +--- +title: String.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/String/concat +tags: + - JavaScript + - Prototipo + - Referencia + - String + - concat() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/concat +--- +
{{JSRef}}
+ +

O método concat() combina o texto de duas ou mais strings e retorna uma nova string.

+ +

Sintaxe

+ +
str.concat(string2 [, ...stringN])
+ +

Parâmetros

+ +
+
string2...stringN
+
Strings para concatenar à string2.
+
+ +

Valor retornado

+ +

Uma nova string contendo a string original concatenada à string passada como parâmetro.

+ +

Descrição

+ +

A função concat() combina o texto de duas ou mais strings e retorna uma nova string. As alterações de texto de uma string não afetam a outra string.

+ +

Se o argumento passado não for do tipo string, o mesmo será convertido em uma string antes de ser concatenado.

+ +

Performance

+ +

É extremamente recomendado o uso dos operadores de atribuição (+, +=) em detrimento do método concat().

+ +

Exemplos

+ +

Usando concat()

+ +

O exemplo a seguir concatena uma string à outra string originando uma terceira string.

+ +
var hello = 'Olá, ';
+console.log(hello.concat('Kevin', ' tenha um bom dia.'));
+
+// retorna 'Olá, Kevin tenha um bom dia.'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/endswith/index.html b/files/pt-br/web/javascript/reference/global_objects/string/endswith/index.html new file mode 100644 index 0000000000..0e62545d41 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/endswith/index.html @@ -0,0 +1,103 @@ +--- +title: String.prototype.endsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/endsWith +tags: + - JavaScript + - Prototipo + - Referencia + - String + - endsWith() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith +--- +
{{JSRef}}
+ +
+ +

O método endsWith() indica se uma string termina com determinados caracteres, retornando true ou false.

+ +

Sintaxe

+ +
str.endsWith(stringSendoBuscada[, tamanho])
+ +

Parâmetros

+ +
+
stringSendoBuscada
+
Os caracteres a serem pesquisados no final da string.
+
tamanho
+
Opcional. Se fornecido, substitui o tamanho da string passada. Se omitido, o valor padrão é o tamanho da string.
+
+ +

Valor retornado

+ +

true se os caracteres passados forem encontrados no final da string. Do contrário, retorna false.

+ +

Descrição

+ +

Este método permite que você verifique se uma string termina ou não com determinados caracteres. Este método é case-sensitive.

+ +

Exemplos

+ +

Usando endsWith()

+ +
var str = 'Ser ou não ser, eis a questão';
+
+console.log(str.endsWith('questão')); // retorna true
+console.log(str.endsWith('ser'));     // retorna false
+console.log(str.endsWith('ser', 14)); // retorna true
+
+ +

Polyfill

+ +

Este método foi adicionada na especificação ECMAScript 6 e talvez não esteja disponível em todos as implementações JavaScript ainda. No entanto, você pode criá-lo adicionando o seguinte código:

+ +
if (!String.prototype.endsWith)
+  String.prototype.endsWith = function(searchStr, Position) {
+      // This works much better than >= because
+      // it compensates for NaN:
+      if (!(Position < this.length))
+        Position = this.length;
+      else
+        Position |= 0; // round position
+      return this.substr(Position - searchStr.length,
+                         searchStr.length) === searchStr;
+  };
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}{{Spec2('ES6')}}Definição inicial.
{{SpecName('ESDraft', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}{{Spec2('ESDraft')}}
+ + + + + +

{{Compat("javascript.builtins.String.endsWith")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/fixed/index.html b/files/pt-br/web/javascript/reference/global_objects/string/fixed/index.html new file mode 100644 index 0000000000..4a6004f05d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/fixed/index.html @@ -0,0 +1,66 @@ +--- +title: String.prototype.fixed() +slug: Web/JavaScript/Reference/Global_Objects/String/fixed +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - fixed() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método fixed() cria um elemento HTML <tt> que faz com que uma string seja exibida em uma fonte de densidade fixa.

+ +

Sintaxe

+ +
str.fixed()
+ +

Valor retornado

+ +

Uma string que representa o elemento HTML <tt>.

+ +

Descrição

+ +

O método fixed() cria uma string dentro de uma tag <tt>:
+ "<tt>str</tt>".

+ +

Exemplos

+ +

Usando fixed()

+ +

O exemplo a seguir usa o método fixed() para alterar a formatação de uma string:

+ +
var worldString = 'Olá, mundo';
+console.log(worldString.fixed()); // "<tt>Olá, mundo</tt>"
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.fixed', 'String.prototype.fixed')}}
+ + + + + +

{{Compat("javascript.builtins.String.fixed")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/fontcolor/index.html b/files/pt-br/web/javascript/reference/global_objects/string/fontcolor/index.html new file mode 100644 index 0000000000..aafc3074e9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/fontcolor/index.html @@ -0,0 +1,84 @@ +--- +title: String.prototype.fontcolor() +slug: Web/JavaScript/Reference/Global_Objects/String/fontcolor +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - fontcolor() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método fontcolor() cria um elemento HTML <font> que faz com que uma string seja exibida na cor especificada.

+ +
+

Nota de uso: O elemento <font> foi removido do HTML5 e não deve mais ser usado. Em vez disso, web developers devem usar a propriedade CSS correspondente.

+
+ +

Sintaxe

+ +
str.fontcolor(color)
+ +

Parâmetros

+ +
+
color
+
Deve ser um string que expresse uma cor em formato hexadecimal ou o nome, em Inglês, de uma cor. Os nomes das cores estão listados na referência de cores CSS.
+
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <font>.

+ +

Descrição

+ +

Se você expressar uma cor em formato hexadecimal, deve usar o formato rrggbb. Por exemplo, os valores RGB hexadecimais para salmão são vermelho = FA, verde = 80 e azul = 72, portanto, o tripleto RGB para salmão é "FA8072".

+ +

Exemplos

+ +

Usando fontcolor()

+ +

O exemplo a seguir usa o método fontcolor() para alterar a cor de uma string, produzindo uma string com a tag HTML <font>.

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.fontcolor('red') +  ' está vermelho nesta linha');
+// '<font color="red">Olá, mundo</font> está vermelho nesta linha'
+
+console.log(worldString.fontcolor('FF00') + ' está vermelho em hexadecimal nesta linha');
+// '<font color="FF00">Olá, mundo</font> está vermelho em hexadecimal nesta linha'
+
+ +

Com o objeto element.style você pode obter o atributo style do elemento e manipulá-lo de forma mais genérica, por exemplo:

+ +
document.getElementById('#oIdDoElemento').style.color = 'red';
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}
+ + + + + +

{{Compat("javascript.builtins.String.fontcolor")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/fontsize/index.html b/files/pt-br/web/javascript/reference/global_objects/string/fontsize/index.html new file mode 100644 index 0000000000..655a012b92 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/fontsize/index.html @@ -0,0 +1,83 @@ +--- +title: String.prototype.fontsize() +slug: Web/JavaScript/Reference/Global_Objects/String/fontsize +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - fontsize() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método fontsize() cria um elemento HTML <font> que faz com que uma string seja exibida no tamanho da fonte especificada.

+ +
+

Nota de uso: O elemento <font> foi removido do HTML5 e não deve mais ser usado. Em vez disso, web developers devem usar a propriedade CSS correspondente.

+
+ +

Sintaxe

+ +
str.fontsize(size)
+ +

Parâmetros

+ +
+
size
+
Um número inteiro entre 1 e 7.
+
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <font>.

+ +

Descrição

+ +

Ao especificar o tamanho como um inteiro, você define o tamanho da fonte do texto para um dos 7 tamanhos definidos. Ao especificar size como uma string como "-2", você ajusta o tamanho da fonte do texto em relação ao tamanho definido na tag <basefont>.

+ +

Exemplos

+ +

Usando fontsize()

+ +

O exemplo a seguir usa métodos do objeto global String para alterar o tamanho de uma string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.small());     // <small>Olá, mundo</small>
+console.log(worldString.big());       // <big>Olá, mundo</big>
+console.log(worldString.fontsize(7)); // <font size="7">Olá, mundo</fontsize>
+
+ +

Com o objeto element.style você pode obter o atributo style do elemento e manipulá-lo de forma mais genérica, por exemplo:

+ +
document.getElementById('#oIdDoElemento').style.fontSize = '0.7em';
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}
+ + + + + +

{{Compat("javascript.builtins.String.fontsize")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/fromcharcode/index.html b/files/pt-br/web/javascript/reference/global_objects/string/fromcharcode/index.html new file mode 100644 index 0000000000..23a8de8f44 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/fromcharcode/index.html @@ -0,0 +1,142 @@ +--- +title: String.fromCharCode() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +tags: + - JavaScript + - Referencia + - String + - UTF-16 + - Unicode + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +--- +
{{JSRef}}
+ +

O método String.fromCharCode() retorna uma string criada ao usar uma sequência específica de valores Unicode.

+ +

Sintaxe

+ +
String.fromCharCode(num1[, ...[, numN]])
+ +

Parâmetros

+ +
+
num1, ..., numN
+
Uma sequência de números que devem ser valores UTF-16. O tamanho é entre 0 e 65535 (0xFFFF). Números maiores do que 0xFFFF são desconsiderados. Nenhuma verificação de vadalida é realizada.
+
+ +

Valor retornado

+ +

Uma string contendo os caracteres correspondentes à sequência de valores Unicode.

+ +

Descrição

+ +

Esse método retorna uma string e não um objeto {{jsxref("String")}}.

+ +

Como fromCharCode() é um método estático de {{jsxref("String")}}, você sempre o usará como String.fromCharCode(), ao invés de um método de um objeto {{jsxref("String")}} que você tenha criado.

+ +

Exemplos

+ +

Usando fromCharCode()

+ +

O seguinte exemplo retorna a string "ABC".

+ +
String.fromCharCode(65, 66, 67);  // retorna "ABC"
+
+ +

Fazendo-o funcionar com valores maiores

+ +

Embora os valores Unicode mais comuns possam ser representados com um número de 16 bits (como experado durante a padronização do JavaScript) e o fromCharCode() possa ser usado para retornar um único caracter dos valores mais comuns (por exemplo: valores UCS-2 que são os melhores subconjuntos do UTF-16 com os caractres mais comuns), a fim de resolver TODOS os valores Unicode legais (até 21 bits) o método fromCharCode() sozinho é inadequado. Como os caracteres de ponto de código mais alto usam 2 (valor menor) numeros "substitutos" para formar um único caracter, {{jsxref("String.fromCodePoint()")}} (parte do padrão ES2015) pode ser usado para retornar tal par e ainda representar adequadamente esses caracteres de valores altos.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.5.3.2', 'StringfromCharCode')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-string.fromcharcodes', 'String.fromCharCode')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-string.fromcharcodes', 'String.fromCharCode')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticasChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticasAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/pt-br/web/javascript/reference/global_objects/string/fromcodepoint/index.html new file mode 100644 index 0000000000..f8b2bfbf7d --- /dev/null +++ b/files/pt-br/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: + - JavaScript + - Referencia + - String + - UTF-16 + - Unicode + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +--- +
{{JSRef}}
+ +

O método estático String.fromCodePoint() retorna uma seqüência de caracteres criado usando a seqüência especificada de pontos de código.

+ +

Syntax

+ +
String.fromCodePoint(num1[, ...[, numN]])
+ +

Parâmetros

+ +
+
num1, ..., numN
+
Uma sequência de pontos de código.
+
+ +

Exceções

+ +
+
{{jsxref("RangeError")}}
+
+

O {{jsxref("RangeError")}} é lançado se um ponto de código Unicode inválido é dado (por exemplo, "RangeError: NaN não é um ponto de código válido").

+
+
+ +

Descrição

+ +

Como o fromCodePoint() é um método estático do {{jsxref("String")}}, você sempre vai chamar esse método como String.fromCodePoint()✔ em vez de usá-lo como um método de uma string que você criar, como "minha string".fromCodePoint()❌.

+ +

Exemplos

+ +

Usando 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() alone cannot get the character at such a high code point
+// The following, on the other hand, can return a 4-byte character as well as the
+// usual 2-byte ones (i.e., it can return a single character which actually has
+// a string length of 2 instead of 1!)
+console.log(String.fromCodePoint(0x2F804)); // or 194564 in decimal
+
+ +

Polyfill

+ +

O método String.fromCodePoint  foi adicionado ao padrão ECMAScript na versão 6 e pode não ser suportado em todos os navegadores da Web ou em todos os ambientes ainda. Use o código abaixo para um polyfill:

+ +
/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
+if (!String.fromCodePoint) {
+  (function() {
+    var defineProperty = (function() {
+      // IE 8 only supports `Object.defineProperty` on DOM elements
+      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`, or `-Infinity`
+          codePoint < 0 ||              // not a valid Unicode code point
+          codePoint > 0x10FFFF ||       // not a valid Unicode code point
+          floor(codePoint) != codePoint // not an integer
+        ) {
+          throw RangeError('Invalid code point: ' + codePoint);
+        }
+        if (codePoint <= 0xFFFF) { // BMP code point
+          codeUnits.push(codePoint);
+        } else { // Astral code point; split in surrogate halves
+          // 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;
+    }
+  }());
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}{{Spec2('ES6')}}Initial definition.
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support +

{{CompatChrome("41")}}

+
{{CompatGeckoDesktop("29")}}{{CompatNo}}{{CompatOpera("28")}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile("29")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/includes/index.html b/files/pt-br/web/javascript/reference/global_objects/string/includes/index.html new file mode 100644 index 0000000000..c76b927cf3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/includes/index.html @@ -0,0 +1,108 @@ +--- +title: String.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/String/includes +tags: + - ES6 + - JavaScript + - Prototipo + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/includes +--- +
{{JSRef}}
+ +

O método includes() determina se um conjunto de caracteres pode ser encontrado dentro de outra string, retornando true ou false.

+ +

Sintaxe

+ +
str.includes(searchString[, position])
+ +

Parâmetros

+ +
+
searchString
+
É o conjunto de caracteres que será pesquisado dentro desta string.
+
position
+
Opcional. É um número inteiro que indica por onde a busca iniciará, referente ao índice da string a ser pesquisada. O valor padrão é 0.
+
+ +

Valor retornado

+ +

true se o conjunto de caracteres for encontrado em algum lugar dentro da string sendo pesquisada. Do contrário, retorna false.

+ +

Descrição

+ +

Este método permite conferir se uma string contém um determinado conjunto de caracteres.

+ +

Case-sensitivity

+ +

O método includes() é case sensitive. Por exemplo, a seguinte expressão retorna false:

+ +
'Bandeira do Brasil'.includes('brasil'); // retorna false
+
+ +

Exemplos

+ +

Utilizando includes()

+ +
var str = 'Ser, ou não ser, eis a questão.';
+
+console.log(str.includes('Ser'));         // true
+console.log(str.includes('questão'));     // true
+console.log(str.includes('não existe'));  // false
+console.log(str.includes('ser', 1));      // true
+console.log(str.includes('SER'));         // false
+
+ +

Implementação

+ +

Este método foi adicionado à especificação ECMAScript 6 e pode não estar disponível em todas as implementações JavaScript. No entanto, você pode facilmente implementar este método:

+ +
if (!String.prototype.includes) {
+  String.prototype.includes = function() {'use strict';
+    return String.prototype.indexOf.apply(this, arguments) !== -1;
+  };
+}
+
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-string.prototype.includes', 'String.prototype.includes')}}{{Spec2('ES6')}}Definição inicial.
+ + + +
{{Compat("javascript.builtins.String.includes")}}
+ +

String.prototype.contains

+ +

No Firefox 18 - 39, o nome deste método era contains(). Ele foi renomeado para includes() no {{bug(1102219)}} devido ao seguinte motivo:

+ +

Foi reportado que alguns websites que utilizam MooTools 1.2 não funcionavam no Firefox 17. Esta versão do MooTools verifica se String.prototype.contains() existe e, se não existir, MooTools adiciona sua própria função. Com a implementação desta função no Firefox 17, o comportamento desta validação mudou de uma forma que códigos baseados na implementação da função String.prototype.contains() do MooTools parassem de funcionar. Como resultado, esta mudança foi desabilitada no Firefox 17 e String.prototype.contains() foi disponibilizada na versão seguinte, no Firefox 18.

+ +

MooTools 1.3 força sua própria versão do String.prototype.contains(), portanto websites baseados nela não devem parar de funcionar. No entanto, você deve notar que a assinatura do MooTools 1.3 e a assinatura ECMAScript 6 diferem (no segundo argumento). Posteriormente, MooTools 1.5+ mudou sua assinatura para o padrão ES6.

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/index.html b/files/pt-br/web/javascript/reference/global_objects/string/index.html new file mode 100644 index 0000000000..e7ab10819b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/index.html @@ -0,0 +1,338 @@ +--- +title: String +slug: Web/JavaScript/Reference/Global_Objects/String +tags: + - JavaScript + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +

{{JSRef("Global_Objects", "String")}}

+ +

Sumário

+ +

O objeto global String  é um construtor para strings, ou uma sequência de caracteres.

+ +

Sintaxe

+ +

As formas literais de declaração de String  são:

+ +
'string text'
+"string text"
+"中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어"
+ +

Além da forma regular, de caracteres de impressão, caracteres especiais podem ser codificados usando a escape notation (notação com barra invertida):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodigoSaida
\0o  caractere NULL
\'aspas simples
\"aspas duplas
\\barra invertida
\nnova linha
\rcarriage return
\vtab vertical
\ttab
\bbackspace
\fform feed
\uXXXXunicode codepoint
\xXXthe Latin-1 character
+ +

Ou, usando o objeto global String diretamente:

+ +
String(thing)
+new String(thing)
+ +

Parâmetros

+ +
+
thing
+
Qualquer coisa a ser convertida para uma string.
+
+ +

Descrição

+ +

Strings são úteis para guardar dados que podem ser representados em forma de texto. Uma das operações mais usadas nas strings é checar seu {{jsxref("String.length", "tamanho")}}, para construir e concatená-las  usando os operadores + e +=, checando pela existência ou posição de substrings com o método {{jsxref("String.indexOf", "indexOf")}} , ou extrair substrings com o método {{jsxref("String.substring", "substring")}}.

+ +

Acesso à caractere

+ +

Há duas maneiras de acessar um caractere individual em uma string. A primeira é o método {{jsxref("String.charAt", "charAt")}}:

+ +
return 'cat'.charAt(1); // returns "a"
+
+ +

A outra maneira (introduzido no ECMAScript 5) consiste em tratar a string como um objeto Array-like, onde os caráteres individuais correspondem a um índice numérico:

+ +
return 'cat'[1]; // returns "a"
+
+ +

Para acesso de caracteres usando uma notação de colchetes, tentando deletar ou designar um valor a estas propriedades não haverá sucesso. As propriedades envolvidas não são nem escritas ou configuráveis. (Veja {{jsxref("Object.defineProperty")}} para mais informações.)

+ +

Comparando strings

+ +

Desenvolvedores de C têm a função strcmp() para comparar strings. No JavaScript, basta usar o operador maior que e menor que:

+ +
var a = "a";
+var b = "b";
+if (a < b) // verdadeiro
+  print(a + " é menor que " + b);
+else if (a > b)
+  print(a + " é maior que " + b);
+else
+  print(a + " e " + b + " são iguais.");
+
+ +

Um resultado similar pode ser alcançado usando o método  {{jsxref("String.localeCompare", "localeCompare")}} herdado pelas instâncias de String.

+ +

Distinção entre String primitiva e objetos String

+ +

Note que o JavaScript distingue entre objetos String e valores de string primitivas. (O mesmo é válido para {{jsxref("Global_Objects/Boolean", "Boolean")}} e {{jsxref("Global_Objects/Number", "Numbers")}}.)

+ +

Strings literais (definidas por aspas duplas ou aspas simples) e strings retornadas da chamada da função String fora do contexto de uma função construtora (sem o uso da palavra chave new) são strings primitivas. O JavaScript converte automaticamente strings primitivas para objetos do tipo String, por isso é possível utilizar os métodos do objeto String através de strings primitivas. Em contextos onde um método é invocado de uma string primitiva ou uma propriedade é procurada, o JavaScript irá criar um objeto com a string primitiva e executar o método ou acessar a propriedade procurada.

+ +
var s_prim = "foo";
+var s_obj = new String(s_prim);
+
+console.log(typeof s_prim); // Loga "string"
+console.log(typeof s_obj);  // Loga "object"
+
+ +

String primitivas e objetos String também dão resultados diferentes quando usado {{jsxref("Global_Objects/eval", "eval")}}. Primitivas passadas para eval são tratadas como código fonte; Objetos String são tratados como todos os outros objetos são, retornando o objeto. Por exemplo:

+ +
s1 = "2 + 2";               // cria uma string primitiva
+s2 = new String("2 + 2");   // cria um objeto de String
+console.log(eval(s1));      // retorna o número 4
+console.log(eval(s2));      // retorna a string "2 + 2"
+
+ +

Por estas razões, o código pode quebrar quando encontra objetos String quando espera na verdade uma string primitiva, apesar de que geralmente autores não precisam se preocupar com a distinção.

+ +

Um objeto String pode ser convertido sempre para sua contraparte primitiva com o método {{jsxref("String.valueOf", "valueOf")}}.

+ +
console.log(eval(s2.valueOf())); // retorna o número 4
+
+ +
Note: Para uma outra possível abordagem para strings em JavaScript, favor ler o artigo sobre StringView – a C-like representation of strings based on typed arrays.
+ +

Propriedades

+ +
+
{{jsxref("String.prototype")}}
+
Permite a adição de propriedades a um objeto String.
+
+ +
{{jsOverrides("Function", "Properties", "prototype")}}
+ +

Métodos

+ +
+
{{jsxref("String.fromCharCode()")}}
+
Retorna uma string criada usando a sequência especificada de valores Unicode.
+
{{jsxref("String.fromCodePoint()")}} {{experimental_inline}}
+
Retorna uma string criada usando a sequência especificada de posições de código.
+
+ +
{{jsOverrides("Function", "Methods", "fromCharCode", "fromCodePoint")}}
+ +

Métodos genéricos de Strings

+ +

Métodos de instância String também estão disponíveis no Firefox a partir de JavaScript 1.6 (embora não faça parte dos padrões ECMAScript) no objeto String para aplicar métodos String a qualquer objeto:

+ +
var num = 15;
+alert(String.replace(num, /5/, '2'));
+
+ +

Genéricos também estão disponíveis em métodos {{jsxref("Global_Objects/Array", "Array")}}.

+ +

O seguinte é uma implementação para fornecer suporte a navegadores sem suporte:

+ +
/*globals define*/
+// Assume que todos os métodos de instância String fornecidos
+// já presentes (podem ser usadas implementações para este se não disponível)
+(function () {
+    'use strict';
+
+    var i,
+        // Nós também poderíamos construir o array de métodos com os seguintes,
+        // mas o método getOwnPropertyNames() não é implementável:
+        // 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]);
+    }
+}());
+
+ +

Instâncias de String

+ +

Propriedades

+ +

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Propriedades')}}

+ +

Métodos

+ +

Métodos não relacionados ao HTML

+ +

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Métodos_não_relacionados_ao_HTML')}}

+ +

Métodos de envoltório HTML

+ +

{{page('/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Métodos_de_envoltório_HTML')}}

+ +

Exemplos

+ +

Conversão de String

+ +

É possível usar String como uma alternativa "mais segura" {{jsxref("String.toString", "toString")}}, como embora normalmente ainda chama o toString subjacente, também funciona para nullundefined. Por exemplo:

+ +
var outputStrings = [];
+for (let i = 0, n = inputValues.length; i < n; ++i) {
+  outputStrings.push(String(inputValues[i]));
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 1st Edition.StandardDefinições iniciais.
{{SpecName('ES5.1', '#sec-15.5', 'String')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string-objects', 'String')}}{{Spec2('ES6')}} 
+ +

Compatibilidade de Browser

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support0.2{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/indexof/index.html b/files/pt-br/web/javascript/reference/global_objects/string/indexof/index.html new file mode 100644 index 0000000000..fc62ad78a0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/indexof/index.html @@ -0,0 +1,158 @@ +--- +title: String.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/indexOf +tags: + - JavaScript + - Prototipo + - Referencia + - String + - indexOf() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf +--- +

{{JSRef("Global_Objects", "String")}}

+ +

Sumário

+ +

O método indexOf() retorna o índice da primeira ocorrência do valor fornecido em searchValue, começando a busca a partir de fromIndex. Retorna -1 se o valor não for encontrado.

+ +
+

Nota: Para o método de Array, veja {{jsxref("Array.prototype.indexOf()")}}.

+
+ +

Sintaxe

+ +
str.indexOf(searchValue[, fromIndex])
+ +

Parâmetros

+ +
+
searchValue
+
Uma string representando o valor a ser buscado. Se nenhuma string for fornecida explicitamente, searchValue terá o valor de undefined, e esse valor será buscado na string atual. Por exemplo, 'undefined'.indexOf() retornará 0, já que undefined é encontrado na posição 0. Já 'undefine'.indexOf() retornará -1, já que undefined não pôde ser encontrado.
+
fromIndex
+
Um número inteiro representando um índice da string original a partir da qual a busca deve começar. Por padrão é 0. Se fromIndex < 0, a string toda é percorrida (equivale a passar 0). Se fromIndex >= str.length, o método retornará -1, já que a busca será iniciada após o final da string.
+
+ +

Valor retornado

+ +

O índice da primeira ocorrência de searchValue, ou -1 se não for encontrado.

+ +

Uma string vazia no searchValue produz resultados estranhos. Sem fromIndex, ou com qualquer fromIndex menor que o comprimento da string, o valor retornado é o próprio fromIndex:

+ +
'Olá, mundo'.indexOf('') // retorna 0
+'Olá, mundo'.indexOf('', 0) // retorna 0
+'Olá, mundo'.indexOf('', 3) // retorna 3
+'Olá, mundo'.indexOf('', 8) // retorna 8
+ +

Entretanto, com qualquer fromIndex igual ou maior que o comprimento da string, o valor retornado é o comprimento da string:

+ +
'Olá, mundo'.indexOf('', 11) // retorna 10
+'Olá, mundo'.indexOf('', 13) // retorna 10
+'Olá, mundo'.indexOf('', 22) // retorna 10
+ +

Descrição

+ +

Caracteres em uma string são indexados da esquerda para a direita. O índice do primeiro caractere é 0, e o índice do último caractere de uma string chamada stringName é stringName.length - 1.

+ +
"Blue Whale".indexOf("Blue");     // retorna  0
+"Blue Whale".indexOf("Whale");    // retorna  5
+"Blue Whale".indexOf("Blute");    // retorna -1
+"Blue Whale".indexOf("Whale", 0); // retorna  5
+"Blue Whale".indexOf("Whale", 5); // retorna  5
+"Blue Whale".indexOf("Whale", 7); // retorna -1
+"Blue Whale".indexOf("");         // retorna  0
+"Blue Whale".indexOf("", 9);      // retorna  9
+"Blue Whale".indexOf("", 10);     // retorna 10
+"Blue Whale".indexOf("", 11);     // retorna 10
+ +

Verificando ocorrências

+ +

Note que um retorno 0 não implica em true, e -1 não implica em false. Portanto, a maneira correta de se verificar se uma string específica está contida em outra string seria:

+ +
"Blue Whale".indexOf("Blue") !== -1; // true
+"Blue Whale".indexOf("Bloe") !== -1; // false
+ +

Exemplos

+ +

Usando indexOf()

+ +

O exemplo a seguir usa indexOf() para localizar valores dentro da string "Brave new world".

+ +
var anyString = "Brave new world";
+
+console.log("O índice do primeiro w partindo do começo é " + anyString.indexOf("w"));
+// Exibe 8
+
+console.log("O índice de 'new' partindo do começo é " + anyString.indexOf("new"));
+// Exibe 6
+
+ +

indexOf() e sensibilidade a maiúsculas e minúsculas

+ +

O exemplo a seguir define duas variáveis string. Ambas contém a mesma string, exceto que a segunda string tem letras maiúsculas. O primeiro método {{domxref("console.log()")}} exibe 19. Porém, como o método indexOf é sensível a letras maiúsculas e minúsculas, a string "cheddar" não é encontrada em myCapString, portanto, o segundo método {{domxref("console.log()")}} exibe -1.

+ +
var myString    = "brie, pepper jack, cheddar";
+var myCapString = "Brie, Pepper Jack, Cheddar";
+
+console.log('myString.indexOf("cheddar") é ' + myString.indexOf("cheddar"));
+// Exibe 19
+console.log('myCapString.indexOf("cheddar") é ' + myCapString.indexOf("cheddar"));
+// Exibe -1
+ +

Usando indexOf() para contar as ocorrências de uma letra numa string

+ +

O exemplo a seguir atribui à variável count o número de ocorrências da letra x na string str:

+ +
const str = 'Serx ou não ser, eisx a questão'
+count = 0;
+pos = str.indexOf("x"); // retorna 3
+
+while ( pos != -1 ) {
+   count++;
+   pos = str.indexOf( "x", pos + 1 /* o mesmo que 3 + 1 */ );
+}
+
+console.log(count);
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoSituaçãoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{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')}}
+ + + +

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

+ +

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/italics/index.html b/files/pt-br/web/javascript/reference/global_objects/string/italics/index.html new file mode 100644 index 0000000000..62467f37c6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/italics/index.html @@ -0,0 +1,68 @@ +--- +title: String.prototype.italics() +slug: Web/JavaScript/Reference/Global_Objects/String/italics +tags: + - Descontinuado + - JavaScript + - Prototipo + - String + - italics() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/italics +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método italics() cria um elemento HTML <i> que faz com que uma string fique em itálico.

+ +

Sintaxe

+ +
str.italics()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <i>.

+ +

Descrição

+ +

O método italics() cria uma string dentro de uma tag <i>:
+ "<i>str</i>".

+ +

Exemplos

+ +

Usando italics()

+ +

O exemplo a seguir usa métodos do objeto global String para alterar a formatação de uma string:

+ +
var worldString = 'Olá, mundo';
+console.log(worldString.blink());  // <blink>Olá, mundo</blink>
+console.log(worldString.bold());  // <b>Olá, mundo</b>
+console.log(worldString.italics()); // <i>Olá, mundo</i>
+console.log(worldString.strike());  // <strike>Olá, mundo</strike>
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.italics', 'String.prototype.italics')}}
+ + + + + +

{{Compat("javascript.builtins.String.italics")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/lastindexof/index.html b/files/pt-br/web/javascript/reference/global_objects/string/lastindexof/index.html new file mode 100644 index 0000000000..893b27054c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/lastindexof/index.html @@ -0,0 +1,162 @@ +--- +title: String.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +tags: + - JavaScript + - Prototipo + - Referencia + - String + - lastIndexOf + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +--- +
{{JSRef}}
+ +

O método lastIndexOf() retorna o índice da última ocorrência do valor especificado encontrado na {{jsxref("String")}}. Quando fromIndex é especificado, a pesquisa é realizada de trás para frente. Retorna -1 se o valor não for encontrado.

+ +

Sintaxe

+ +
str.lastIndexOf(searchValue[, fromIndex])
+ +

Parâmetros

+ +
+
searchValue
+
Uma string representando o valor a ser procurado. Se searchValue for uma string vazia, str.length é retornado.
+
fromIndex
+
Opcional. O índice no qual a pesquisa será iniciada de trás para frente. O valor padrão é +Infinity. Se fromIndex >= str.length, toda string é pesquisada. Se fromIndex < 0, o comportamento será o mesmo que seria com o índice 0.
+
+ +

Valor retornado

+ +

O índice da última ocorrência referente ao valor especificado em searchValue. É retornado -1 se nada for encontrado.

+ +

Descrição

+ +

Os caracteres em uma string são indexados da esquerda para a direita. O índice do primeiro caractere é 0, e o índice do último caractere é str.length - 1.

+ +
'ricardo'.lastIndexOf('r');     // retorna 4
+'ricardo'.lastIndexOf('a', 3);  // retorna 3
+'ricardo'.lastIndexOf('a', 0);  // retorna -1
+'ricardo'.lastIndexOf('x');     // retorna -1
+'ricardo'.lastIndexOf('r', -5); // retorna 0
+'ricardo'.lastIndexOf('r', 0);  // retorna 0
+'ricardo'.lastIndexOf('');      // retorna 7
+'ricardo'.lastIndexOf('', 2);   // retorna 2
+
+ +

Sensível a maiúsculas e minúsculas

+ +

O método lastIndexOf() é sensível a letras maiúsculas e minúsculas. Por exemplo, a seguinte expressão retorna -1:

+ +
'Blue Whale, Killer Whale'.lastIndexOf('blue'); // retorna -1
+
+ +

Exemplos

+ +

Usando lastIndexOf()

+ +

O seguinte exemplo usa lastIndexOf() para localizar valores nas string "Brave new world".

+ +
var anyString = 'Brave new world';
+
+console.log('O índice do primeiro w a partir do final é ' + anyString.lastIndexOf('w'));
+// retorna 10
+
+console.log('O índice de "new" a partir do final é ' + anyString.lastIndexOf('new'));
+// retorna 6
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentários
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{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')}}
{{SpecName('ESDraft', '#sec-string.prototype.lastindexof', 'String.prototype.lastIndexOf')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/length/index.html b/files/pt-br/web/javascript/reference/global_objects/string/length/index.html new file mode 100644 index 0000000000..63fd9dac65 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/length/index.html @@ -0,0 +1,142 @@ +--- +title: String.length +slug: Web/JavaScript/Reference/Global_Objects/String/length +tags: + - JavaScript + - Propriedade + - Referencia + - String + - Tamanho da string + - length +translation_of: Web/JavaScript/Reference/Global_Objects/String/length +--- +
{{JSRef}}
+ +

A propriedade length de um objeto {{jsxref("String")}} contém o comprimento da string. length é uma propriedade read-only (somente leitura) de instâncias de string.

+ +

Sintaxe

+ +
str.length
+ +

Descrição

+ +

Essa propriedade retorna o número de unidades de código presentes na string. {{interwiki("wikipedia", "UTF-16")}}, a codificação utilizada pelo JavaScript, utiliza uma unidade de código de 16-bits para representar os caracteres mais comuns, mas precisa usar duas unidades para caracteres menos usados, então é possível que o valor retornado por length não seja exatamente o número de caracteres na string.

+ +

ECMASCript 2016 (ed. 7) estabeleceu um comprimento máximo de 2^53 - 1 elementos. Anteriormente, nenhum comprimento máximo havia sido especificado. No Firefox, as strings têm um comprimento (length) máximo de 2**30 - 2 (~ 1 GB). Em versões anteriores ao Firefox 65, o comprimento máximo era 2**28 - 1 (~ 256 MB).

+ +

Para uma string vazia, length é 0.

+ +

A propriedade estática String.length retorna o valor 1.

+ +

Exemplos

+ +

Uso básico

+ +
var x = 'Mozilla';
+var empty = '';
+
+console.log('Mozilla possui ' + x.length + ' unidades de código de comprimento');
+/* "Mozilla possui 7 unidades de código de comprimento" */
+
+console.log('A string vazia possui um comprimento de ' + empty.length);
+/* "A string vazia possui um comprimento de 0" */
+
+ +

Atribuindo valor ao comprimento

+ +
let myString = "campainhas";
+
+// A tentativa de atribuir um valor à propriedade .length
+// de uma string não tem efeito observável.
+
+myString.length = 4;
+console.log(myString);
+// retorna  "campanhias"
+console.log(myString.length);
+// retorna 10
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentários
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementada no 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}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/link/index.html b/files/pt-br/web/javascript/reference/global_objects/string/link/index.html new file mode 100644 index 0000000000..547ded08d4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/link/index.html @@ -0,0 +1,75 @@ +--- +title: String.prototype.link() +slug: Web/JavaScript/Reference/Global_Objects/String/link +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - link() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/link +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método link() cria uma string que representa o código para um elemento HTML <a> a ser usado como um link de hipertexto para outro URL.

+ +

Sintaxe

+ +
str.link(url)
+ +

Parâmetros

+ +
+
url
+
Qualquer string que especifique o atributo href da tag <a>. Deve ser um URL válido (relativo ou absoluto), com qualquer caractere & escapado como &amp e qualquer " caractere escapado como &quot.
+
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <a>.

+ +

Descrição

+ +

Use o método link() para criar um elemento HTML <a>. A string retornada pode então ser adicionada ao documento por meio de document.write() ou element.innerHTML.

+ +

Os links criados com o método link() tornam-se elementos na array de links do objeto document. Veja document.links.

+ +

Exemplos

+ + + +

O exemplo a seguir exibe a palavra "MDN" como um link que retorna o usuário à Mozilla Developer Network.

+ +
var hotText = 'MDN';
+var URL = 'https://developer.mozilla.org/';
+
+console.log('Clique para retornar à' + hotText.link(URL));
+// Clique para retornar à <a href="https://developer.mozilla.org/">MDN</a>
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.link', 'String.prototype.link')}}
+ + + + + +

{{Compat("javascript.builtins.String.link")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/localecompare/index.html b/files/pt-br/web/javascript/reference/global_objects/string/localecompare/index.html new file mode 100644 index 0000000000..9645e8b0f8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/localecompare/index.html @@ -0,0 +1,163 @@ +--- +title: String.prototype.localeCompare() +slug: Web/JavaScript/Reference/Global_Objects/String/localeCompare +tags: + - Internacionalização + - JavaScript + - Prototipo + - Referencia + - String + - localeCompare() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare +--- +
{{JSRef}}
+ +

O método localeCompare() retorna um número que indica se uma string de referência vem antes ou depois, ou é a mesma que a string fornecida na ordem de classificação.

+ +
{{EmbedInteractiveExample("pages/js/string-localecompare.html")}}
+ + + +

Os novos argumentos locales e options permitem que os aplicativos especifiquem o idioma cuja ordem da ordenação deve ser usada e personalizem o comportamento da função. Em implementações mais antigas, que ignoram os argumentos locales e options, a localidade e a ordem de classificação usadas são totalmente dependentes da implementação.

+ +

Sintaxe

+ +
referenceStr.localeCompare(compareString[, locales[, options]])
+ +

Parâmetros

+ +
+
compareString
+
A string com a qual a referenceStr é comparada.
+
locales e options
+
+

Esses argumentos personalizam o comportamento da função e permitem que os aplicativos especifiquem o idioma cujas convenções de formatação devem ser usadas. Em implementações que ignoram os argumentos locales e options, a localidade usada e a forma da string retornada são inteiramente dependentes da implementação.

+ +

Consulte o construtor Intl.Collator() para obter detalhes sobre esses parâmetros e como usá-los.

+
+
+ +

Valor retornado

+ +

Um número negativo se referenceStr ocorrer antes de compareString. Um número positivo se o referenceStr ocorrer após compareString. 0 se eles forem equivalentes.

+ +

Descrição

+ +

Retorna um inteiro indicando se referenceStr vem antes, depois ou é equivalente a compareString.

+ + + +
+

NÃO confie em valores de retorno exatos de -1 ou 1!

+ +

Os resultados de números inteiros negativos e positivos variam entre os navegadores (bem como entre as versões dos navegadores) porque a especificação W3C exige apenas valores negativos e positivos. Alguns navegadores podem retornar -2 ou 2, ou mesmo algum outro valor negativo ou positivo.

+
+ +

Performance

+ +

Ao comparar um grande número de strings, como na classificação de grandes arrays, é melhor criar um objeto {{jsxref("Global_Objects/Collator", "Intl.Collator")}} e usar a função fornecida por sua propriedade {{jsxref("Collator.prototype.compare", "compare")}}.

+ +

Exemplos

+ +

Usando localeCompare()

+ +
// A letra "a" está antes de "c" produzindo um valor negativo
+'a'.localeCompare('c'); // -2 ou -1 (ou algum outro valor negativo)
+
+// Alfabeticamente, a palavra "verificar" vem depois de "contra", produzindo um valor positivo
+'verificar'.localeCompare('contra'); // 2 ou 1 (ou algum outro valor negativo)
+
+// "a" e "a" são equivalentes, resultando em um valor neutro de zero
+'a'.localeCompare('a'); // 0
+
+ +

Ordenar um array

+ +

localeCompare() permite a ordenação sem distinção entre maiúsculas e minúsculas em um array.

+ +
let items = ['réservé', 'Premier', 'Cliché', 'communiqué', 'café', 'Adieu'];
+items.sort( (a, b) => a.localeCompare(b, 'fr', {ignorePunctuation: true}));
+// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
+
+ +

Verifique o suporte do navegador para os novos argumentos

+ +

Os argumentos locales e options ainda não são suportados em todos os navegadores.

+ +

Para verificar se uma implementação os suporta, use o argumento "i" (um requisito de rejeição das tags de linguagem ilegal) e procure uma exceção {{jsxref ("RangeError")}}:

+ +
function localeCompareSupportsLocales() {
+  try {
+    'foo'.localeCompare('bar', 'i');
+  } catch (e) {
+    return e.name === 'RangeError';
+  }
+  return false;
+}
+
+ +

Usando locales

+ +

Os resultados fornecidos por localeCompare() variam entre os idiomas. Para obter a ordem de classificação do idioma usado na interface do usuário de seu aplicativo, certifique-se de especificar esse idioma (e possivelmente alguns idiomas substitutos) usando o argumento locales:

+ +
console.log('ä'.localeCompare('z', 'de')); // um valor negativo: em alemão, ä é classificado antes de z
+console.log('ä'.localeCompare('z', 'sv')); // um valor positivo: em sueco, ä é classificado após z
+
+ +

Usando options

+ +

Os resultados fornecidos por localeCompare() podem ser personalizados usando o argumento options:

+ +
// em alemão, ä tem a como letra base
+console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0
+
+// em sueco, ä e a são letras de base separadas
+console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // um valor positivo
+
+ +

Ordenação numérica

+ +
// por padrão, "2" > "10"
+console.log("2".localeCompare("10")); // 1
+
+// numeric using options:
+console.log("2".localeCompare("10", undefined, {numeric: true})); // -1
+
+// numeric using locales tag:
+console.log("2".localeCompare("10", "en-u-kn-true")); // -1
+
+ +

Especificações

+ + + + + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}
{{SpecName('ES Int Draft', '#sup-String.prototype.localeCompare', 'String.prototype.localeCompare')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.String.localeCompare")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/match/index.html b/files/pt-br/web/javascript/reference/global_objects/string/match/index.html new file mode 100644 index 0000000000..1ba4671e90 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/match/index.html @@ -0,0 +1,232 @@ +--- +title: String.prototype.match() +slug: Web/JavaScript/Reference/Global_Objects/String/match +tags: + - Expressões Regulares + - JavaScript + - Métodos + - Prototipo + - Referencia + - String + - match() +translation_of: Web/JavaScript/Reference/Global_Objects/String/match +--- +

{{JSRef("Global_Objects", "String")}}

+ +

Resumo

+ +

O método match() retorna uma correspondência entre uma string com uma expressão regular.

+ +

Sintaxe

+ +
str.match(regexp);
+ +

Parâmetros

+ +
+
regexp
+
Um objeto de expressão regular. Se regexp não for uma RegExp, o mesmo será convertido para uma nova RegExp usando new RegExp(regexp).
+
+ Se você não fornecer nenhum parâmetro ao usar o método match(), você obterá um {{jsxref ("Array")}} com uma string vazia: [""].
+
+ +

Valor retornado

+ + + +
+
array
+
Um {{jsxref ("Array")}} cujo conteúdo depende da presença ou ausência do sinalizador global (g), ou {{jsxref ("null")}} se nenhuma correspondência for encontrada.
+
+ +

Propriedades adicionais

+ +

Conforme explicado acima, alguns resultados contêm propriedades adicionais conforme descrito abaixo.

+ +
+
groups
+
Um objeto de grupos de captura nomeados cujas chaves são os nomes, e valores são os grupos de captura ou {{jsxref ("undefined")}} se nenhum grupo de captura nomeado foi definido. Consulte Grupos e Intervalos para obter mais informações.
+
index
+
O índice da pesquisa em que o resultado foi encontrado.
+
input
+
Uma cópia da string pesquisada.
+
+ +

Descrição

+ +

Se a expressão regular não incluir o sinalizador g, str.match() retornará o mesmo resultado que {{jsxref ("RegExp.prototype.exec()", "RegExp.exec()")}}.

+ +

Veja também: métodos RegExp

+ + + +

Exemplos

+ +

Usando match()

+ +

No exemplo a seguir, match() é usado para encontrar "Capítulo", seguido de um ou mais caracteres numéricos, seguido por um ponto decimal e caracteres numéricos 0 ou mais vezes. A expressão inclui a flag i para que diferenças de maiúscula/minúscula sejam ignoradas.

+ +
var str = "Para maiores informações, veja o Capítulo 3.4.5.1";
+var re = /(capítulo \d+(\.\d)*)/i;
+var found = str.match(re);
+
+console.log(found);
+
+// retorna ["Capítulo 3.4.5.1",
+            "Capítulo 3.4.5.1",
+            ".1",
+            index: 33,
+            input: "Para maiores informações, veja o Capítulo 3.4.5.1"]
+
+// "Capítulo 3.4.5.1" é a primeira correspondência e o primeiro valor
+//  capturado a partir de (capítulo \d+(\.\d)*).
+// ".1" é o útlimo valor de (\.\d).
+// A propriedade "index" (33) é o índice de base zero da correspôndencia inteira.
+// A propriedade "input" é a string original que foi analisada.
+
+ +

Usando as bandeiras (flags) global e ignore com
+ match()

+ +

O exemplo a seguir demonstra o uso das bandeiras (flags) global e ignore com match(). Todas as letras de A a E e a a e são retornadas, com cada letra sendo um elemento no array.

+ +
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+var regexp = /[A-E]/gi;
+var matches_array = str.match(regexp);
+
+console.log(matches_array);
+// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
+
+ +
+

Nota: Veja também {{jsxref("String.prototype.matchAll()")}} e Pesquisa avançada com sinalizadores.

+
+ +

Usando grupos de captura nomeados

+ +

Em navegadores que suportam grupos de captura nomeados, o código a seguir captura "fox" ou "cat" em um grupo denominado "animal":

+ +
const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
+
+const capturingRegex = /(?<animal>fox|cat) jumps over/;
+const found = paragraph.match(capturingRegex);
+console.log(found.groups); // {animal: "fox"}
+ +

Usando match() sem parâmetros

+ +
var str = "nada se perde, tudo se transforma";
+
+str.match();  // retorna [""]
+
+ +

Um objeto não-RegExp como parâmetro

+ +

Quando o parâmetro regexp é uma string ou um número, ele é convertido implicitamente em um {{jsxref("RegExp")}} usando o new RegExp(regexp).
+
+ Se for um número positivo com um sinal positivo, RegExp() irá ignorar o sinal positivo.

+ +
var str1 = "NaN significa 'não é um número'. Infinity contem -Infinity e +Infinity em JavaScript.",
+    str2 = "Meu avô tem 65 anos e minha avô tem 63.",
+    str3 = "O contrato foi declarado null (nulo) e void (sem efeito)";
+str1.match("número");   // "número" é um string. retorna ["número"]
+str1.match(NaN);        // o tipo de NaN é um número. retorna ["NaN"]
+str1.match(Infinity);   // o tipo de Infinity é um número. retorna ["Infinity"]
+str1.match(+Infinity);  // retorna ["Infinity"]
+str1.match(-Infinity);  // retorna ["-Infinity"]
+str2.match(65);         // retorna ["65"]
+str2.match(+65);        // Um número com sinal positivo. retorna ["65"]
+str3.match(null);       // retorna ["null"]
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesEstadoComentário
ECMAScript 3rd Edition.StandardDefinição inicial.
+ Implementado no 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() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
característicaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/matchall/index.html b/files/pt-br/web/javascript/reference/global_objects/string/matchall/index.html new file mode 100644 index 0000000000..7399d9e290 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/matchall/index.html @@ -0,0 +1,146 @@ +--- +title: String.prototype.matchAll() +slug: Web/JavaScript/Reference/Global_Objects/String/matchAll +tags: + - Expressões Regulares + - JavaScript + - Prototipo + - Referencia + - String + - matchAll() + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll +--- +
{{JSRef}}
+ +

O método matchAll() retorna um iterador de todos os resultados correspondentes a uma string em relação a uma expressão regular, incluindo grupos de captura.

+ +
{{EmbedInteractiveExample("pages/js/string-matchall.html")}}
+ + + +

Sintaxe

+ +
str.matchAll(regexp)
+ +

Parâmetros

+ +
+
regexp
+
+

Um objeto de expressão regular.

+ +

Se um objeto obj não-RegExp for passado, ele será convertido implicitamente em um {{jsxref("RegExp")}} usando new RegExp(obj).

+ +

O objeto RegExp deve ter o sinalizador (flag) /g, caso contrário, um TypeError será retornado.

+
+
+ +

Valor retornado

+ +

Um iterador (que não é um iterável reinicializável).

+ +

Exemplos

+ +

Regexp.exec() e matchAll()

+ +

Antes da adição do matchAll() ao JavaScript, era possível usar chamadas regexp.exec (e regexes com a sinalização (flag) /g) em um loop para obter todas as correspondências:

+ +
const regexp = RegExp('foo[a-z]*','g');
+const str = 'table football, foosball';
+let match;
+
+while ((match = regexp.exec(str)) !== null) {
+  console.log(`Encontrou ${match[0]} início=${match.index} fim=${regexp.lastIndex}.`);
+  // retorna "Encontrou football início=6 fim=14."
+  // retorna "Encontou foosball início=16 fim=24."
+}
+ +

Com o matchAll() disponível, você pode evitar o loop {{jsxref("Statements/while", "while")}} e executar com g.

+ +

Em vez disso, usando o matchAll(), você obtém um iterador para usar com o mais conveniente {{jsxref ("Statements/for ... of", "for...of")}}, {{jsxref ("Operators/Spread_syntax" , "array spread")}} ou construções {{jsxref ("Array.from()")}}:

+ +
const regexp = RegExp('foo[a-z]*','g');
+const str = 'table football, foosball';
+const matches = str.matchAll(regexp);
+
+for (const match of matches) {
+  console.log(`Encontrou ${match[0]} início=${match.index} fim=${match.index + match[0].length}.`);
+}
+// retorna "Encontrou football início=6 fim=14."
+// retorna "Encontrou foosball início=16 fim=24."
+
+// O iterador de correspondências se esgota após a iterção for..of
+// Chame matchAll novamente para criar um novo iterador
+Array.from(str.matchAll(regexp), m => m[0]);
+// Array [ "football", "foosball" ]
+ +

matchAll() retornará uma exceção se o sinalizador (flag) g estiver ausente.

+ +
const regexp = RegExp('[a-c]','');
+const str = 'abc';
+str.matchAll(regexp);
+// retorna TypeError
+
+ +

matchAll() cria internamente um clone da regexp - portanto, ao contrário de {{jsxref("Global_Objects/RegExp/exec", "regexp.exec()")}}, o lastIndex não muda conforme a string é verificada.

+ +
const regexp = RegExp('[a-c]','g');
+regexp.lastIndex = 1;
+const str = 'abc';
+Array.from(str.matchAll(regexp), m => `${regexp.lastIndex} ${m[0]}`);
+// Array [ "1 b", "1 c" ]
+ +

Melhor acesso para capturar grupos (do que String.prototype.match())

+ +

Outra razão convincente para usar matchAll() é o acesso aprimorado para capturar grupos.

+ +

Os grupos de captura são ignorados ao usar {{jsxref("Global_Objects/String/match", "match()")}} com o sinalizador global /g:

+ +
let regexp = /t(e)(st(\d?))/g;
+let str = 'test1test2';
+
+str.match(regexp);
+// Array ['test1', 'test2']
+ +

Usando o matchAll(), você pode acessar os grupos de captura facilmente:

+ +
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]
+
+ +

Especificações

+ + + + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.matchall', 'String.prototype.matchAll')}}
+ + + + + +

{{Compat("javascript.builtins.String.matchAll")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/normalize/index.html b/files/pt-br/web/javascript/reference/global_objects/string/normalize/index.html new file mode 100644 index 0000000000..eb049a0ba5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/normalize/index.html @@ -0,0 +1,220 @@ +--- +title: String.prototype.normalize() +slug: Web/JavaScript/Reference/Global_Objects/String/normalize +tags: + - ECMAScript2015 + - JavaScript + - Prototipo + - Referencia + - String + - Unicode + - metodo + - normalize() +translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize +--- +
{{JSRef}}
+ +

O método normalize() retorna a Forma de Normalização Unicode (Unicode Normalization Form) de uma dada string (se o valor não é uma string, ele será convertido para uma primeiramente).

+ +

Sintaxe

+ +
str.normalize([form])
+ +

Parâmetros

+ +
+
form
+
Opcional. Um dentre os seguintes valores: "NFC", "NFD", "NFKC", ou "NFKD", especificando o formato de normalização. Se o valor for omitido ou for {{jsxref("undefined")}}, "NFC" será utilizado. +
    +
  • NFC — Formato de Normalização Canônico de Composição. 
  • +
  • NFD — Formato de Normalização Canônico de Decomposição.
  • +
  • NFKC — Formato de Normalização de Compatibilidade de Composição.
  • +
  • NFKD — Formato de Normalização de Compatibilidade de Decomposição.
  • +
+
+
+ +

Valor retornado

+ +

Uma string contendo a Forma de Normalização Unicode da string dada.

+ +

Erros lançados

+ +
+
{{jsxref("RangeError")}}
+
Em erro {{jsxref("RangeError")}} é lançado se form não for um dos valores especificados acima.
+
+ +

Descrição

+ +

O Unicode atribui um valor numérico exclusivo, denominado ponto de código, a cada caractere. Por exemplo, o ponto de código para "A" é fornecido como U+0041. No entanto, às vezes mais de um ponto de código, ou sequência de pontos de código, podem representar o mesmo caractere abstrato - o caractere "ñ", por exemplo, pode ser representado por:

+ + + +
let string1 = '\u00F1';
+let string2 = '\u006E\u0303';
+
+console.log(string1);  //  retorna ñ
+console.log(string2);  //  retorna ñ
+ +

No entanto, como os pontos de código são diferentes, a comparação de strings não os tratará como iguais. E como o número de pontos de código em cada versão é diferente, eles até mesmo possuem comprimentos diferentes.

+ +
let string1 = '\u00F1';            // ñ
+let string2 = '\u006E\u0303';      // ñ
+
+console.log(string1 === string2); // retorna false
+console.log(string1.length);      // retorna 1
+console.log(string2.length);      // retorna 2
+ +

O método normalize() ajuda a resolver esse problema convertendo uma string em uma forma normalizada comum para todas as sequências de pontos de código que representam os mesmos caracteres. Existem duas principais formas de normalização, uma baseada na equivalência canônica e a outra baseada na compatibilidade.

+ +

Normalização de equivalência canônica

+ +

Em Unicode, duas sequências de pontos de código têm equivalência canônica se representarem os mesmos caracteres abstratos e tiverem sempre a mesma aparência visual e comportamento (por exemplo, eles devem sempre ser classificados da mesma maneira).

+ +

Você pode usar o normalize() usando os argumentos "NFD" ou "NFC" para produzir uma forma de string que será a mesma para todas as strings canonicamente equivalentes. No exemplo abaixo, normalizamos duas representações do caractere "ñ":

+ +
let string1 = '\u00F1';           // ñ
+let string2 = '\u006E\u0303';     // ñ
+
+string1 = string1.normalize('NFD');
+string2 = string2.normalize('NFD');
+
+console.log(string1 === string2); // retorna true
+console.log(string1.length);      // retorna 2
+console.log(string2.length);      // retorna 2
+ +

Formas compostas e decompostas

+ +

Observe que o comprimento da forma normalizada em "NFD" é 2. Isso porque "NFD" fornece a versão decomposta da forma canônica, na qual pontos de código únicos são divididos em vários combinados. A forma canônica decomposta para "ñ" é "\u006E\u0303".

+ +

Você pode especificar "NFC" para obter a forma canônica composta, na qual vários pontos de código são substituídos por pontos de código únicos sempre que possível. A forma canônica composta para "ñ" é "\u00F1":

+ +
let string1 = '\u00F1';                           // ñ
+let string2 = '\u006E\u0303';                     // ñ
+
+string1 = string1.normalize('NFC');
+string2 = string2.normalize('NFC');
+
+console.log(string1 === string2);                 // true
+console.log(string1.length);                      // 1
+console.log(string2.length);                      // 1
+console.log(string2.codePointAt(0).toString(16)); // f1
+ +

Normalização de compatibilidade

+ +

No Unicode, duas sequências de pontos de código são compatíveis se representarem os mesmos caracteres abstratos e devem ser tratadas da mesma forma em algumas - mas não necessariamente em todas - aplicações.

+ +

Todas as sequências canonicamente equivalentes também são compatíveis, mas não o contrário.

+ +

Por exemplo:

+ + + +

Em alguns aspectos (como classificação), eles devem ser tratados como equivalentes - e em alguns (como a aparência visual) não devem, portanto, não são canonicamente equivalentes.

+ +

Você pode usar o normalize() usando os argumentos "NFKD" ou "NFKC" para produzir uma forma de string que será a mesma para todas as strings compatíveis:

+ +
let string1 = '\uFB00';
+let string2 = '\u0066\u0066';
+
+console.log(string1);             // ff
+console.log(string2);             // ff
+console.log(string1 === string2); // false
+console.log(string1.length);      // 1
+console.log(string2.length);      // 2
+
+string1 = string1.normalize('NFKD');
+string2 = string2.normalize('NFKD');
+
+console.log(string1);             // ff <- aparência visual modificada
+console.log(string2);             // ff
+console.log(string1 === string2); // true
+console.log(string1.length);      // 2
+console.log(string2.length);      // 2
+ +

Ao aplicar a normalização de compatibilidade, é importante considerar o que você pretende fazer com as strings, uma vez que a forma normalizada pode não ser apropriada para as aplicações. No exemplo acima, a normalização é apropriada para pesquisa, porque permite que um usuário encontre a string pesquisando por "f". Mas pode não ser apropriado para exibição, porque a representação visual é diferente.

+ +

Como na normalização canônica, você pode solicitar formulários compatíveis decompostos ou compostos passando "NFKD" ou "NFKC", respectivamente.

+ +

Exemplos

+ +

Usando normalize()

+ +
// String Inicial
+
+// U+1E9B: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA
+// U+0323: COMBINANDO PONTO ABAIXO
+var str = '\u1E9B\u0323';
+
+
+// Formato de Normalização Canônico de Composição (NFC)
+
+// U+1E9B: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA
+// U+0323: COMBINANDO PONTO ABAIXO
+str.normalize('NFC'); // '\u1E9B\u0323'
+str.normalize();      // igual à linha de cima
+
+
+// Formato de Normalização Canônico de Decomposição (NFD)
+
+// U+017F: CARACTERE LATINO - LETRA S COMPRIDA
+// U+0323: COMBINANDO PONTO ABAIXO
+// U+0307: COMBINANDO PONTO ACIMA
+str.normalize('NFD'); // '\u017F\u0323\u0307'
+
+
+// Formato de Normalização de Compatibilidade de Composição. (NFKC)
+
+// U+1E69: CARACTERE LATINO - LETRA S COMPRIDA COM PONTO ACIMA E ABAIXO
+str.normalize('NFKC'); // '\u1E69'
+
+
+// Formato de Normalização de Compatibilidade de Decomposição (NFKD)
+
+// U+0073: CARACTERE LATINO - LETRA S COMPRIDA
+// U+0323: COMBINANDO PONTO ABAIXO
+// U+0307: COMBINANDO PONTO ACIMA
+str.normalize('NFKD'); // '\u0073\u0323\u0307'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}{{Spec2('ESDraft')}}
+ +

Nevegadores compatíveis

+ + + +

{{Compat("javascript.builtins.String.normalize")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/padend/index.html b/files/pt-br/web/javascript/reference/global_objects/string/padend/index.html new file mode 100644 index 0000000000..4c4395451b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/padend/index.html @@ -0,0 +1,103 @@ +--- +title: String.prototype.padEnd() +slug: Web/JavaScript/Reference/Global_Objects/String/padEnd +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - padEnd() +translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd +--- +
{{JSRef}}
+ +

O método padEnd() preenche a string original com um determinado caractere, ou conjunto de caraceres, (repetidamente, se necessário) para que a string resultante alcance um determinado comprimento. O preenchimento é aplicado a partir do final (direita) da string original. A string original não é modificada.

+ +
{{EmbedInteractiveExample("pages/js/string-padend.html")}}
+ + + +

Sintaxe

+ +
str.padEnd(targetLength [, padString])
+ +

Parâmetros

+ +
+
targetLength
+
O comprimento da string resultante após a string original ter sido preenchida. Se o valor for menor do que o próprio comprimento da string original, a string original é retornada sem modificações.
+
padString
+
Opcional. O caractere (ou caracteres) que deve completar a string atual. Caso o comprimento desta string seja muito longo, estando acima do comprimento alvo, ela será truncada e sua parte esquerda restante é aplicada. O valor padrão para esse parâmetro é  " " (U+0020).
+
+ +

Valor retornado

+ +

Uma {{jsxref("String")}} cuja composição vem da string original, completada por um ou mais caracteres de preenchimento, respeitando o comprimento alvo.

+ +

Exemplos

+ +

Usando padEnd

+ +
'abc'.padEnd(10);          // "abc       "
+'abc'.padEnd(10, "foo");   // "abcfoofoof"
+'abc'.padEnd(6, "123456"); // "abc123"
+'abc'.padEnd(1);           // "abc"
+ +

Polyfill

+ +

Rodando o seguinte código antes de qualquer código irá criar o método String.prototype.padEnd() caso ele não esteja disponível nativamente:

+ +
// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd
+if (!String.prototype.padEnd) {
+    String.prototype.padEnd = function padEnd(targetLength,padString) {
+        targetLength = targetLength>>0; //floor if number or convert non-number to 0;
+        padString = String((typeof padString !== 'undefined' ? 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 String(this) + padString.slice(0,targetLength);
+        }
+    };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-string.prototype.padend', 'String.prototype.padEnd')}}{{Spec2('ESDraft')}}Definição inicial no ECMAScript 2017.
{{SpecName('ES8', '#sec-string.prototype.padend', 'String.prototype.padEnd')}}{{Spec2('ES8')}}
+ + + + + +

{{Compat("javascript.builtins.String.padEnd")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/padstart/index.html b/files/pt-br/web/javascript/reference/global_objects/string/padstart/index.html new file mode 100644 index 0000000000..3a60ff2489 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/padstart/index.html @@ -0,0 +1,107 @@ +--- +title: String.prototype.padStart() +slug: Web/JavaScript/Reference/Global_Objects/String/padStart +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - padStart() +translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart +--- +
{{JSRef}}
+ +

O método padStart() preenche a string original com um determinado caractere, ou conjunto de caracteres, (várias vezes, se necessário) até que a string resultante atinja o comprimento fornecido. O preenchimento é aplicado antes do primeiro caractere da string original. A string original não é modificada.

+ + + +
{{EmbedInteractiveExample("pages/js/string-padstart.html")}}
+ + + + + +

Sintaxe

+ +
str.padStart(targetLength [, padString])
+ +

Parâmetros

+ +
+
targetLength
+
O comprimento da string resultante uma vez que a string alvo tenha sido preenchida. Caso seu valor seja menor do que o comprimento da string alvo, é retornado a própria string alvo, sem alterações.
+
padString
+
Opcional. O caractere, ou caracteres, que deve preencher a string alvo. Caso o comprimento dessa essa string de preenchimento seja superior ao targetLength, ela será truncada a partir da direita. O valor padrão é " " (U+0020 'SPACE').
+
+ +

Valor de retorno

+ +

Uma {{jsxref("String")}} de comprimento específico com uma string de preenchimento aplicada a partir do seu início.

+ +

Exemplos

+ +

Exemplos básicos

+ +
'abc'.padStart(10);         // "       abc"
+'abc'.padStart(10, "foo");  // "foofoofabc"
+'abc'.padStart(6,"123465"); // "123abc"
+'abc'.padStart(8, "0");     // "00000abc"
+'abc'.padStart(1);          // "abc"
+ +

Polyfill

+ +

Ao executar o seguinte código antes de qualquer outro código é criado o método String.prototype.padStart(), em casos onde ele não está disponível nativamente:

+ +
// 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; //truncate if number, or convert non-number to 0;
+        padString = String(typeof padString !== 'undefined' ? 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);
+        }
+    };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ESDraft', '#sec-string.prototype.padstart', 'String.prototype.padStart')}}{{Spec2('ESDraft')}}Implementação inical no ECMAScript 2017.
{{SpecName('ES8', '#sec-string.prototype.padstart', 'String.prototype.padStart')}}{{Spec2('ES8')}}
+ + + + + +

{{Compat("javascript.builtins.String.padStart")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/string/prototype/index.html new file mode 100644 index 0000000000..14594dfaf6 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/prototype/index.html @@ -0,0 +1,176 @@ +--- +title: String.prototype +slug: Web/JavaScript/Reference/Global_Objects/String/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +
{{JSRef}}
+ +

A String.prototype representa o prototipo de objeto  {{jsxref("String")}}.

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

Descrição

+ +

Todas as instâncias {{jsxref("String")}} herdam de String.prototype. Alterações na String são propagadas para todas as instâncias {{jsxref("String")}}.

+ +

Propriedades

+ +
+
String.prototype.constructor
+
Especifica a função que cria o protótipo de um objeto.
+
{{jsxref("String.prototype.length")}}
+
Reflete o comprimento da string.
+
N
+
Usado para acessar o caractere na posição N onde N é um número inteiro entre 0 e um menor que o valor da length. Estas propriedades são apenas de leitura.
+
+ +

Métodos

+ +

Métodos não relacionados ao HTML

+ +
+
{{jsxref("String.prototype.charAt()")}}
+
Retorna o caractere (exatamente uma unidade de código UTF-16) no índice especificado.
+
{{jsxref("String.prototype.charCodeAt()")}}
+
Retorna um número que é o valor da unidade de código UTF-16 em dado índice.
+
{{jsxref("String.prototype.codePointAt()")}}
+
Retorna um número inteiro não negativo Number que é o valor de posição de código da posição de código inicial em dado índice.
+
{{jsxref("String.prototype.concat()")}}
+
Combina o texto de duas strings e retorna uma nova string.
+
{{jsxref("String.prototype.includes()")}}
+
 Determina se uma string deve ser encontrada dentro de outra string.
+
{{jsxref("String.prototype.endsWith()")}}
+
Determina se uma string termina com os caracteres de outra string.
+
{{jsxref("String.prototype.indexOf()")}}
+
Retorna o índice dentro do objeto String chamado da primeira ocorrência do valor especificado, ou -1 se não encontrado.
+
{{jsxref("String.prototype.lastIndexOf()")}}
+
Retorna o índice dentro do objeto String chamado da última ocorrência do valor especificado, ou -1 se não encontrado.
+
{{jsxref("String.prototype.localeCompare()")}}
+
Retorna um número indicando se uma string de referência vem antes ou depois ou é o mesmo que uma string dada em ordem de classificação.
+
{{jsxref("String.prototype.match()")}}
+
Usado para combinar uma expressão regular com uma string.
+
{{jsxref("String.prototype.normalize()")}}
+
Retorna o Formulário de Normalização Unicode do valor string chamado.
+
{{jsxref("String.prototype.padEnd()")}}
+
Empacota a string atual desde o final com uma string dada para criar uma nova string de um dado comprimento.
+
{{jsxref("String.prototype.padStart()")}}
+
Empacota a string atual desde o início com uma string dada para criar uma nova string de um dado comprimento.
+
{{jsxref("String.prototype.quote()")}} {{obsolete_inline}}
+
Envolve a cadeia entre aspas duplas ("" ").
+
{{jsxref("String.prototype.repeat()")}}
+
Retorna uma string consistindo elementos do objeto repetido pelas vezes definidas.
+
{{jsxref("String.prototype.replace()")}}
+
Usado para encontrar uma combinação entre uma expressão regular e uma string, e para substituir uma substring combinada com uma nova substring.
+
{{jsxref("String.prototype.search()")}}
+
Executa a procura por uma combinação entre uma expressão regular e uma string especificada.
+
{{jsxref("String.prototype.slice()")}}
+
Extrai uma seção de uma string e retorna uma nova string.
+
{{jsxref("String.prototype.split()")}}
+
Separa um objeto String em um array de strings separando a string em substrings.
+
{{jsxref("String.prototype.startsWith()")}}
+
Determina se uma string começa com os caracteres de outra string.
+
{{jsxref("String.prototype.substr()")}}
+
Retorna os caracteres em uma string começando no local especificado através do número especificado de caracteres.
+
{{jsxref("String.prototype.substring()")}}
+
Retorna os caracteres em uma string entre dois índices na string.
+
{{jsxref("String.prototype.toLocaleLowerCase()")}}
+
Os caracteres dentro de uma string são convertidos para letras minúsculas enquanto respeita a localidade atual. Para a maioria das línguas, irá retornar o mesmo que toLowerCase().
+
{{jsxref("String.prototype.toLocaleUpperCase()")}}
+
Os caracteres dentro de uma string são convertidas para letra maiúscula enquanto respeita a localidade atual. Para a maioria das línguas, irá retornar o mesmo que toUpperCase().
+
{{jsxref("String.prototype.toLowerCase()")}}
+
Retorna o valor da string de chamada convertido em minúsculas.
+
{{jsxref("String.prototype.toSource()")}} {{non-standard_inline}}
+
Retorna um objeto literal representando o objeto especificado; Você pode usar esse valor para criar um novo objeto. Substitui o metodo:{{jsxref("Object.prototype.toSource()")}}
+
{{jsxref("String.prototype.toString()")}}
+
Retorna uma string que representa o objeto especificado. Substitui o metodo:{{jsxref("Object.prototype.toString()")}}
+
{{jsxref("String.prototype.toUpperCase()")}}
+
Retorna o valor da string de chamada convertido em maiúscula.
+
{{jsxref("String.prototype.trim()")}}
+
Retira o espaço em branco desde o início e o fim da string. Parte do padrão ECMAScript 5.
+
{{jsxref("String.prototype.trimLeft()")}} {{non-standard_inline}}
+
Retira o espaço em branco do lado esquerdo da string.
+
{{jsxref("String.prototype.trimRight()")}} {{non-standard_inline}}
+
Retira o espaço em branco do lado esquerdo da string.
+
{{jsxref("String.prototype.valueOf()")}}
+
Retorna o valor primitivo do objeto especificado. Substitui o metodo: {{jsxref("Object.prototype.valueOf()")}} 
+
{{jsxref("String.prototype.@@iterator()", "String.prototype[@@iterator]()")}}
+
Retorna um novo objeto  Iterator que repete sobre os pontos de código de um valor String, retornando cada ponto de código como um valor String.
+
+ +

Métodos de envoltório HTML

+ +

Esses métodos são de uso limitado, pois fornecem apenas um subconjunto das tags e atributos HTML disponíveis.

+ +
+
{{jsxref("String.prototype.anchor()")}}
+
{{htmlattrxref("name", "a", "<a name=\"name\">")}} (alvo hipertexto)
+
{{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}}
+
{{htmlattrxref("color", "font", "<font color=\"color\">")}}
+
{{jsxref("String.prototype.fontsize()")}} {{deprecated_inline}}
+
{{htmlattrxref("size", "font", "<font size=\"size\">")}}
+
{{jsxref("String.prototype.italics()")}} {{deprecated_inline}}
+
{{HTMLElement("i")}}
+
{{jsxref("String.prototype.link()")}}
+
{{htmlattrxref("href", "a", "<a href=\"url\">")}} (link para 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")}}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificacoesStatusComentarios
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial.
{{SpecName('ES5.1', '#sec-15.5.3.1', 'String.prototype')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-string.prototype', 'String.prototype')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-string.prototype', 'String.prototype')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade entre browsers

+ + + +

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

+ +

Veja também 

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/raw/index.html b/files/pt-br/web/javascript/reference/global_objects/string/raw/index.html new file mode 100644 index 0000000000..86cfe1b25b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/raw/index.html @@ -0,0 +1,120 @@ +--- +title: String.raw() +slug: Web/JavaScript/Reference/Global_Objects/String/raw +tags: + - ECMAScript 2015 + - JavaScript + - Referencia + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/raw +--- +
{{JSRef}}
+ +

O método estático String.raw() é uma função tag de modelos literais, similar ao prefixo r no Python ou o prefixo @ no C# para string literais (Mas não é idêntico, existe uma diferença, veja explicações nessa discussão). Ele é usado para pegar as strings no formato "cru" de modelos literais, isto é, substituições (ex: ${foo}) são processados, mas "escapes" (ex:. \n) não são.

+ +

{{EmbedInteractiveExample("pages/js/string-raw.html")}}

+ +

Sintaxe

+ +
String.raw(callSite, ...sub)
+
+String.raw`templateString`
+
+ +

Parâmetros

+ +
+
callSite
+
 Modelo bem-formatado de objeto de local de chamada, como { raw: ['foo', 'bar', 'baz'] }.
+
...substitutions
+
Contém os valores das substituições.
+
templateString
+
Um modelo string, opcionalmente com substituições (${...}).
+
+ +

Valor retornado

+ +

A forma crua de uma string de um modelo string dado.

+ +

Exceções

+ +
+
{{jsxref("TypeError")}}
+
Um {{jsxref("TypeError")}} é jogado se o primeiro argumento não é um Objeto bem formado.
+
+ +

Descrição

+ +

Na maioria dos casos, String.raw() é usado com modelos de strings. A primeira sintaxe mencionada acima raramente é usada, porque o mecanismo JavaScript a chamará com os argumentos apropriados para você, assim como com outras funções de tag.

+ +

String.raw() é a única função de tag embutida de strings de template; ele funciona exatamente como a função de modelo padrão e executa a concatenação. Você pode até reimplementá-lo com o código JavaScript normal.

+ +

Exemplos

+ +

Usando String.raw()

+ +
String.raw`Hi\n${2+3}!`;
+// 'Hi\n5!', o caractere após 'Hi'
+// não é um caractere de quebra de linha,
+// '\' e 'n' são dois caracteres.
+
+String.raw`Hi\u000A!`;
+// 'Hi\u000A!', o mesmo aqui, agora nós teremos os caracteres
+//  \, u, 0, 0, 0, A, 6.
+// Todos as formas de quebra de linha serão ineficazes
+// e as contra barras estarão inclusas no valor retornado.
+// Você pode confirmar isso verificando a propriedade .length
+// da string.
+
+let name = 'Bob';
+String.raw`Hi\n${name}!`;
+// 'Hi\nBob!', substituições são processadas.
+
+// Normalmente você não chamaria String.raw() como uma função,
+// mas para simular `t${0}e${1}s${2}t` você pode fazer:
+String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
+// Note que 'test', uma string, é um objeto array-like
+// O código abaixo é equivalente a:
+// `foo${2 + 3}bar${'Java' + 'Script'}baz`
+String.raw({
+  raw: ['foo', 'bar', 'baz']
+}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'
+
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-string.raw', 'String.raw')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-string.raw', 'String.raw')}}{{Spec2('ESDraft')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.String.raw")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/repeat/index.html b/files/pt-br/web/javascript/reference/global_objects/string/repeat/index.html new file mode 100644 index 0000000000..94cdca3831 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/repeat/index.html @@ -0,0 +1,294 @@ +--- +title: String.prototype.repeat() +slug: Web/JavaScript/Reference/Global_Objects/String/repeat +tags: + - JavaScript + - Prototype + - Referencia + - Repetir + - String + - metodo + - repeat() +translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat +--- +
{{JSRef}}
+ +

O método repeat() constrói e retorna uma nova string com um determinado número de cópias concatenadas da string original.

+ +

Sintaxe

+ +
str.repeat(count);
+
+ +

Parâmetros

+ +
+
count
+
Um número inteiro entre 0 e  {{jsxref("Global_Objects/Number/POSITIVE_INFINITY", "+Infinity")}}, indicando o número de vezes que a string deve ser repetida.
+
+ +

Valor retornado

+ +

Uma nova string contendo o número especificado de cópias da string original.

+ +

Exceções

+ + + +

Exemplos

+ +
'abc'.repeat(-1);   // RangeError
+'abc'.repeat(0);    // ''
+'abc'.repeat(1);    // 'abc'
+'abc'.repeat(2);    // 'abcabc'
+'abc'.repeat(3.5);  // 'abcabcabc' (o número será convertido para inteiro)
+'abc'.repeat(1/0);  // RangeError
+
+({ toString: () => 'abc', repeat: String.prototype.repeat }).repeat(2);
+// 'abcabc' (repeat() é um método genérico)
+
+ +

Polyfill

+ +

O método repeat() foi adicionado à especificação ECMAScript 2015 e pode ainda não estar disponível em todas as implementações do JavaScript. No entanto, você pode usar o seguinte polyfill para implementar o String.prototype.repeat():

+ +
if (!String.prototype.repeat) {
+  String.prototype.repeat = function(count) {
+    'use strict';
+    if (this == null) {
+      throw new TypeError('não é possível converter ' + this + ' para um objeto');
+    }
+    var str = '' + this;
+    count = +count;
+    if (count != count) {
+      count = 0;
+    }
+    if (count < 0) {
+      throw new RangeError('o núm. de repetições não pode ser negativo');
+    }
+    if (count == Infinity) {
+      throw new RangeError('o núm. de repetições deve ser menor que infinito');
+    }
+    count = Math.floor(count);
+    if (str.length == 0 || count == 0) {
+      return '';
+    }
+
+    // Ao Garantir que count seja um inteiro de 31 bits nos dá uma grande otimização
+    // na parte principal. Porém, navegadores atuais (de agosto de 2014 pra cá)
+    // não conseguem mais manipular strings de 1 << 28 chars ou maiores, então:
+    if (str.length * count >= 1 << 28) {
+      throw new RangeError('o núm. de repetições não deve estourar o tamanho máx. de uma string');
+    }
+    var rpt = '';
+    for (var i = 0; i < count; i++) {
+      rpt += str;
+    }
+    return rpt;
+  }
+}
+
+ +

Polyfill ES5

+ +
//#es5
+'use strict';
+(function(win){
+ var typeOf=(function(w){var f=function f(x){return typeof(x)},o=w.Symbol,p;if(o && typeof(o)==='function' && typeof(o.iterator)==='symbol'){p=o.prototype;f=function(x){return x && x.constructor===o && x!==p?'symbol':typeof x}};return f})(win),
+ exist=function(o,p,t){return p in o && typeOf(o[p])===t};
+ (function(w){
+    var o=w.String.prototype;
+    if(!exist(o,'repeat','function')){o.repeat=(function(A,E){return function(n){var i=n>>0,s=this,l=s.length,j;if(i===0||l<1){s=''}else{j=268435456;if(i<0||i>=j||i*l>j){throw new RE('Invalidcountvalue')}else if(i>0){s=A(++i).join(s)}};return s}})(w.Array,w.RangeError)};
+ })(win);
+})(window);
+
+// teste:
+console.clear();
+console.log(
+'abc'.repeat(false),//''
+'abc'.repeat({}),//''
+'abc'.repeat([]),//''
+'abc'.repeat(['']),//''
+'abc'.repeat([0]),//''
+'abc'.repeat([0,1]),//''
+'abc'.repeat([1,1]),//''
+'abc'.repeat(0),//''
+'abc'.repeat(.6),//''
+'abc'.repeat(true),//'abc'
+'abc'.repeat(1),//'abc'
+'abc'.repeat(2),//'abcabc'
+'abc'.repeat([2]),//'abcabc'
+'abc'.repeat(3.5),//'abcabcabc'
+''.repeat(2)//''
+);
+console.log(
+'abc'.repeat(-Infinity),//RangeError: Invalid count value
+'abc'.repeat(Infinity),//RangeError: Invalid count value
+'abc'.repeat(1/0),//RangeError: Invalid count value
+'abc'.repeat(-1)//RangeError: Invalid count value
+);
+
+/*
+es5 src:
+'use strict';
+(function(win){
+
+ var typeOf=(function(w){var f=function f(x){return typeof(x)},o=w.Symbol,p;if(o && typeof(o)==='function' && typeof(o.iterator)==='symbol'){p=o.prototype;f=function(x){return x && x.constructor===o && x!==p?'symbol':typeof x}};return f})(win),
+ exist=function(o,p,t){return p in o && typeOf(o[p])===t};
+
+ (function(w){
+    var o=w.String.prototype;
+    if(!exist(o,'repeat','function')){
+        o.repeat=(function(A,E){
+            return function(n){
+                var i=n>>0,s=this,l=s.length,j;
+                if(i===0||l<1){s=''}else{
+                    j=268435456;
+                    if(i<0||i>=j||i*l>j){throw new RE('Invalidcountvalue')}else if(i>0){s=A(++i).join(s)}
+                };
+                return s
+            };
+        })(w.Array,w.RangeError);
+    };
+    //..
+ })(win);
+
+})(window);
+*/
+
+ +

Polyfill ES6

+ +
//#es6
+
+(w=>{
+
+    const typeOf=(o=>{let f=x=>typeof x;if(o && 'function'===typeof o){const s='symbol';if(s===typeof o.iterator){const p=o.prototype;f=x=>x && x.constructor===o && x!==p?s:typeof x}};return f})(w.Symbol),
+
+    exist=(o,p,t)=>p in o && typeOf(o[p])===t;
+
+    (o=>{
+
+        if(!exist(o,'repeat','function')){const A=w.Array,E=w.RangeError;o.repeat=function(n){var i=n>>0,s='';if(i!==0){let t=this;const l=t.length;if(l!==0){if(i<0||i>=(t=268435456)||i*l>t){throw new E('Invalid count value')}else if(i>0){s=A(++i).join(t)}}};return s}};
+
+    })(w.String.prototype);
+
+})(window);
+
+/*
+
+es6 src:
+
+(w=>{
+
+    const typeOf=(o=>{let f=x=>typeof x;if(o && 'function'===typeof o){const s='symbol';if(s===typeof o.iterator){const p=o.prototype;f=x=>x && x.constructor===o && x!==p?s:typeof x}};return f})(w.Symbol),
+
+    exist=(o,p,t)=>p in o && typeOf(o[p])===t;
+
+
+    (o=>{
+
+        if(!exist(o,'repeat','function')){
+
+            const A=w.Array;
+
+            o.repeat=function(n){var i=n>>0,s='';if(i!==0){let t=this;const l=t.length;if(l!==0){if(i<0||i>=(t=268435456)||i*l>t){throw new RangeError('Invalid count value')}else if(i>0){s=A(++i).join(t)}}};return s};
+
+        };
+
+        //..
+
+    })(w.String.prototype);
+
+
+})(window);
+
+*/
+
+
+//test:
+
+console.clear();
+
+console.log(
+
+'abc'.repeat(false),//''
+
+'abc'.repeat({}),//''
+
+'abc'.repeat([]),//''
+
+'abc'.repeat(['']),//''
+
+'abc'.repeat([0]),//''
+
+'abc'.repeat([0,1]),//''
+
+'abc'.repeat([1,1]),//''
+
+'abc'.repeat(0),//''
+
+'abc'.repeat(.6),//''
+
+'abc'.repeat(true),//'abc'
+
+'abc'.repeat(1),//'abc'
+
+'abc'.repeat(2),//'abcabc'
+
+'abc'.repeat([2]),//'abcabc'
+
+'abc'.repeat(3.5),//'abcabcabc'
+
+''.repeat(2)//''
+
+);
+
+console.log(
+
+'abc'.repeat(-Infinity),//RangeError: Invalid count value
+
+'abc'.repeat(Infinity),//RangeError: Invalid count value
+
+'abc'.repeat(1/0),//RangeError: Invalid count value
+
+'abc'.repeat(-1)//RangeError: Invalid count value
+
+);
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}{{Spec2('ESDraft')}}
+ + + + + +

{{Compat("javascript.builtins.String.repeat")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/replace/index.html b/files/pt-br/web/javascript/reference/global_objects/string/replace/index.html new file mode 100644 index 0000000000..8d1863363b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/replace/index.html @@ -0,0 +1,352 @@ +--- +title: String.prototype.replace() +slug: Web/JavaScript/Reference/Global_Objects/String/replace +tags: + - Expressões Regulares + - JavaScript + - Prototipo + - Referencia + - String + - replace() +translation_of: Web/JavaScript/Reference/Global_Objects/String/replace +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Resumo

+ +

O método replace() retorna uma nova string com algumas ou todas as correspondências de um padrão substituídas por um determinado caractere (ou caracteres). O padrão pode ser uma string ou uma {{jsxref("RegExp")}}, e a substituição pode ser uma string ou uma função a ser chamada para cada correspondência. Se o padrão for uma string, apenas a primeira ocorrência será substituída.

+ +

A string original não é modificada.

+ +

Sintaxe

+ +
str.replace(regexp|substr, newSubStr|function)
+ +

Parâmetros

+ +
+
regexp
+
Um objeto {{jsxref ("RegExp")}} ou literal. A correspondência ou correspondências são substituídas por newSubStr ou o valor retornado pela function especificada.
+
substr
+
Uma {{jsxref ("String")}} que será substituída por newSubStr. Ele é tratado como uma string textual e não é interpretado como uma expressão regular. Apenas a primeira ocorrência será substituída.
+
newSubStr
+
A {{jsxref("Global_Objects/String", "String")}} que substitui a substr recebida do parâmetro #1. Uma série de padrões de substituições especiais são suportados. Veja a seção "Especificando uma string como parâmetro" abaixo.
+
function
+
A função (function) chamada cria uma nova substring (para ser colocada no lugar da substring recebida pelo parametro #1). Os argumentos fornececidos para essa função estão descritos na seção "Especificando uma função como parâmetro" mais abaixo.
+
flags {{non-standard_inline}}
+
+

Uma string especificando uma combinação de flags de expressão regular. O uso do parâmetro flags no método String.prototype.replace() é não-padrão. Ao invés de usar este parâmetro, use um objeto {{jsxref("Global_Objects/RegExp", "RegExp")}} com as flags correspondentes. O valor deste parâmetro deve ser uma string consistindo em um ou mais dos seguintes caracteres para afetar a operação, tais como descrito:

+ +
+
g
+
Combinação global.
+
i
+
Ignora diferenças entre maiúsculas e minúsculas.
+
m
+
Combinação em várias linhas.
+
y {{experimental_inline}}
+
Sticky
+
+ +
+

Nota: O argumento flags não funciona no v8 Core (Chrome e NodeJs).

+
+
+
+ +

Valor retornado

+ +

Uma nova string com alguma ou todas as combinações do padrão substituído(s) pelo valor de substituição.

+ +

Descrição

+ +

Este método não muda o objeto {{jsxref("Global_Objects/String", "String")}}. Ele simplesmente retorna uma nova string.

+ +

Para realizar uma pesquisa global e substituir, inclua a flag g na expressão regular ou se o primeiro parâmetro for uma string, inclua g no parâmetro flags.

+ +

Especificando uma string como parâmetro

+ +

A string substituidora pode incluir o seguinte padrão de substituição especial:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Padrão       Insere
$$Insere um "$".
$&Insere a string casada.
$`Insere a porção da string que precede a substring combinada.
$'Insere a porção da string que segue a substring combinada.
$n ou $nnOnde n ou nn são dígitos decimais, insere a n-ésima substring entre parêntesis casada, dado o primeiro argumento foi um objeto {{jsxref("Global_Objects/RegExp", "RegExp")}}.
+ +

Especificando uma função como parâmetro

+ +

Você pode especificar uma função no segundo parâmetro. Neste caso, a função será chamada depois que a correspôndecia for encontrada. O resultado da função (valor retornado) será usado como a string substituta. (Atenção: os padrões de substituição citados acima não se aplicam neste caso). Note que a função será chamada múltiplas vezes para combinação que deve ser substituída se a expressão regular no primeiro parâmetro tiver a regra global.

+ +

Os parâmetros da função são:

+ + + + + + + + + + + + + + + + + + + + + + + + +
Possíveis nomes            Valor fornecido
matchA substring encontrada. Corresponde ao $& acima.
p1, p2, ...O enésimo parâmetro entre parênteses da RegEx no primeiro parâmetro na função replace() {{jsxref("Global_Objects/RegExp", "RegExp")}}. (Corresponde a $1, $2, etc. acima.) Por exemplo, se /(\a+)(\b+)/, for o primeiro parâmetro, p1 é a combinação para \a+, e p2 para \b+.
offsetO offset da string encontrada em relação ao resto da string. Por exemplo, se a string for 'abcd' e a string a ser encontrada for 'bc', então este parâmetro terá o valor 1.
+

string

+
+

A string completa que está sendo examinada.

+
+ +

(O número exato de argumentos dependerá se o primeiro parâmetro for uma {{jsxref("Global_Objects/RegExp", "RegExp")}} e de quantas combinações entre parênteses houver).

+ +

O exemplo a seguir irá substituir o valor de newString para 'abc - 12345 - #$*%':

+ +
function replacer(match, p1, p2, p3, offset, string) {
+  // p1 não possui digitos,
+  // p2 possui dígitos, e p3 não possui alfanuméricos
+  return [p1, p2, p3].join(' - ');
+}
+var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
+
+// retorna "abc - 12345 - #$*%"
+
+ +

Exemplos

+ +

Definindo uma expressão regular com replace()

+ +

No exemplo a seguir foi definida uma expressão regular com a flag "i" (que ignora diferenças entre maiúsculas e minúsculas) no método replace().

+ +
var str = 'Twas the night before Xmas...';
+var newstr = str.replace(/xmas/i, 'Christmas');
+
+console.log(newstr);
+// retorna "Twas the night before Christmas..."
+ +
+

Nota: Veja este guia para maiores explicações as sobre expressões regulares.

+
+ +

Usando global e ignore com replace()

+ +

Substituir globalmente, "g", só pode ser feito com uma expressão regular. No exemplo a seguir, a expressão regular inclui as flags global e ignore que permitem a função replace() substituir cada "maçãs" por "laranjas" na string.

+ +
var re = /maçãs/gi;
+var str = 'As maçãs são redondas. As maçãs são suculentas.';
+var newstr = str.replace(re, 'laranjas');
+
+console.log(newstr);
+// retorna
+// "As laranjas são redondas. As laranjas são suculentas."
+ +

Trocando palavras em uma string

+ +

O script a seguir troca as palavras na string. Para o texto que vai substituir, o script usa grupos de captura e os padrões de substituição $1 e $2.

+ +
var re = /(\w+)\s(\w+)/;
+var str = 'John Smith';
+var newstr = str.replace(re, '$2, $1');
+console.log(newstr);  // Smith, John
+ +

Usando uma função que modifica os caracteres coincidentes

+ +
+

Neste exemplo, todas as ocorrências de letras maiúsculas na string são convertidas em minúsculas e um hífen é inserido antes do local de correspondência. O importante aqui é que é necessário uma operação adicional no item antes dele ser retornado como substituído.

+
+ +

A função de substituição aceita a string coincidida como parâmetro e usa ela para transformar os caracteres e concatenar um hífen antes de retornar.

+ +
function styleHyphenFormat(propertyName) {
+  function upperToHyphenLower(match, offset, string) {
+    return (offset ? '-' : '') + match.toLowerCase();
+  }
+  return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
+}
+ +

Dado o seguinte parâmetro: styleHyphenFormat('borderTop'), o valor retornado é 'border-top'.

+ +

Como queremos transformar o resultado da coincidencia antes da substituição final, nós devemos usar uma função. Isto força que a transformação seja feita antes da chamada do método {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}. Se tivéssemos tentado isto sem a função, o método {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} não teria efeito.

+ +
let newString = propertyName.replace(/[A-Z]/g, '-' + '$&'.toLowerCase());  // não funciona
+ +

Isso acontece porque '$&'.toLowerCase() será executada antes (resultando no mesmo que '$&') em vez de usar os caracteres da string a ser transformada.

+ +

Substituindo graus Fahrenheit em Celsius

+ +

O exemplo a seguir converte graus Fahrenheit em Celsius. O grau Fahrenheit deve ser um número terminado com "F". A função retorna o número em Celsius terminando em "C". Por exemplo, se o valor de entrada for "212F", a função deve retornar "100C". Se o número for "0F", a função deve retornar "-17.77777777777778C".

+ +

A expressão regular test verifica por números que terminem com "F". O número de graus Fahrenheit é acessível pela função pelo segundo parâmetro, p1. A função calcula o Celsius baseado no Fahrenheit passado via string para a função f2c(). A f2c() então retorna o número em Celsius.

+ +
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);
+}
+ +

Use uma função com expressão regular para evitar loops for

+ +

O exemplo a seguir pega um padrão de string e converte em um array de objetos.

+ +

Entrada:

+ +

Uma string com caracteres: x- e _

+ +
x-x_
+x---x---x---x---
+x-xxx-xx-x-
+x_x_x___x___x___
+ +

Saída:

+ +

Um array de objetos. Um 'x' denota um estado 'on', um '-' (hífen) denota um estado 'off'  e um '_' (underline) denota o comprimento do estado 'on'.

+ +
[
+  { on: true, length: 1 },
+  { on: false, length: 1 },
+  { on: true, length: 2 }
+  ...
+]
+ +

Código:

+ +
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);
+ +

O código gera um array de 3 objetos como desejado sem usar uma função de loop.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 3rd Edition.StandardDefnição inicial. Implementado no 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')}}
+ + + +
{{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}}
+
+ +

Notas específicas do Firefox

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/replaceall/index.html b/files/pt-br/web/javascript/reference/global_objects/string/replaceall/index.html new file mode 100644 index 0000000000..c545573689 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/replaceall/index.html @@ -0,0 +1,178 @@ +--- +title: String.prototype.replaceAll() +slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll +tags: + - Expressão Regular + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - regex + - replaceAll() +translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll +--- +
{{JSRef}}
+ +
Nota: A partir de Agosto de 2020, o método replaceAll() continuará sendo suportado pelo Firefox, mas não pelo Chrome. Ele estará disponível somente no Chrome 85.
+ +

O método replaceAll() retorna uma nova string com todas as ocorrências de um padrão substituídas por uma substituição. O padrão pode ser uma string ou uma {{jsxref ("RegExp")}}, e a substituição pode ser uma string ou uma função a ser chamada para cada ocorrência.
+
+ A string original é mantida sem modificação.

+ +
{{EmbedInteractiveExample("pages/js/string-replaceall.html")}}
+ + + +

Sintaxe

+ +
const newStr = str.replaceAll(regexp|substr, newSubstr|function)
+
+ +
+

Nota: quando usar uma `regexp`, você deve colocar o sinalizador (flag) global "g". Do contrário, será retornado um TypeError: "replaceAll must be called with a global RegExp".

+
+ +

Parâmetros

+ +
+
regexp (padrão)
+
Uma {{jsxref ("RegExp")}} ou literal com o sinalizador (flag) global. As ocorrências serão substituídas por newSubstr ou pelo valor retornado da function (função) especificada.
+
substr (padrão)
+
Uma {{jsxref ("String")}} que deve ser substituída por newSubstr. É tratada como uma string literal e não é interpretada como uma expressão regular (RegExp).
+
newSubstr (substituição)
+
É a {{jsxref("String")}} que substitui a substring especificada pelo parâmetro regexp ou substr. Um número de padrões especiais para substituição são suportados; veja a seção "Especificando uma string como parâmetro" abaixo.
+
function (substituição)
+
Uma função a ser chamada retornando a nova substring a ser usada para substituir as correspondências para a dada regexp ou substr. Os argumentos passados para esta função são descritos na seção "Especificando uma função como parâmetro" abaixo.
+
+ +

Valor de retorno

+ +

Um nova string, com todas as ocorrências de um padrão substituído por uma substituição.

+ +

Descrição

+ +

Este método não muda o objeto {{jsxref("String")}} original. Ele simplesmente retorna uma nova string.

+ +

Especificando uma string como parâmetro

+ +

A string de substituição pode incluir os seguimentos padrões especiais de substituição:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PadrãoInsere
$$Insere um "$".
$&Insere a substring correspondente.
$`Insere a porção da string que precede a substring correspondente.
$'Insere a porção da string que sucede a substring correspondente.
$nOnde n é um inteiro positivo menor que 100, insere a n-ésima string submatch entre parênteses, desde que o primeiro argumento seja um objeto {{jsxref("RegExp")}}. Note que isso é indexado começando pelo 1.
+ +

Especificando uma função como parâmetro

+ +

Você pode especificar uma função como segundo parâmetro. Neste caso, a função será chamada depois da ocorrência ter sido encontrada. O resultado da função (valor de retorno) será usado como uma string para substituição. (Nota: Os padrões especiais mencionados acima não se aplicam neste caso.)

+ +

Note que a função será chamada múltiplas vezes para cada ocorrência a ser substituída se a expressão regular no primeiro parâmetro for global "g".

+ +

Os argumentos para funções são os seguintes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Nome possívelValor fornecido
matchA substring correspondida. (Corresponde ao $& acima.)
p1, p2, ...A n-ésima string encontrada por um grupo de captura entre parênteses, desde que o primeiro argumento para replace() seja uma {{jsxref("RegExp")}}. (Corresponde a $1, $2, etc. acima.) Por exemplo, se /(\a+)(\b+)/, foi dado, p1 é a correspondência para \a+, e p2 para \b+.
offsetO deslocamento da substring correspondente em toda a string sendo examinada. (Por exemplo, se toda a string for 'abcd' e a substring correspondente for 'bc', este argumento será 1.)
stringA string inteira será examinada.
+ +

(O número exato de argumentos depende se o primeiro argumento é um objeto {{jsxref("RegExp")}} — e, se então, quantas subcorrespondências entre parênteses são especificadas.)

+ +

Exemplos

+ +

Usando replaceAll()

+ +
'aabbcc'.replaceAll('b', '.');
+// 'aa..cc'
+ +

RegExp sem flag "g" retorando erro

+ +

Ao usar uma expressão regular para realizar uma pesquisa, a mesma deve conter a flag global "g". O código abaixo não irá funcionar:

+ +
'aabbcc'.replaceAll(/b/, '.');
+TypeError: replaceAll must be called with a global RegExp
+
+ +

Já o código abaixo vai funcionar:

+ +
'aabbcc'.replaceAll(/b/g, '.');
+"aa..cc"
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}}
+ + + + + +

{{Compat("javascript.builtins.String.replaceAll")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/search/index.html b/files/pt-br/web/javascript/reference/global_objects/string/search/index.html new file mode 100644 index 0000000000..0abfec19df --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/search/index.html @@ -0,0 +1,153 @@ +--- +title: String.prototype.search() +slug: Web/JavaScript/Reference/Global_Objects/String/search +tags: + - Expressões Regulares + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - search() +translation_of: Web/JavaScript/Reference/Global_Objects/String/search +--- +
{{JSRef}}
+ +

O método search() realiza uma busca por uma ocorrência entre uma expressão regular e uma {{jsxref ("String")}}.

+ +

Sintaxe

+ +
str.search(regexp)
+ +

Parâmetros

+ +
+
regexp
+
Um objeto contendo uma expressão regular. Se um objeto obj for passado como parâmetro e não for do tipo RegExp, ele será implicitamente convertido para uma {{jsxref("RegExp")}} através da instrução new RegExp(obj).
+
+ +

Valor retornado

+ +

O índice na string do primeiro trecho que satisfaz a expressão regular. Do contrário, o valor -1 será retornado.

+ +

Descrição

+ +

Quando você quiser saber se um padrão foi encontrado, e também saber seu índice dentro de uma string, use search(). (Se você deseja apenas saber se ele existe, use o método semelhante {{jsxref ("RegExp.prototype.test()", "test()")}} do protótipo RegExp, que retorna um booleano.)

+ +

Para obter mais informações (mas em compensação a execução se torna mais lenta), use {{jsxref ("String.prototype.match()", "match()")}} (semelhante ao método {{jsxref ("RegExp.prototype.exec()" , "exec()")}} da RegExp).

+ +

Exemplos

+ + + +

O exemplo a seguir pesquisa uma string com dois objetos regexp diferentes para mostrar uma pesquisa bem-sucedida (valor positivo) vs. uma pesquisa mal-sucedida (-1).

+ +
let str = "hey JudE"
+let re = /[A-Z]/g
+let reDot = /[.]/g
+console.log(str.search(re))    // retorna 4, que é o índice da primeira letra maiúscula "J"
+console.log(str.search(reDot)) // retorna -1 pois não conseguiu encontrar o ponto "."
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificaçãoStatusComentário(s)
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.search', 'String.prototype.search')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Notas específicas para a engine Gecko

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/slice/index.html b/files/pt-br/web/javascript/reference/global_objects/string/slice/index.html new file mode 100644 index 0000000000..74d6819506 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/slice/index.html @@ -0,0 +1,233 @@ +--- +title: String.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/String/slice +tags: + - JavaScript + - Prototipo + - Reference + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/slice +--- +
{{JSRef("Global_Objects", "String")}}
+ +

Sumário

+ +

O método slice() extrai uma parte de uma string e a retorna como uma nova string, sem modificar a string original.

+ +

Sintaxe

+ +
str.slice(startIndex[, endIndex])
+ +

Paramêtros

+ +
+
startIndex
+
É o índice, de base zero, onde se inicia a extração. Se for um número negativo, será o mesmo que executar str.length + startIndex (por exemplo, se startIndex for -3, será o mesmo que executar str.length - 3).
+
+
const nome = 'Ricardo';
+console.log(nome.slice(-3)); // retorna 'rdo'
+
+
+ +
+
Se startIndex for maior ou igual a str.length, uma string vazia será retornada.
+
+
const nome = 'Ricardo';
+console.log(nome.slice(7)); // retorna <empty string>'
+
+
+
endIndex
+
Opcional. É o índice, de base zero, onde termina a extração. O caractere que possuir este índice não será incluso.
+
Se omitido ou possuir valor de undefined, ou for maior que str.length, slice() extrairá até o fim da string.
+
+
const nome = 'Ricardo';
+
+// omitindo fimSlice
+console.log(nome.slice(0)); // retorna 'Ricardo'
+
+// undefined fimSlice
+let i; // variável criada sem atribuir valor
+console.log(nome.slice(0, i)); // retorna 'Ricardo'
+
+// passando número maior que o tamanho da string
+console.log(nome.slice(0, 7)); // retorna 'Ricardo'
+
+
Se negativo, é o mesmo que executar str.length + endIndex onde str.length é o tamanho da string (por exemplo, se endIndex é -3, é como executar str.length - 3).
+
+ +
+
+
const nome = 'Ricardo';
+console.log(nome.slice(0, -3)); // retorna 'Rica'
+
+
+
Se for um valor diferente de indefinido e, ao mesmo tempo não for um número, uma string vazia será retornada
+
+
const nome = 'Ricardo';
+let i; // variável criada sem valor atribuído
+
+// passando algum valor ≠ de undefined e ≠ de número
+console.log(nome.slice(0, NaN)); // retorna <empty string>
+console.log(nome.slice(2, false)); // retorna <empty string>
+console.log(nome.slice(5, i)); // retorna 'Ricardo'
+
+ +

Se endIndex for definido e startIndex for negativo, endIndex deve ser negativo também, do contrário uma string vazia é retornada.

+ +
const nome = 'Ricardo';
+console.log(nome.slice(-3, 0)); // retorna <empty string>
+
+ +

Caso endIndex seja definido e startIndexendIndex sejam ambos positivos ou negativos, endIndex deve ser maior que startIndex, do contrário uma string vazia é retornada.

+ +
const nome = 'Ricado';
+console.log(nome.slice(-1, -3)); // retorna <empty string>
+console.log(nome.slice(3, 1)); // retorna <empty string>
+
+
+
+ +

Retorno

+ +

Uma nova string contento a porção extraída da string.

+ +

Descrição

+ +

slice() extrai um texto de uma string e retorna uma nova string. Modificações realizadas no texto de uma string não afetam a outra string.

+ +

slice() extrai até, mas não inclue endIndex.
+
+ str.slice(1, 4) extrai a partir do segundo caractere até o quarto caractere (ou seja, os caracteres de índices 1, 2, e 3).

+ +

Por exemplo, str.slice(2, -1) extrai a partir do terceiro carácter até o penúltimo caractere da string.

+ +
const nome = 'Ricardo';
+console.log(nome.slice(2, -1)); // retorna 'card'
+
+ +

Exemplos

+ +

Exemplo: Usando slice() para criar uma nova string

+ +

O exemplo a seguir usa slice() para criar uma nova string.

+ +
var str1 = 'A manhã está sobre nós', // o tamanho de str1 é 22
+    str2 = str1.slice(3, 10),
+    str3 = str1.slice(2, -2),
+    str4 = str1.slice(13),
+    str5 = str1.slice(22);
+console.log(str2); // retorna 'anhã es'
+console.log(str3); // retorna 'manhã está sobre n'
+console.log(str4); // retorna 'sobre nós'
+console.log(str5); // retorna <empty string>
+
+ +

Exemplo: Usando slice() com índices negativos.

+ +

O exemplo a seguir usa o slice() com índices negativos.

+ +
var str = 'A manhã está sobre nós';
+str.slice(-3);     // retorna 'nós'
+str.slice(-3, -1); // retorna 'nó'
+str.slice(0, -1);  // retorna 'A manhã está sobre nó'
+
+ +

O exemplo abaixo percorre o índice no sentido anti-horário (de trás para frente) até chegar ao índice 11 da string, que será o início. Logo após, percorre o índice da string no sentido horário até chegar ao índice 16 da string, que será o fim.

+ +
console.log(str.slice(-11, 16)) // retorna "á sob"
+ +

O exemplo abaixo percorre o índice no sentido horário até chegar ao índice 10 da string, que será o início. Logo após, percorre o índice da string no sentido anti-horário até chegar ao índice 7 da string, que será o fim.

+ +
console.log(str.slice(10, -7)) // retorna "tá so"
+ +

O exemplo abaixo percorre o índice no sentido anti-horário até chegar ao índice 5 da string, que será o início. Logo após, percorre o índice da string novamente no sentido anti-horário até chegar ao índice 1 da string, que será o fim.

+ +
console.log(str.slice(-5, -1)) // retorna "e nó"
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
ECMAScript 3rd Edition.StandardInitial definition. Implemented in 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')}}
+ +

Compatibilidade entre 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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/small/index.html b/files/pt-br/web/javascript/reference/global_objects/string/small/index.html new file mode 100644 index 0000000000..2983a5c9fc --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/small/index.html @@ -0,0 +1,72 @@ +--- +title: String.prototype.small() +slug: Web/JavaScript/Reference/Global_Objects/String/small +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - small() +translation_of: Web/JavaScript/Reference/Global_Objects/String/small +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método small() cria um elemento HTML <small> que faz com que uma string seja exibida em uma fonte pequena.

+ +

Sintaxe

+ +
str.small()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <small>.

+ +

Descrição

+ +

O método small() cria uma string dentro de uma tag <small>: "<small>str</small>".

+ +

Exemplos

+ +

Usando small()

+ +

O exemplo a seguir usa métodos do objeto global String para alterar o tamanho da string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.small());     // <small>Olá, mundo</small>
+console.log(worldString.big());       // <big>Olá, mundo</big>
+console.log(worldString.fontsize(7)); // <font size="7">Olá, mundo</fontsize>
+
+ +

Com o objeto element.style você pode pegar o atributo de estilo do elemento e manipulá-lo de forma mais genérica, por exemplo:

+ +
document.getElementById('#oIdDoElemento').style.fontSize = '0.7em';
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.small', 'String.prototype.small')}}
+ + + + + +

{{Compat("javascript.builtins.String.small")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/split/index.html b/files/pt-br/web/javascript/reference/global_objects/string/split/index.html new file mode 100644 index 0000000000..80b42f28e0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/split/index.html @@ -0,0 +1,282 @@ +--- +title: String.prototype.split() +slug: Web/JavaScript/Reference/Global_Objects/String/split +tags: + - Expressões Regulares + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - split() +translation_of: Web/JavaScript/Reference/Global_Objects/String/split +--- +
{{JSRef}}
+ +

O método split() divide uma {{jsxref ("String")}} em uma lista ordenada de substrings, coloca essas substrings em um array e retorna o array. A divisão é feita procurando um padrão, onde o padrão é fornecido como o primeiro parâmetro na chamada do método.

+ +

Sintaxe

+ +
str.split([separator[, limit]])
+ +

Parâmetros

+ + + +
+
separator
+
Opcional. Especifica o caractere, ou conjunto de caracteres, a ser usado para separar a string. O separador pode ser uma string ou uma {{jsxref("Global_Objects/RegExp", "expressão regular", "", 1)}}.
+
+ +
+

Aviso: Quando uma string vazia ("") é usada como separador, a string não é dividida por caracteres percebidos pelo usuário (grapheme clusters) ou caracteres Unicode (pontos de código), mas por unidades de código UTF-16. Isso destrói pares substitutos. Consulte “Como você transforma uma string em um array de caracteres em JavaScript?” no StackOverflow.

+
+ +
+
limite
+
+

Opcional. Um número inteiro não negativo especificando um limite no número de divisões a serem encontradas. O método split() ainda dividirá em cada ocorrência do separador, até que o número de itens divididos corresponda ao limite ou que a string fique aquém do separador.

+ +
    +
  • O array pode conter menos entradas do que o limit se o final da string for alcançado antes que o limite seja atingido.
  • +
  • Se o limit for 0, [] será retornado.
  • +
+
+
+ +

Valor retornado

+ +

Um array de strings divididos em cada ponto onde o separador ocorre na string informada.

+ +

Descrição

+ +

Quando encontrado, o caractere designado como o separator é removido da string e as substrings são retornadas em um array. Se o separator não for encontrado ou for omitido, o array irá conter um elemento consistindo da string inteira. Se o separator for uma string vazia, str será convertida em um array de caracteres.

+ +

Se o separador for uma expressão regular que contenha parênteses de captura, cada vez que o separator for encontrado, os resultados (incluindo qualquer resultado undefined) dos parênteses de captura serão emendados ao array de saída. Entretanto, nem todos os navegadores possuem suporte a isso.

+ +

Exemplos

+ +

Usando split()

+ +

Quando a string está vazia, o split() irá retornar um array contendo uma string vazia ao invés de um array vazio. Se a string e o separador forem ambos strings vazias, um array vazio será retornado.

+ +
const myString = ''
+const splits = myString.split()
+
+console.log(splits);
+
+// retorna [""]
+ +

O exemplo a seguir define uma função que divide uma string em um array de strings usando o separador especificado. Depois de dividir a string, a função exibe mensagens indicando a string original (antes da divisão), o separador usado, o número de elementos no array e os elementos individuais do array.

+ +
function splitString(stringToSplit, separator) {
+  var arrayOfStrings = stringToSplit.split(separator);
+
+  console.log('A string original é: "' + stringToSplit + '"');
+  console.log('O separador é: "' + separator + '"');
+  console.log('O array tem ' + arrayOfStrings.length + ' elementos: ' + arrayOfStrings.join(' / '));
+}
+
+var tempestString = 'Oh brave new world that has such people in it.';
+var monthString = 'Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez';
+
+var space = ' ';
+var comma = ',';
+
+splitString(tempestString, space);
+splitString(tempestString);
+splitString(monthString, comma);
+
+ +

Esse exemplo produz a saída a seguir:

+ +
A string original é: "Oh brave new world that has such people in it."
+O separador é: " "
+O array possui 10 elementos: Oh / brave / new / world / that / has / such / people / in / it.
+
+A string original é: "Oh brave new world that has such people in it."
+O separador é: "undefined"
+O array possui 1 elementos: Oh brave new world that has such people in it.
+
+A string original é: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
+O separador é: ","
+O array possui 12 elementos: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec
+
+ +

Removendo espaços de uma string

+ +

No exemplo a seguir, split() procura por 0 ou mais espaços seguidos por um ponto e vírgula seguido por 0 ou mais espaços e, quando encontrar, remove os espaços e os pontos e vírgulas da string.  nameList é o array retornado como resultado do split().

+ +
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
+
+console.log(names);
+
+var re = /\s*;\s*/;
+var nameList = names.split(re);
+
+console.log(nameList);
+
+ +

O retorno do código acima são duas linhas. A primeira linha registra a string original e a segunda linha registra o array resultante.

+ +
Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
+[ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
+
+ +

Retornando um número limitado de divisões

+ +

No exemplo a seguir, o split() procura por 0 ou mais espaços em uma string e retorna as 3 primeiras divisões que encontrar.

+ +
var myString = 'Hello World. How are you doing?';
+var splits = myString.split(' ', 3);
+
+console.log(splits);
+
+ +

O script exibirá o texto a seguir:

+ +
["Hello", "World.", "How"]
+
+ +

Parênteses de Captura

+ +

Se o separator contém parênteses de captura, os resultados correspondentes são retornados no array.

+ +
var myString = 'Hello 1 word. Sentence number 2.';
+var splits = myString.split(/(\d)/);
+
+console.log(splits);
+
+ +

O script exibirá o texto a seguir:

+ +
[ "Hello ", "1", " word. Sentence number ", "2", "." ]
+
+ +
+

Nota: \d corresponde à classe de caracteres para dígitos entre 0 e 9.

+
+ +

Revertendo uma String usando split()

+ +
+

Esta não é a mlehor maneira de reverter uma string:

+ +
const str = 'asdfghjkl'
+const strReverse = str.split('').reverse().join('')
+// 'lkjhgfdsa'
+
+// split() retorna um array onde os métodos
+// reverse() e join() podem ser aplicados
+ +

Não funciona se a string contém grapheme clusters, mesmo ao usar uma divisão compatível com Unicode. (Use, por exemplo, esrever no lugar.)

+ +
const str = 'résumé'
+const strReverse = str.split(/(?:)/u).reverse().join('')
+// retorna "́emuśer"
+ +

Bonus: use o operador {{jsxref("Operators/Comparison_Operators", "===", "#Identity_strict_equality_(===)")}} para testar se a string original era um palíndromo.

+
+ + + +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.split', 'String.prototype.split')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/startswith/index.html b/files/pt-br/web/javascript/reference/global_objects/string/startswith/index.html new file mode 100644 index 0000000000..899b331458 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/startswith/index.html @@ -0,0 +1,96 @@ +--- +title: String.prototype.startsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/startsWith +tags: + - Começa com + - ECMAScript6 + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - startsWith() +translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith +--- +
{{JSRef}}
+ +

O método startsWith() determina se uma string começa com os caracteres especificados, retornando true ou false.

+ +

{{EmbedInteractiveExample("pages/js/string-startswith.html")}}

+ +

Sintaxe

+ +
str.startsWith(searchString[, position])
+ +

Parâmetros

+ +
+
searchString
+
Os caracteres a serem procurados a partir do início dessa string.
+
position
+
Opcional. A posição nessa string na qual se inicia a busca pela searchString. O valor padrão é 0.
+
+

Valor retornado

+
+
+ +

true se os caracteres fornecidos forem encontrados no início da string. Se não, false.

+ +

Descrição

+ +

Esse método permite determinar se uma string começa ou não com outra string. Esse método é case-sensitive (difere maiúsculas de minúsculas, e vice-versa).

+ +

Exemplos

+ +

Usando startsWith()

+ +
//startswith
+let str = 'Ser ou não ser, eis a questão.';
+
+console.log(str.startsWith('Ser'))          // true
+console.log(str.startsWith('não ser'))      // false
+console.log(str.startsWith('não ser', 7))  // true
+
+ +

Polyfill

+ +

Este método foi adicionaldo à especificação ECMAScript 2015 e pode ainda não estar disponível em todas as implementações do JavaScript. No entanto, você pode usar o polyfill String.prototype.startsWith() adicionando o seguinte código:

+ +
if (!String.prototype.startsWith) {
+    Object.defineProperty(String.prototype, 'startsWith', {
+        value: function(search, rawPos) {
+            var pos = rawPos > 0 ? rawPos|0 : 0;
+            return this.substring(pos, pos + search.length) === search;
+        }
+    });
+}
+ +

Um polyfill mais robusto (totalmente conforme com a especificação ES2015), mas com menor desempenho e compacto está disponível no GitHub por Mathias Bynens.

+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.startswith', 'String.prototype.startsWith')}}
+ + + +
{{Compat("javascript.builtins.String.startsWith")}}
+ +
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/strike/index.html b/files/pt-br/web/javascript/reference/global_objects/string/strike/index.html new file mode 100644 index 0000000000..004f93b675 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/strike/index.html @@ -0,0 +1,68 @@ +--- +title: String.prototype.strike() +slug: Web/JavaScript/Reference/Global_Objects/String/strike +tags: + - Descontinuado + - JavaScript + - Prototipo + - String + - metodo + - strike() +translation_of: Web/JavaScript/Reference/Global_Objects/String/strike +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método strike() cria um elemento HTML <strike> que faz com que uma string seja exibida com o texto riscado.

+ +

Sintaxe

+ +
str.strike()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <strike>.

+ +

Descrição

+ +

O método strike() cria uma string dentro uma tag <strike>: "<strike>str</strike>".

+ +

Exemplos

+ +

Usando strike()

+ +

O exemplo a seguir usa métodos do objeto global String para alterar a formatação da string:

+ +
var worldString = 'Olá, mundo';
+
+console.log(worldString.blink()); // <blink>Olá, mundo</blink>
+console.log(worldString.bold()); // <b>Olá, mundo</b>
+console.log(worldString.italics()); // <i>Olá, mundo</i>
+console.log(worldString.strike()); // <strike>Olá, mundo</strike>
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.strike', 'String.prototype.strike')}}
+ + + + + +

{{Compat("javascript.builtins.String.strike")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/sub/index.html b/files/pt-br/web/javascript/reference/global_objects/string/sub/index.html new file mode 100644 index 0000000000..69289bd133 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/sub/index.html @@ -0,0 +1,123 @@ +--- +title: String.prototype.sub() +slug: Web/JavaScript/Reference/Global_Objects/String/sub +tags: + - Descontinuado + - JavaScript + - Prototipo + - String + - metodo + - sub() +translation_of: Web/JavaScript/Reference/Global_Objects/String/sub +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método sub() cria um elemento HTML <sub> que faz com que uma string seja exibida como subscrito (texto pequeno).

+ +

Sintaxe

+ +
str.sub()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <sub>.

+ +

Descrição

+ +

O método sub() cria uma string dentro de uma tag <sub>: "<sub>str</sub>".

+ +

Exemplos

+ +

Usando os métodos sub() e sup()

+ +

Os exemplos seguintes usam o métodos sub() e {{jsxref("String.prototype.sup()", "sup()")}} para formatar uma string:

+ +
var superText = 'superscript';
+var subText = 'subscript';
+
+console.log('This is what a ' + superText.sup() + ' looks like.');
+// This is what a <sup>superscript</sup> looks like
+
+console.log('This is what a ' + subText.sub() + ' looks like.');
+// This is what a <sub>subscript</sub> looks like.
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-string.prototype.sub', 'String.prototype.sub')}}{{Spec2('ES6')}}Definição inicial. Implementado no JavaScript 1.0.
{{SpecName('ESDraft', '#sec-string.prototype.sub', 'String.prototype.sub')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile("1.0")}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/substr/index.html b/files/pt-br/web/javascript/reference/global_objects/string/substr/index.html new file mode 100644 index 0000000000..c1e45beaef --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/substr/index.html @@ -0,0 +1,140 @@ +--- +title: String.prototype.substr() +slug: Web/JavaScript/Reference/Global_Objects/String/substr +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - substr() +translation_of: Web/JavaScript/Reference/Global_Objects/String/substr +--- +
{{JSRef}}
+ +

O método substr() retorna uma parte da string, começando no índice especificado e estendendo-se por um determinado número de caracteres posteriormente.

+ +
{{EmbedInteractiveExample("pages/js/string-substr.html")}}
+ +

Sintaxe

+ +
str.substr(start[, length])
+ +

Parâmetros

+ +
+
start
+
Local para começar a extrair os caracteres.
+
length
+
Opcional. O número de caracteres a serem extraídos.
+
+ +

Valor de retorno

+ +

Uma nova string contendo a seção extraída da string fornecida.

+ +

Descrição

+ +

O substr() extrai caracteres de comprimento de uma str, contando a partir do índice inicial.

+ + + +
+

Nota: No Microsoft JScript, valores negativos no argumento start não são considerados como referência ao final da string.

+
+ + + +

Exemplos

+ +

Usando substr()

+ +
var aString = 'Mozilla';
+
+console.log(aString.substr(0, 1));   // 'M'
+console.log(aString.substr(1, 0));   // ''
+console.log(aString.substr(-1, 1));  // 'a'
+console.log(aString.substr(1, -1));  // ''
+console.log(aString.substr(-3));     // 'lla'
+console.log(aString.substr(1));      // 'ozilla'
+console.log(aString.substr(-20, 2)); // 'Mo'
+console.log(aString.substr(20, 2));  // ''
+ +

Polyfill

+ +

JScript da Microsoft não suporta valores negativos para o índice de start. Se você deseja usar esse recurso, você pode usar o seguinte código de compatibilidade para evitar esse erro:

+ +
// 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);
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES3')}}{{Spec2('ES3')}}Defined in the (informative) Compatibility Annex B. Implemented in JavaScript 1.0.
{{SpecName('ES5.1', '#sec-B.2.3', 'String.prototype.substr')}}{{Spec2('ES5.1')}}Defined in the (informative) Compatibility Annex B
{{SpecName('ES6', '#sec-string.prototype.substr', 'String.prototype.substr')}}{{Spec2('ES6')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
{{SpecName('ESDraft', '#sec-string.prototype.substr', 'String.prototype.substr')}}{{Spec2('ESDraft')}}Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers
+ + + + + +

{{Compat("javascript.builtins.String.substr")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/substring/index.html b/files/pt-br/web/javascript/reference/global_objects/string/substring/index.html new file mode 100644 index 0000000000..c54108cb75 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/substring/index.html @@ -0,0 +1,229 @@ +--- +title: String.prototype.substring() +slug: Web/JavaScript/Reference/Global_Objects/String/substring +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - substring() +translation_of: Web/JavaScript/Reference/Global_Objects/String/substring +--- +

{{JSRef("Global_Objects", "String")}}

+ +

Resumo

+ +

O método substring() retorna a parte da string entre os índices inicial e final, ou até o final da string.

+ +

Sintaxe

+ +
str.substring(indexStart[, indexEnd])
+ +

Parâmetros

+ +
+
indexStart
+
Um inteiro entre 0 e o comprimento da string (str.length), especificando a posição na string do primeiro caractere a ser incluído na substring retornada.
+
indexEnd
+
Opcional. Um inteiro entre 0 e o comprimento da string (str.length), especificando a posição na string do primeiro caractere a não ser mais incluído na substring retornada.
+
+ +

Valor retornado

+ +

Uma nova string contendo a parte especificada da string fornecida.

+ +

Descrição

+ +

substring() extrai caracteres desde indexStart até, mas não incluindo, indexEnd. Em particular:

+ + + +

Se indexStart for maior que indexEnd, então o efeito do substring() é como se os dois argumentos estivessem trocados, por exemplo, str.substring(1, 0) == str.substring(0, 1).

+ +

Exemplos

+ +

Usando substring()

+ +

O seguinte exemplo usa substring() para mostrar caracteres da palavra 'Mozilla':

+ +
var anyString = "Mozilla";
+
+// Mostra "Moz"
+console.log(anyString.substring(0,3));
+console.log(anyString.substring(3,0));
+
+// Mostra "lla"
+console.log(anyString.substring(4,7));
+console.log(anyString.substring(7,4));
+
+// Mostra "Mozill"
+console.log(anyString.substring(0,6));
+
+// Mostra "Mozilla"
+console.log(anyString.substring(0,7));
+console.log(anyString.substring(0,10));
+
+ +

Usando substring() com length

+ +

O exemplo a seguir usa o método substring() e a propriedade {{jsxref ("String.length", "length")}} para extrair os últimos caracteres de uma string específica. Este método pode ser mais fácil de lembrar, visto que você não precisa saber os índices inicial e final como faria nos exemplos acima.

+ +
// Mostra 'illa', os últimos 4 caracteres
+let anyString = 'Mozilla'
+let anyString4 = anyString.substring(anyString.length - 4)
+console.log(anyString4);
+
+// Mostra 'zilla', os últimos 5 caracteres
+let anyString = 'Mozilla'
+let anyString5 = anyString.substring(anyString.length - 5)
+console.log(anyString5);
+ +

A diferença entre substring() e substr()

+ +

Há uma diferença sutil entre os métodos substring() e {{jsxref("String.substr", "substr()")}}, então você deve ter cuidado para não confundi-los.

+ +

Os argumentos de substring() representam os índices inicial e final, enquanto os argumentos de substr() representam o índice inicial e o número de caracteres a serem incluídos na string retornada.

+ +

Além disso, substr() é considerado um recurso legacy no ECMAScript e pode ser removido em versões futuras, portanto, é melhor evitar usá-lo, se possível.

+ +
let text = 'Mozilla'
+console.log(text.substring(2,5))  // retorna "zil"
+console.log(text.substr(2,3))     // retorna "zil"
+ +

Diferenças entre substring() e slice()

+ +

Os métodos substring() e {{jsxref("String.slice", "slice()")}} são quase idênticos, mas existem algumas diferenças sutis entre os dois, especialmente na forma como os argumentos negativos são tratados.

+ +

O método substring() troca seus dois argumentos se indexStart for maior que indexEnd, o que significa que uma string ainda será retornada. O método {{jsxref("String.slice", "slice()")}} retorna uma string vazia caso o mesmo ocorra.

+ +
let text = 'Mozilla'
+console.log(text.substring(5, 2))  // retorna "zil"
+console.log(text.slice(5, 2))      // retorna ""
+ +

Se um ou ambos os argumentos forem negativos ou NaN, o método substring() os tratará como se fossem 0.

+ +
console.log(text.substring(-5, 2))  // retorna "Mo"
+console.log(text.substring(-5, -2)) // retorna ""
+ +

slice() também trata os argumentos NaN como 0, mas quando recebe valores negativos, ele conta regressivamente a partir do final da string para encontrar os índices.

+ +
console.log(text.slice(-5, 2))   // retorna ""
+console.log(text.slice(-5, -2))  // retorna "zil"
+ +

Veja a página {{jsxref("String.slice", "slice()")}} para mais exemplos com números negativos.

+ +

Substituindo uma substring() com uma string

+ +

O seguinte exemplo substitui uma substring dentro de uma string. Ela irá substituir ambos caracteres e substrings individualmente. A função invocada na linha final do exemplo altera a string "Brave New World" para "Brave New Web".

+ +
function replaceString(oldS, newS, fullS) {
+// Substitui oldS por newS na string 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("World", "Web", "Brave New World");
+ +

Note que isto pode resultar em um loop infinito se oldS for um substring de newS -- por exemplo, se você tentou substituir "World" com "OtherWorld". O melhor método para substituir strings é o seguinte:

+ +
function replaceString(oldS, newS,fullS){
+  return fullS.split(oldS).join(newS);
+}
+ +

O código acima serve como um exemplo para operações com substring. Se você precisa substituir substrings, na maioria das vezes você vai querer usar {{jsxref("String.prototype.replace()")}}.

+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
ECMAScript 1st Edition.StandardImplementado no 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() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/sup/index.html b/files/pt-br/web/javascript/reference/global_objects/string/sup/index.html new file mode 100644 index 0000000000..32bfbef1fd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/sup/index.html @@ -0,0 +1,69 @@ +--- +title: String.prototype.sup() +slug: Web/JavaScript/Reference/Global_Objects/String/sup +tags: + - Descontinuado + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - sup() +translation_of: Web/JavaScript/Reference/Global_Objects/String/sup +--- +
{{JSRef}} {{deprecated_header}}
+ +

O método sup() cria um elemento HTML <sup> que faz com que uma string seja exibida como sobrescrito.

+ +

Sintaxe

+ +
str.sup()
+ +

Valor retornado

+ +

Uma string contendo um elemento HTML <sup>.

+ +

Descrição

+ +

O método sup() cria uma string dentro de uma tag <sup>: "<sup>str</sup>"

+ +

Exemplos

+ +

Usando os métodos sub() e sup()

+ +

O exemplo a seguir usa os métodos {{jsxref("String.prototype.sub()", "sub()")}} e sup() para formatar uma string:

+ +
var superText = 'superscript';
+var supText = 'supscript';
+
+console.log('This is what a ' + superText.sup() + ' looks like.');
+// "This is what a <sup>superscript</sup> looks like."
+
+console.log('This is what a ' + supText.sup() + ' looks like.');
+// "This is what a <sup>supscript</sup> looks like."
+
+ +

Especificações

+ + + + + + + + + + +
Specification
{{SpecName('ESDraft', '#sec-string.prototype.sup', 'String.prototype.sup')}}
+ + + + + +

{{Compat("javascript.builtins.String.sup")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/tolocalelowercase/index.html b/files/pt-br/web/javascript/reference/global_objects/string/tolocalelowercase/index.html new file mode 100644 index 0000000000..3867903c25 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/tolocalelowercase/index.html @@ -0,0 +1,92 @@ +--- +title: String.prototype.toLocaleLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +tags: + - Internacionalização + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - toLocaleLowerCase() +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +--- +
{{JSRef}}
+ +

O método toLocaleLowerCase() retorna o valor da string em minúsculas, de acordo com qualquer mapeamento de caixa de texto específico da localidade.

+ +
{{EmbedInteractiveExample("pages/js/string-tolocalelowercase.html")}}
+ + + +

Sintaxe

+ +
str.toLocaleLowerCase()
+str.toLocaleLowerCase(locale)
+str.toLocaleLowerCase([locale, locale, ...])
+
+ +

Parâmetros

+ +
+
locale
+
Opcional. O parâmetro locale indica o local a ser usado para converter para minúsculas de acordo com qualquer mapeamento de caixa de texto específico da localidade. Se várias localidades forem fornecidas em um {{jsxref("Array")}}, a melhor localidade disponível é usada. A localidade padrão é a localidade atual do ambiente do host.
+
+ +

Valor retornado

+ +

Uma nova string que representa a string original convertida em minúsculas, de acordo com qualquer mapeamento da caixa de texto específico da localidade.

+ +

Exceções

+ + + +

Descrição

+ +

O método toLocaleLowerCase() retorna o valor da string convertida em minúsculas de acordo com qualquer mapeamento da caixa de texto específico da localidade. toLocaleLowerCase() não afeta o valor da string original. Na maioria dos casos, ele produzirá o mesmo resultado que {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}, mas para alguns locais, como turco, cujos mapeamentos da caixa de texto não seguem o mapeamento padrão em Unicode, pode haver um resultado diferente.

+ +

Exemplos

+ +

Usando toLocaleLowerCase()

+ +
'ALFABETO'.toLocaleLowerCase(); // 'alfabeto'
+
+'\u0130'.toLocaleLowerCase('tr') === 'i';    // true
+'\u0130'.toLocaleLowerCase('en-US') === 'i'; // false
+
+let locales = ['tr', 'TR', 'tr-TR', 'tr-u-co-search', 'tr-x-turkish'];
+'\u0130'.toLocaleLowerCase(locales) === 'i'; // true
+
+ +

Especificações

+ + + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.String.toLocaleLowerCase")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html b/files/pt-br/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html new file mode 100644 index 0000000000..ff3f99e8e3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html @@ -0,0 +1,95 @@ +--- +title: String.prototype.toLocaleUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +tags: + - Internacionalização + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - toLocaleUpperCase() +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +--- +
{{JSRef}}
+ +

O método toLocaleUpperCase() retorna o valor da string em maiúsculas, de acordo com qualquer mapeamento de caixa de texto específico da localidade.

+ +
{{EmbedInteractiveExample("pages/js/string-tolocaleuppercase.html")}}
+ + + +

Sintaxe

+ +
str.toLocaleUpperCase()
+str.toLocaleUpperCase(locale)
+str.toLocaleUpperCase([locale, locale, ...])
+
+ +

Parâmetros

+ +
+
locale
+
Opcional. O parâmetro locale indica a localização a ser usada para converter para maiúsculas de acordo com qualquer mapeamento de caixa de texto específico da localidade. Se vários locais forem fornecidos em um {{jsxref("Array")}}, a melhor localidade disponível é usada. A localidade padrão é a localidade atual do ambiente do host.
+
+ +

Valor retornado

+ +

Uma nova string que representa a string original convertida em maiúsculas, de acordo com qualquer mapeamento de caixa de texto específico da localidade.

+ +

Exceções

+ + + +

Descrição

+ +

O método toLocaleUpperCase() retorna o valor da string convertida em maiúsculas de acordo com qualquer mapeamento de caixa de texto específico da localidade. toLocaleUpperCase() não afeta o valor da string em si. Na maioria dos casos, ele produzirá o mesmo resultado que {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}, mas para alguns locais, como turco, cujos mapeamentos de caixa de texto não seguem o mapeamento de caixa de texto padrão em Unicode, pode haver um resultado diferente.

+ +

Observe também que a conversão não é necessariamente um mapeamento de caracteres 1:1, pois alguns caracteres podem resultar em dois (ou até mais) caracteres quando transformados em maiúsculas. Portanto, o comprimento da string resultante pode ser diferente do comprimento da string de entrada. Isso também implica que a conversão não é estável, então, por exemplo, o seguinte pode retornar false:
+ x.toLocaleLowerCase() === x.toLocaleUpperCase(). toLocaleLowerCase()

+ +

Exemplos

+ +

Usando toLocaleUpperCase()

+ +
'alfabeto'.toLocaleUpperCase(); // 'ALFABETO'
+
+'Gesäß'.toLocaleUpperCase(); // 'GESÄSS'
+
+'i\u0307'.toLocaleUpperCase('lt-LT'); // 'I'
+
+let locales = ['lt', 'LT', 'lt-LT', 'lt-u-co-phonebk', 'lt-x-lietuva'];
+'i\u0307'.toLocaleUpperCase(locales); // 'I'
+ +

Especificações

+ + + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}
{{SpecName('ES Int Draft', '#sup-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.String.toLocaleUpperCase")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/tolowercase/index.html b/files/pt-br/web/javascript/reference/global_objects/string/tolowercase/index.html new file mode 100644 index 0000000000..8883ff88fd --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/tolowercase/index.html @@ -0,0 +1,126 @@ +--- +title: String.prototype.toLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - toLowerCase() +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +--- +
{{JSRef}}
+ +

O método toLowerCase() retorna o valor da string que foi chamada convertido para minúsculo.

+ +

Sintaxe

+ +
str.toLowerCase()
+ +

Valor retornado

+ +

Uma nova string contendo o valor da string original convertido para minúsculo.

+ +

Descrição

+ +

O método toLowerCase() retorna o valor da string original convertido para minúsculo. toLowerCase() não altera o valor da string original.

+ +

Exemplos

+ +

Usando toLowerCase()

+ +
console.log('ALFABETO'.toLowerCase()); // 'alfabeto'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementada no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.tolowercase', 'String.prototype.toLowerCase')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
RecursoAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte Básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/tosource/index.html b/files/pt-br/web/javascript/reference/global_objects/string/tosource/index.html new file mode 100644 index 0000000000..a7f2bce0d5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/tosource/index.html @@ -0,0 +1,102 @@ +--- +title: String.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/String/toSource +tags: + - JavaScript + - Non-standard + - Obsoleto + - Prototipo + - String + - metodo +translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource +--- +
{{JSRef}} {{obsolete_header}}
+ +

O método toSource() retorna uma string que representa o código-fonte do objeto.

+ +

Sintaxe

+ +
String.toSource()
+str.toSource()
+
+ +

Valor retornado

+ +

Uma string que representa o código-fonte do objeto chamado.

+ +

Exemplos

+ +

Função nativa

+ +

Para o objeto {{jsxref("String")}} , toSource() retorna  a seguinte string (indicando que o código-fonte não está disponível):

+ +
function String() {
+    [native code]
+}
+
+ +

Ao chamar {{jsxref("String")}} ou string literais, toSource() retorna a string que representa o código-fonte.

+ +

Esse método é usualmente invocado internamente pelo JavaScript e não explicitamente no código.

+ +

Especificação

+ +

Não é parte de nenhum padrão.

+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/tostring/index.html b/files/pt-br/web/javascript/reference/global_objects/string/tostring/index.html new file mode 100644 index 0000000000..5b3a3fa1ce --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/tostring/index.html @@ -0,0 +1,125 @@ +--- +title: String.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/String/toString +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - toString() +translation_of: Web/JavaScript/Reference/Global_Objects/String/toString +--- +
{{JSRef}}
+ +

O método toString() retorna uma string representando o objeto especificado.

+ +

Sintaxe

+ +
str.toString()
+ +

Descrição

+ +

O objeto {{jsxref("String")}} substitui o método toString() do objeto {{jsxref("Object")}}. Ele não herda {{jsxref("Object.prototype.toString()")}}. Para objetos {{jsxref("String")}}, o método toString() retorna uma representação de string do objeto e é o mesmo que o método {{jsxref("String.prototype.valueOf()")}}.

+ +

Exemplos

+ +

Usando toString()

+ +

O exemplo a seguir exibe o valor string de um objeto {{jsxref("String")}}:

+ +
var x = new String('Hello world');
+
+console.log(x.toString()); // retorna 'Hello world'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoEstadoComentário
{{SpecName('ES3')}}{{Spec2('ES3')}}Definição inicial. Implementado no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.tostring', 'String.prototype.toString')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FuncionalidadeChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FuncionalidadeAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/touppercase/index.html b/files/pt-br/web/javascript/reference/global_objects/string/touppercase/index.html new file mode 100644 index 0000000000..3a593fc9b8 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/touppercase/index.html @@ -0,0 +1,135 @@ +--- +title: String.prototype.toUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +tags: + - Caixa alta + - JavaScript + - Letras maúsculas + - Método(2) + - Protótipo(2) + - Referência(2) + - String + - toUpperCase() +translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +--- +
{{JSRef}}
+ +

O método toUpperCase() retorna o valor da string original convertido em letras maiúsculas.

+ +

Sintaxe

+ +
str.toUpperCase()
+ +

Valor retornado

+ +

Uma nova string representando a string original convertida em maiúsculas.

+ +

Exceções

+ +
+
{{jsxref("TypeError")}}
+
Quando chamado em uma string contendo valor {{jsxref("null")}} ou {{jsxref("undefined")}}, por exemplo, String.prototype.toUpperCase.call(undefined).
+
+ +

Descrição

+ +

O método toUpperCase() retorna o valor da string convertido para letras maiúsculas. toUpperCase() não altera o valor da string original.

+ +

Exemplos

+ +

Uso básico

+ +
console.log('alfabeto'.toUpperCase()); // 'ALFABETO'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial. Implementado no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.touppercase', 'String.prototype.toUpperCase')}}{{Spec2('ESDraft')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/trim/index.html b/files/pt-br/web/javascript/reference/global_objects/string/trim/index.html new file mode 100644 index 0000000000..285cd76427 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/trim/index.html @@ -0,0 +1,137 @@ +--- +title: String.prototype.trim() +slug: Web/JavaScript/Reference/Global_Objects/String/Trim +tags: + - ECMAScript5 + - Prototipo + - Referencia + - Remover espaços + - String + - Texto + - metodo + - trim() +translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim +--- +
{{JSRef}}
+ +
O método trim() remove os espaços em branco (whitespaces) do início e/ou fim de um texto. É considerado espaço em branco (espaço, tabulação, espaço fixo/rígido, etc.) e todo sinal de fim de linha de texto (LF, CR, etc.).
+ +
+ +

Sintaxe

+ +
str.trim()
+ +

Descrição

+ +

O método trim() retorna o texto sem espaços em branco no início e/ou fim da string. O trim() não altera o valor da string original.

+ +

Exemplos

+ +

Usando trim()

+ +

Os exemplos a seguir retornam o valor de 'foo' sem espaços em branco:

+ +
//.trim() removendo whitespace de ambos os lados
+
+var str = '   foo  ';
+console.log(str.trim()); // retorna 'foo'
+
+// Outro exemplo de .trim() removendo whitespace de
+// apenas um lado.
+
+var str= 'foo    ';
+console.log(str.trim()); // retorna 'foo'
+
+ +

Polyfill

+ +

Executar o seguinte código antes antes de qualquer código irá criar o método trim() se o mesmo não estiver disponível nativamente.

+ +
if (!String.prototype.trim) {
+  String.prototype.trim = function () {
+    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+  };
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES5.1', '#sec-15.5.4.20', 'String.prototype.trim')}}{{Spec2('ES5.1')}}Definição inicial. Implementado no JavaScript 1.8.1.
{{SpecName('ES6', '#sec-string.prototype.trim', 'String.prototype.trim')}}{{Spec2('ES6')}}
+ + + +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("1.9.1")}}{{CompatIE("9")}}{{CompatOpera("10.5")}}{{CompatSafari("5")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/trimend/index.html b/files/pt-br/web/javascript/reference/global_objects/string/trimend/index.html new file mode 100644 index 0000000000..556e62d8c3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/trimend/index.html @@ -0,0 +1,82 @@ +--- +title: String.prototype.trimEnd() +slug: Web/JavaScript/Reference/Global_Objects/String/trimEnd +tags: + - JavaScript + - Prototipo + - Referencia + - Remover espaços ao final da string + - String + - metodo + - trimEnd() +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd +--- +
{{JSRef}}
+ +

O método trimEnd() remove espaços do final de uma string. trimRight() é um apelido para este método.

+ +
{{EmbedInteractiveExample("pages/js/string-trimend.html")}}
+ + + +

Sintaxe

+ +
str.trimEnd();
+str.trimRight();
+ +

Valor retornado

+ +

Uma nova string representando a string original sem espaços ao seu final (direita).

+ +

Descrição

+ +

Os métodos trimEnd() / trimRight() retornam a string sem os espaços à direita dela. trimEnd() ou trimRight() não altera o valor da string original.

+ +

Aliasing

+ +

Para consistência com funções como {{jsxref("String.prototype.padEnd")}} o nome padrão do método é trimEnd. Entretanto, por razões de compatibilidade na web, trimRight permanece como um apelido para trimEnd. Em alguns motores isso significa:

+ +
String.prototype.trimRight.name === "trimEnd";
+ +

Exemplos

+ +

Usando trimEnd()

+ +

O exemplo a seguir mostra a string em caixa baixa '   foo':

+ +
var str = '   foo  ';
+
+console.log(str.length); // retorna 8
+
+str = str.trimEnd();
+console.log(str.length); // retorna 6
+console.log(str);        // retorna '   foo'
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.trimend', 'String.prototype.trimEnd')}}
+ + + + + +

{{Compat("javascript.builtins.String.trimEnd")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/trimstart/index.html b/files/pt-br/web/javascript/reference/global_objects/string/trimstart/index.html new file mode 100644 index 0000000000..c784bc670a --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/trimstart/index.html @@ -0,0 +1,118 @@ +--- +title: String.prototype.trimStart() +slug: Web/JavaScript/Reference/Global_Objects/String/trimStart +tags: + - JavaScript + - Prototipo + - Referencia + - Remover espaços ao começo string + - String + - metodo + - trimStart() +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimStart +--- +
{{JSRef}}
+ +

O método trimStart() remove espaços do começo de uma string. trimLeft() é um apelido para este método.

+ +
{{EmbedInteractiveExample("pages/js/string-trimstart.html")}}
+ + + +

Sintaxe

+ +
str.trimStart();
+str.trimLeft();
+ +

Valor retornado

+ +

Uma nova string representando a string original sem os espaços no começo (fim à esquerda).

+ +

Descrição

+ +

Os métodos trimStart() / trimLeft() retornam a string sem os espaços no fim à esquerda. trimLeft() ou trimStart() não altera o valor da string original.

+ +

Aliasing

+ +

Para consistência com funções como {{jsxref("String.prototype.padStart")}} o nome padrão do método é trimStart. Entretanto, por razões de compatibilidade na web, trimLeft permanece como um apelido para trimStart. Em alguns motores isso significa:

+ +
String.prototype.trimLeft.name === "trimStart";
+ +

Polyfill

+ +
//https://github.com/FabioVergani/js-Polyfill_String-trimStart
+
+(function(w){
+    var String=w.String, Proto=String.prototype;
+
+    (function(o,p){
+        if(p in o?o[p]?false:true:true){
+            var r=/^\s+/;
+            o[p]=o.trimLeft||function(){
+                return this.replace(r,'')
+            }
+        }
+    })(Proto,'trimStart');
+
+})(window);
+
+
+/*
+ES6:
+(w=>{
+    const String=w.String, Proto=String.prototype;
+
+    ((o,p)=>{
+        if(p in o?o[p]?false:true:true){
+            const r=/^\s+/;
+            o[p]=o.trimLeft||function(){
+                return this.replace(r,'')
+            }
+        }
+    })(Proto,'trimStart');
+
+})(window);
+*/
+ +

Exemplos

+ +

Usando trimStart()

+ +

O seguinte exemplo mostra uma string em caixa baixa 'foo  ':

+ +
var str = '   foo  ';
+
+console.log(str.length); // retorna 8
+
+str = str.trimStart();
+console.log(str.length); // retorna 5
+console.log(str);        // retorna 'foo  '
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-string.prototype.trimstart', ' String.prototype.trimStart')}}
+ + + + + +

{{Compat("javascript.builtins.String.trimStart")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/string/valueof/index.html b/files/pt-br/web/javascript/reference/global_objects/string/valueof/index.html new file mode 100644 index 0000000000..306a079a95 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/string/valueof/index.html @@ -0,0 +1,84 @@ +--- +title: String.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/String/valueOf +tags: + - JavaScript + - Prototipo + - Referencia + - String + - metodo + - valueOf() +translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf +--- +
{{JSRef}}
+ +

O método valueOf() retorna o valor primitivo de um objeto {{jsxref("String")}}.

+ +
{{EmbedInteractiveExample("pages/js/string-valueof.html")}}
+ +

Sintaxe

+ +
str.valueOf()
+ +

Valor retornado

+ +

Uma string representando o valor primitivo de um objeto {{jsxref("String")}}.

+ +

Descrição

+ +

O método valueOf() do objeto {{jsxref("String")}} retorna o valor primitivo de um objeto {{jsxref("String")}} como um dado do tipo string. Esse valor é equivalente a {{jsxref("String.prototype.toString()")}}.

+ +

Esse método é normalmente chamado internamente pelo JavaScript e não fica explícito no código.

+ +

Exemplos

+ +

Usando valueOf()

+ +
var x = new String('Olá, mundo');
+console.log(x.valueOf()); // retorna 'Olá, mundo'
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES1')}}{{Spec2('ES1')}}Definição inicial implementada no 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')}}
{{SpecName('ESDraft', '#sec-string.prototype.valueof', 'String.prototype.valueOf')}}{{Spec2('ESDraft')}}
+ + + + + +

{{Compat("javascript.builtins.String.valueOf")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/asynciterator/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/asynciterator/index.html new file mode 100644 index 0000000000..0228a1dd81 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/asynciterator/index.html @@ -0,0 +1,75 @@ +--- +title: Symbol.asyncIterator +slug: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator +--- +
{{JSRef}}
+ +

Symbol.asyncIterator é um símbolo conhecido que especifica o padrão AsyncIterator para um objeto. Se essa propriedade é configurada em um objeto, é um iterável assíncrono e pode ser usado in um for await...of loop.

+ + + +

Descrição

+ +

Symbol.asyncIterator é um símbolo built-in que é usado para um acessar o método @@asyncIterator de um objeto. Para que um objeto seja iterável assíncrono, ele deve ter uma  chave Symbol.asyncIterator.

+ +

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

+ +

Exemplos

+ +

Iteráveis assíncronos definidos pelo usuário

+ +

Você consegue definir seu próprio iterável assíncrono configurando a propriedade [Symbol.asyncIterator] em um objeto. 

+ +
const myAsyncIterable = {
+    async* [Symbol.asyncIterator]() {
+        yield "hello";
+        yield "async";
+        yield "iteration!";
+    }
+};
+
+(async () => {
+    for await (const x of myAsyncIterable) {
+        console.log(x);
+        // resultado esperado:
+        //    "hello"
+        //    "async"
+        //    "iteration!"
+    }
+})();
+
+ +

Quando criando uma API, lembre que iteráveis assíncronos são programados para representar algum iterável — como um fluxo de dados ou uma lista —, não para substituir completamente chamadas e eventos na maioria das situações.

+ +

Iteráveis assíncronos

+ +

Não há atualmente objetos Javascript built-in que tenha a chave [Symbol.asyncIterator] configurada por padrão. Entretanto, a WHATWG Streams estão configurando para que o primeiro objeto built-in seja um iterável assíncrono, com a recente chegada do  [Symbol.asyncIterator] nas especificações.

+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.asynciterator', 'Symbol.asyncIterator')}}
+ +

Compatibilidade de navegador

+ + + +

{{compat("javascript.builtins.Symbol.asyncIterator")}}

+ +

Vejá também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/description/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/description/index.html new file mode 100644 index 0000000000..207fc79fa9 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/description/index.html @@ -0,0 +1,61 @@ +--- +title: Symbol.prototype.description +slug: Web/JavaScript/Reference/Global_Objects/Symbol/description +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/description +--- +
{{JSRef}}
+ +

A propriedade leitura somente description é uma string que retorna a descrição opcional de objetos {{JSxRef("Symbol")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-prototype-description.html")}}
+ + + +

Descrição

+ +

{{JSxRef("Symbol")}} objetos podem ser criados com uma uma descrição opcional na qual podem ser usados para debbuging mas não para acessar o próprio símbolo. A Symbol.prototype.description propriedade pode ser usada para ler essa descrição. É diferente do Symbol.prototype.toString() pois não contém a string incluida "Symbol()". Veja os exemplos.

+ +

Exemplos

+ +

Usando descrição

+ +
Symbol('desc').toString();   // "Symbol(desc)"
+Symbol('desc').description;  // "desc"
+Symbol('').description;      // ""
+Symbol().description;        // undefined
+
+// símbolos conhecidos
+Symbol.iterator.toString();  // "Symbol(Symbol.iterator)"
+Symbol.iterator.description; // "Symbol.iterator"
+
+// símbolos globais
+Symbol.for('foo').toString();  // "Symbol(foo)"
+Symbol.for('foo').description; // "foo"
+
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName("ESDraft", "#sec-symbol.prototype.description", "get Symbol.prototype.description")}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.description")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/hasinstance/index.html new file mode 100644 index 0000000000..b40b57a3c4 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/hasinstance/index.html @@ -0,0 +1,114 @@ +--- +title: Symbol.hasInstance +slug: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +tags: + - Propriedade + - Referencia +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +--- +
{{JSRef}}
+ +

O symbol bem-conhecido Symbol.hasInstance é usado para determinar se um objeto construtor reconhece um objeto como de sua instância. O comportamento do operador {{jsxref("Operators/instanceof", "instanceof")}} pode ser customizado por este symbol.

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

Exemplos

+ +

Você pode implementar o comportamento customizado do seu instanceof deste jeito; por exemplo:

+ +
class MyArray {
+  static [Symbol.hasInstance](instance) {
+    return this.prototype.isPrototypeOf(instance) ||
+           Array.isArray(instance);
+  }
+}
+
+console.log([] instanceof MyArray); // true
+console.log(new MyArray instanceof MyArray); // true
+console.log(new Image instanceof MyArray); // false
+
+class MySubArray extends MyArray {}
+console.log(new MySubArray instanceof MySubArray); // true
+console.log(new MySubArray instanceof MyArray); // true
+console.log(new MyArray instanceof MySubArray); // false
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ES6')}}Initial definition.
{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(51)}}{{ CompatGeckoDesktop(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile(50) }}{{CompatNo}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/index.html new file mode 100644 index 0000000000..f4414ffe16 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/index.html @@ -0,0 +1,301 @@ +--- +title: Símbolo +slug: Web/JavaScript/Reference/Global_Objects/Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +
{{JSRef("Global_Objects", "Symbol")}}
+ +

Sumário

+ +

A função Symbol() retorna um valor do tipo símbolo (symbol), tem propriedades estáticas que expõem vários membros dos objetos nativos, possuem métodos estáticos que expõem o registro de símbolos globais e se parecem com uma classe de objeto nativo, mas estão incompletos como construtor porque não suportam a sintaxe "new Symbol()" .

+ +

Cada valor símbolo retornado de Symbol() é único. Um símbolo pode ser usado como o identificador para propriedades de objetos; esse é o único propósito do tipo de dado. Algumas explicações sobre propósito e uso podem ser encontradas {{Glossary("Symbol", "no verbete do glossário para Symbol")}}.

+ +

O tipo de dado símbolo é um {{Glossary("Primitive", "tipo de dado primitivo")}}.

+ +

Sintaxe

+ +
Symbol([descrição])
+ +

Parametros

+ +
+
descrição {{optional_inline}}
+
String opcional. Uma descrição de símbolo no qual pode ser usado para debugar mas não para acessar o próprio símbolo.
+
+ +

Descrição

+ +

Para criar um novo simbolo primitivo, simplesmente escreva Symbol() com uma string opçional para sua descrição:

+ +
var sym1 = Symbol();
+var sym2 = Symbol("foo");
+var sym3 = Symbol("foo");
+
+ +

O codigo acima cria três simbolos novos. Note que a função Symbol("foo") não faz a string "foo" ser um símbolo. Ela cria um novo simbolo a cada vez que é chamada:

+ +
Symbol("foo") === Symbol("foo"); // false
+ +

A sintaxe a seguir com o operador {{jsxref("Operators/new", "new")}} vai resultar em um  {{jsxref("TypeError")}}:

+ +
var sym = new Symbol(); // TypeError
+
+ +

Isso evita que os autores criem um objeto empacotador explícito de Symbol em vez de um novo valor de símbolo. O que pode surpreender, pois geralmente é possível criar objetos empacotadores explícitos em torno de tipos de dados primitivos (por exemplo, new Boolean, new String e new Number).

+ +

Se você realmente quiser criar um objeto empacotador de Symbol , você pode usar a função Object():

+ +
var sym = Symbol("foo");
+typeof sym;     // "symbol"
+var symObj = Object(sym);
+typeof symObj;  // "object"
+
+ +

Símbolos compartilhados no registro global de símbolo

+ +

A sintaxe acima usando a função Symbol() não criará um símbolo global que estará disponível em todo o seu código. Para criar símbolos disponíveis em vários arquivos em um escopo como se fosse global, use os métodos {{jsxref("Symbol.for()")}} e {{jsxref("Symbol.keyFor()")}} para definir e configurar símbolos no registro global de símbolo.

+ +

Encontrando propriedades de símbolos em objetos

+ +

O método {{jsxref("Object.getOwnPropertySymbols()")}} retorna um array de símbolos e permite que você encontre propriedades de símbolos em um determinado objeto. Observe que cada objeto é inicializado sem suas próprias propriedades de símbolo, de modo que este array estará vazio, a menos que você estabeleça propriedades de símbolo no objeto.

+ +

Propriedades

+ +
+
Symbol.length
+
Propriedade de tamanho cujo valor é 1.
+
{{jsxref("Symbol.prototype")}}
+
Representa o protótipo do Symbol construtor.
+
+ +

Símbolos conhecidos

+ +

Em adição para seus próprios símbolos, JavaScript possui alguns símbolos built-in que representa os comportamentos internos da linguagem que não foram revelados para os desenvolvedores no ECMAScript 5 e anterior. Esses símbolos podem ser acessados usando as seguintes propriedades:

+ +
+
Symbol.hasInstance
+
Especificado como @@hasInstance. Um método que determina se um construtor de um objeto é reconhecido como a instancia de um objeto. Usado por {{jsxref("Operators/instanceof", "instanceof")}}.
+
Symbol.isConcatSpreadable
+
Especificado como @@isConcatSpreadable. Um valor Booleano indicando se um objeto deve ser adicionado como elemento de uma array. Usado por {{jsxref("Array.prototype.concat()")}}.
+
Symbol.isRegExp
+
Especificado como @@isRegExp. Um valor Booleano indicando se um objeto pode ser usado como uma expressão regular.
+
Symbol.iterator
+
Especificado como @@iterator. Um método retornando o iterador padrão para um objeto. Usado por for...of.
+
Symbol.toPrimitive
+
Especificado como @@toPrimitive. Um método convertendo um objeto para um valor primitivo .
+
Symbol.toStringTag
+
Especificado como @@toStringTag. Um valor string usado para descrição padrão de um objeto. Usado por {{jsxref("Object.prototype.toString()")}}
+
Symbol.unscopables
+
Especificado como @@unscopables. Uma Array com valores string que são  valores propriedade. Esses são excluídos das ligações com o objeto associado.
+
+ +

Métodos

+ +
+
{{jsxref("Symbol.for()", "Symbol.for(key)")}}
+
Procura por símbolos existentes com as chaves dada e retorna as chaves se for encontradas. Caso contrário um novo símbolo vai ser criado no registro de símbolo global com essa chave.
+
{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}
+
Retorna um símbolo compartilhado do registro global de símbolo para o símbolo dado.
+
+ +

Symbol protótipo

+ +

Todos os símbolos herdados de {{jsxref("Symbol.prototype")}}.

+ +

Propriedades

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Properties')}}

+ +

Métodos

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Methods')}}

+ +

Exemplos

+ +

Usando o typeof operador com símbolos

+ +

O {{jsxref("Operators/typeof", "typeof")}} operador pode ajudar a identificar os símbolos.

+ +
typeof Symbol() === 'symbol'
+typeof Symbol('foo') === 'symbol'
+typeof Symbol.iterator === 'symbol'
+
+ +

Conversões de tipos de símbolo

+ +

Algumas anotações quando trabalhando com conversão de tipo de símbolos.

+ + + +

Símbolos e for...in iteração

+ +

Símbolos não são visíveis em for...in iterações. Além de , {{jsxref("Object.getOwnPropertyNames()")}} não retornará o objeto símbolo propriedade, entretante, você pode fazer uso do {{jsxref("Object.getOwnPropertySymbols()")}} para conseguir esses resultados.

+ +
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); // logs "c" and "d"
+}
+ +

Símbolos e JSON.stringify()

+ +

Propriedade com chave de símbolo vão ser completamente ignoradas quando usando JSON.stringify():

+ +
JSON.stringify({[Symbol("foo")]: "foo"});
+// '{}'
+ +

Para mais detalhes, veja {{jsxref("JSON.stringify()")}}.

+ +

Objeto wrapper de símbolo como chave de propriedade

+ +

Quando um objeto wrapper de um símbolo é usado como uma chave de propriedade , esse objeto vai ser coerced para o seu símbolo wrapper:

+ +
var sym = Symbol("foo");
+var obj = {[sym]: 1};
+obj[sym];            // 1
+obj[Object(sym)];    // still 1
+
+ +

Especificações

+ + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-symbol-objects', 'Symbol')}}{{Spec2('ES2015')}}Definição inicial.
+ +

Compatibilidade do navegador

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{ CompatNo() }}25{{ CompatNo() }}
Symbol.iterator (@@iterator){{CompatChrome(38)}}{{CompatGeckoDesktop("36.0")}}{{ CompatNo() }}25{{ CompatNo() }}
Symbol.unscopables (@@unscopables){{CompatChrome(38)}}{{ CompatNo() }}{{ CompatNo() }}25 +
{{ CompatNo() }}
+
Other well-known symbols{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{ CompatNo() }}{{CompatChrome(38)}}{{ CompatGeckoMobile("36.0") }}{{ CompatNo() }}25{{ CompatNo() }}
Symbol.iterator (@@iterator){{ CompatNo() }}{{CompatChrome(38)}}{{ CompatGeckoMobile("36.0") }}{{ CompatNo() }}25{{ CompatNo() }}
+
Symbol.unscopables (@@unscopables)
+
{{ CompatNo() }}{{CompatChrome(38)}}{{ CompatUnknown() }}{{ CompatNo() }}25{{ CompatNo() }}
Other well-known symbols{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}{{ CompatNo() }}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html new file mode 100644 index 0000000000..f969972692 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html @@ -0,0 +1,93 @@ +--- +title: Symbol.isConcatSpreadable +slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +--- +
{{JSRef}}
+ +

Symbol.isConcatSpreadable é um símbolo conhecido que é usado para configurar se um objeto deve ser achatado para um elemento da array quando usado o método {{jsxref("Array.prototype.concat()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-isconcatspreadable.html")}}
+ + + +

Descrição

+ +

@@isConcatSpreadable símbolo (Symbol.isConcatSpreadable) pode também ser definido como uma propriedade própria ou herdada e seu valor é um booleano. Ele consegue controlar o comportamento das arrays e objetos semelhantes a array:

+ + + +

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

+ +

Exemplos

+ +

Arrays

+ +

Por padrão, o {{jsxref("Array.prototype.concat()")}} espalha (alinha) arrays no seus resultados:

+ +
let alpha = ['a', 'b', 'c'],
+let numeric = [1, 2, 3]
+
+let alphaNumeric = alpha.concat(numeric)
+
+console.log(alphaNumeric)  // Resultado: ['a', 'b', 'c', 1, 2, 3]
+
+ +

Quando configurando o Symbol.isConcatSpreadable para false, o comportamento padrão dele:

+ +
let alpha = ['a', 'b', 'c'],
+let numeric = [1, 2, 3]
+
+numeric[Symbol.isConcatSpreadable] = false
+let alphaNumeric = alpha.concat(numeric)
+
+console.log(alphaNumeric)  // Resultado: ['a', 'b', 'c', [1, 2, 3] ]
+
+ +

Objetos de array semelhantes 

+ +

Para objetos de array semelhantes, o padrão não é espalhado. Symbol.isConcatSpreadableprecisa ser configurado para true para poder conseguir um a array alinhada:

+ +
let x = [1, 2, 3]
+
+let fakeArray = {
+  [Symbol.isConcatSpreadable]: true,
+  length: 2,
+  0: 'hello',
+  1: 'world'
+}
+
+x.concat(fakeArray)  // [1, 2, 3, "hello", "world"]
+
+ +
+

Note: A propriedade length é usada para controlar o número de propriedade dos objetos para ser adicionado. No exemplo acima, length:2 indica que duas propriedades tem de ser adicionado.

+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.isConcatSpreadable")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/iterator/index.html new file mode 100644 index 0000000000..99e910ce5b --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/iterator/index.html @@ -0,0 +1,107 @@ +--- +title: Symbol.iterator +slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +--- +
{{JSRef}}
+ +

O símbolo conhecido Symbol.iterator especifíca o iterador padrão para um objeto. Usado por for...of.

+ +
{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}
+ + + +

Descrição

+ +

Sempre que um objeto precisa ser iterado (como um começo de um for..of loop), o método @@iterator é chamado sem argumentos, e o iterador retornado é usado para obter os valores para serem iterados.

+ +

Alguns tipos built-in tem um comportamento padrão de iteração, enquanto outros tipos (assim como {{jsxref("Object")}}) não tem. O tipo built-in com um método @@iterator são:

+ + + +

Veja também Iteration protocols para mais informação.

+ +

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

+ +

Exemplos

+ +

Iteráveis ​​definidos pelo usuário

+ +

Podemos fazer nosso próprio iterável dessa forma:

+ +
var myIterable = {}
+myIterable[Symbol.iterator] = function* () {
+    yield 1;
+    yield 2;
+    yield 3;
+};
+[...myIterable] // [1, 2, 3]
+
+ +

Ou iteráveis podem ser definidos diretamente dentro de uma classe ou um objeto usando  computed property:

+ +
class Foo {
+  *[Symbol.iterator] () {
+    yield 1;
+    yield 2;
+    yield 3;
+  }
+}
+
+const someObj = {
+  *[Symbol.iterator] () {
+    yield 'a';
+    yield 'b';
+  }
+}
+
+[...new Foo] // [ 1, 2, 3 ]
+[...someObj] // [ 'a', 'b' ]
+
+ +

Iteráveis ​​não bem formados

+ +

Se um método @@iterator não retornar um objeto iterador, então é um iterável não bem formado. Usando dessa forma é resultará em uma excessão de tempo ou comportamentos com erros:

+ +
var nonWellFormedIterable = {}
+nonWellFormedIterable[Symbol.iterator] = () => 1
+[...nonWellFormedIterable] // TypeError: [] is not a function
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.iterator")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/match/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/match/index.html new file mode 100644 index 0000000000..34773830af --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/match/index.html @@ -0,0 +1,65 @@ +--- +title: Symbol.match +slug: Web/JavaScript/Reference/Global_Objects/Symbol/match +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/match +--- +
{{JSRef}}
+ +

O símbolo Symbol.match é conhecido por especificar a compatibilidade de uam expressão regular contra uma string. Essa função é chamada pelo método {{jsxref("String.prototype.match()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-match.html")}}
+ + + +

Descrição

+ +

Essa função também é usada para identificar se um objeto tem o comportamento de uma expressão regular. Por exemplo, os métodos {{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}} e {{jsxref("String.prototype.includes()")}}, verificar se o primeiro agumento é uma expressão regular e  irá lançar um {{jsxref("TypeError")}} se eles forém. Agora, se o símbolo match é configurado para false (ou um valor Falsy ), ele indica que o objeto não tem intensão de ser usado como um ojbeto de  expressão regular 

+ +

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

+ +

Exemplos

+ +

Desativando a verificação isRegExp 

+ +

O seguinte código vai lançar um {{jsxref("TypeError")}}:

+ +
'/bar/'.startsWith(/bar/);
+
+// Lança um TypeError, como /bar/ é uma expressão regular
+// não Symbol.match não é modificado.
+ +

Entretanto, se você configurar Symbol.match para false, a verificação isRegExp (que usa a propriedade match ) que o objeto não é uma expressão regular. O método startsWith e endsWith não vão lançar um TypeError como consequência.

+ +
var re = /foo/;
+re[Symbol.match] = false;
+'/foo/'.startsWith(re); // true
+'/baz/'.endsWith(re);   // false
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.match', 'Symbol.match')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.match")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/matchall/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/matchall/index.html new file mode 100644 index 0000000000..7874646623 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/matchall/index.html @@ -0,0 +1,72 @@ +--- +title: Symbol.matchAll +slug: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll +--- +
{{JSRef}}
+ +

O símbolo Symbol.matchAll é conhecido por retornar um iterador, que produz conrrespondências de uma expressão regular com uma string. Essa função é usada pelo método {{jsxref("String.prototype.matchAll()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-matchall.html","shorter")}}
+ + + +

Descrição

+ +
+

Esse símbolo é usado pelo {{jsxref("String.prototype.matchAll()")}} e especificado no {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}}. Os próximos dois exemplos retornam o mesmo resultado:

+ +
'abc'.matchAll(/a/);
+
+/a/[Symbol.matchAll]('abc');
+ +

Esse método existe para costumizar o comportamento conrrespondente com as subclasses {{jsxref("RegExp")}}.

+ +

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

+
+ +

Exemplos

+ +

Usuando Symbol.matchAll

+ +
let re = /[0-9]+/g;
+let str = '2016-01-02|2019-03-07';
+
+const numbers = {
+  *[Symbol.matchAll] (str) {
+    for (const n of str.matchAll(/[0-9]+/g))
+      yield n[0];
+  }
+};
+
+console.log(Array.from(str.matchAll(numbers)));
+//  Array ["2016", "01", "02", "2019", "03", "07"]
+
+ +

Veja {{jsxref("String.prototype.matchAll()")}} e {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} para mais exemplos.

+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.matchall', 'Symbol.matchAll')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.matchAll")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/replace/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/replace/index.html new file mode 100644 index 0000000000..f69a22537d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/replace/index.html @@ -0,0 +1,60 @@ +--- +title: Symbol.replace +slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/replace +--- +
{{JSRef}}
+ +

O símbolo Symbol.replace é conhecido por especificar o método que substitui as substrings conrrespondentes de uma string. Essa função é chamada pelo método {{jsxref("String.prototype.replace()")}}.

+ +

Para mais informações, veja {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} e {{jsxref("String.prototype.replace()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-replace.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Exemplos

+ +

Usando Symbol.replace

+ +
class CustomReplacer {
+  constructor(value) {
+    this.value = value;
+  }
+  [Symbol.replace](string) {
+    return string.replace(this.value, '#!@?');
+  }
+}
+
+console.log('football'.replace(new CustomReplacer('foo')));
+// resultado esperado: "#!@?tball"
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.replace', 'Symbol.replace')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.replace")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/search/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/search/index.html new file mode 100644 index 0000000000..e2f71e3438 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/search/index.html @@ -0,0 +1,60 @@ +--- +title: Symbol.search +slug: Web/JavaScript/Reference/Global_Objects/Symbol/search +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/search +--- +
{{JSRef}}
+ +

O símbolo Symbol.search é um método conhecido por retornar o índice com uma string que corresponde a expressão regular. Essa função é chamada pelo método {{jsxref("String.prototype.search()")}}.

+ +

Para mais informação, veja {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} e {{jsxref("String.prototype.search()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-search.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Exemplos

+ +

Pesquisa de string personalizada

+ +
class caseInsensitiveSearch {
+  constructor(value) {
+    this.value = value.toLowerCase();
+  }
+  [Symbol.search](string) {
+    return string.toLowerCase().indexOf(this.value);
+  }
+}
+
+console.log('foobar'.search(new caseInsensitiveSearch('BaR')));
+// resultado esperado: 3
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.search', 'Symbol.search')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.search")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/species/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/species/index.html new file mode 100644 index 0000000000..fcf636c175 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/species/index.html @@ -0,0 +1,63 @@ +--- +title: Symbol.species +slug: Web/JavaScript/Reference/Global_Objects/Symbol/species +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species +--- +
{{JSRef}}
+ +

O símbolo Symbol.species especifica uma propriedade valor-função que a função construtora usa para criar objetos derivados.

+ +
{{EmbedInteractiveExample("pages/js/symbol-species.html")}}
+ + + +

Descrição

+ +

A propriedade acessora de espécies permite que subclasses substituam o construtor padrão para objetos.

+ +

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

+ +

Exemplos

+ +

Usando espécies

+ +

Você pode querer que retorne objetos {{jsxref("Array")}} em sua class derivada de array MyArray. Por exemplo, quando usar métodos tais como {{jsxref("Array.map", "map()")}} que retorna o construtor padrão, você quer que esses métodos retornem um objeto  Array pai, em vez do objeto MyArray. Esses símbolos espécies permitem que você fala isso:

+ +
class MyArray extends Array {
+  // Substitui espécies para a Array pai construtora
+  static get [Symbol.species]() { return Array; }
+}
+let a = new MyArray(1,2,3);
+let mapped = a.map(x => x * x);
+
+console.log(mapped instanceof MyArray); // false
+console.log(mapped instanceof Array);   // true
+
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.species")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/split/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/split/index.html new file mode 100644 index 0000000000..c6b9e13fd3 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/split/index.html @@ -0,0 +1,60 @@ +--- +title: Symbol.split +slug: Web/JavaScript/Reference/Global_Objects/Symbol/split +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/split +--- +
{{JSRef}}
+ +

Symbol.split é um símbolo conhecido que especifica o método que divide uma string nos índices correspondentes a uma expressão regular. Essa função é chamada pelo método {{jsxref("String.prototype.split()")}}.

+ +

Para mais informações, veja {{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}} e {{jsxref("String.prototype.split()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-split.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Exemplos

+ +

Divisão reversa personalizada

+ +
class ReverseSplit {
+  [Symbol.split](string) {
+    const array = string.split(' ');
+    return array.reverse();
+  }
+}
+
+console.log('Another one bites the dust'.split(new ReverseSplit()));
+// resultado esperado: [ "dust", "the", "bites", "one", "Another" ]
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.split', 'Symbol.split')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.split")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/toprimitive/index.html new file mode 100644 index 0000000000..97734f23e2 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/toprimitive/index.html @@ -0,0 +1,75 @@ +--- +title: Symbol.toPrimitive +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +--- +
{{JSRef}}
+ +

O Symbol.toPrimitive é um símbolo que específica uma propriedade com valor função que é chamada para converter um ojbeto para um valor primitivo correspondente. 

+ +
{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}
+ + + +

Descrição

+ +

Com a ajuda da propriedade Symbol.toPrimitive (usada como uma função valor), um objeto pode ser convertido para um valor primitivo. a função é chamada com um argumento string hint, que espcífica o tipo de preferência do resultado do valor primitivo. O argumento hint pode ser um "number", "string", e "default".

+ +

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

+ +

Exemplos

+ +

Modificando valores primitivos convertendo para um objeto

+ +

O exemplo a seguir descreve que a propriedade Symbol.toPrimitive pode ser modificar o valor primitivo convertendo para um objeto.

+ +
// Um objeto sem propriedade Symbol.toPrimitive.
+var obj1 = {};
+console.log(+obj1);     // NaN
+console.log(`${obj1}`); // "[object Object]"
+console.log(obj1 + ''); // "[object Object]"
+
+// Um objeto com propriedade Symbol.toPrimitive
+var obj2 = {
+  [Symbol.toPrimitive](hint) {
+    if (hint == 'number') {
+      return 10;
+    }
+    if (hint == 'string') {
+      return 'hello';
+    }
+    return true;
+  }
+};
+console.log(+obj2);     // 10        -- dica é "number"
+console.log(`${obj2}`); // "hello"   -- dica é "string"
+console.log(obj2 + ''); // "true"    -- dica é "default"
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.toPrimitive")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/tostringtag/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/tostringtag/index.html new file mode 100644 index 0000000000..1418ff89c0 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/tostringtag/index.html @@ -0,0 +1,92 @@ +--- +title: Symbol.toStringTag +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +--- +
{{JSRef}}
+ +

O símbolo Symbol.toStringTag é uma propriedade com valor string que é usada para a criação de uma descrição de string de um objeto padrão. É acessado internalmente pelo método {{jsxref("Object.prototype.toString()")}}.

+ +
{{EmbedInteractiveExample("pages/js/symbol-tostringtag.html")}}
+ + + +
{{js_property_attributes(0,0,0)}}
+ +

Exemplos

+ +

Tags padrões

+ +
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]"
+// ... e mais
+
+ +

Símbolos built-in toStringTag 

+ +
Object.prototype.toString.call(new Map());       // "[object Map]"
+Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
+Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
+// ... e mais
+
+ +

Classes personalizadas para objeto tag

+ +

Quando cria sua própria classe, o JavaScript padroniza para "Object" tag:

+ +
class ValidatorClass {}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
+
+ +

Tag costumizada com toStringTag

+ +

Agora, com a ajuda do toStringTag, você é capaz de costumizar sua própria tag:

+ +
class ValidatorClass {
+  get [Symbol.toStringTag]() {
+    return 'Validator';
+  }
+}
+
+Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
+
+ +

toStringTag disponível em todos os objetos protótipos da DOM 

+ +

Devido a uma mudança nas especificações WebIDL spec change em meados de 2020, navegadores estão adicionando uma propriedade Symbol.toStringTag para todos os objetos protótipos da DOM . Por exemplo, para acessar a propriedade Symbol.toStringTag no {{domxref("HTMLButtonElement")}}:

+ +
let test = document.createElement('button');
+test.toString(); // Retorna [object HTMLButtonElement]
+test[Symbol.toStringTag];  // Retona HTMLButtonElement
+ +

Especificações

+ + + + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}
+ +

Compatibilidade de navegador

+ + + +

{{Compat("javascript.builtins.Symbol.toStringTag")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/symbol/unscopables/index.html b/files/pt-br/web/javascript/reference/global_objects/symbol/unscopables/index.html new file mode 100644 index 0000000000..f1f76c2177 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/symbol/unscopables/index.html @@ -0,0 +1,83 @@ +--- +title: Symbol.unscopables +slug: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +--- +
{{JSRef}}
+ +

O símbolo Symbol.unscopables é usado para específicar um valor objeto cujo os nomes de propriedade próprio e herdados são excluídos das associações do ambiente with o objeto associado. 

+ +
{{EmbedInteractiveExample("pages/js/symbol-unscopables.html")}}
+ + + +

Descrição

+ +

@@unscopables símbolo (Symbol.unscopables) pode ser definido em qualquer objeto para impedir que os nomes da propriedade sejam expostos como variavéis lexicais with ligações de ambiente. Note que se usar o  Strict mode, with as declarações não estão disponíveis e provavelmente não haverá necessidade desse símbolo.

+ +

Configurando a propriedade para true em um objeto unscopables tornará ele não unscopable e portanto não irá apareer nas variavéis de escopo lexicais. Configurando uma propriedade para false o tornará scopable e portanto irá aparecer no escopo de variavéis lexicais.

+ +

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

+ +

Exemplos

+ +

Escopo com declarações

+ +

O seguinte código funciona normalmente no ES5 e anteriores. Entretanto, no ECMAScript 2015 e superiores, o método {{jsxref("Array.prototype.keys()")}} foi introduzido. Isso significa que dentro do ambiente with  "chaves" seria agora o método e não as variavéis. Isso qunado os símbolos unscopables foram introduzidos. Uma confiração built-in unscopables é implementada como {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} para prevenir que alguns métodos de Array tenham escopo definido na desclaração with.

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

Objetos não escopáveis

+ +

Você também pode configurar unscopables para seu próprio objeot.

+ +
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
+}
+
+ +

Especificações

+ + + + + + + + + + +
Especificação
{{SpecName('ESDraft', '#sec-symbol.unscopables', 'Symbol.unscopables')}}
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.Symbol.unscopables")}}

+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/typedarray/index.html b/files/pt-br/web/javascript/reference/global_objects/typedarray/index.html new file mode 100644 index 0000000000..9d34da5245 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/typedarray/index.html @@ -0,0 +1,364 @@ +--- +title: TypedArray +slug: Web/JavaScript/Reference/Global_Objects/TypedArray +tags: + - JavaScript + - NeedsTranslation + - TopicStub + - TypedArray + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +
{{JSRef}}
+ +

A TypedArray object describes an array-like view of an underlying binary data buffer. There is no global property named TypedArray, nor is there a directly visible TypedArray constructor.  Instead, there are a number of different global properties, whose values are typed array constructors for specific element types, listed below. On the following pages you will find common properties and methods that can be used with any typed array containing elements of any type.

+ +

Syntax

+ +
new TypedArray(length);
+new TypedArray(typedArray);
+new TypedArray(object);
+new TypedArray(buffer [, byteOffset [, length]]);
+
+where TypedArray() is one of:
+
+Int8Array();
+Uint8Array();
+Uint8ClampedArray();
+Int16Array();
+Uint16Array();
+Int32Array();
+Uint32Array();
+Float32Array();
+Float64Array();
+
+ +

Parameters

+ +
+
length
+
When called with a length argument, an internal array buffer is created in memory of size length multiplied by BYTES_PER_ELEMENT bytes containing 0 value.
+
typedArray
+
When called with a typedArray argument, which can be an object of any of the typed array types (such as Int32Array), the typedArray gets copied into a new typed array. Each value in typedArray is converted to the corresponding type of the constructor before being copied into the new array. Then length of the new typedArray object will be same of length of the typedArray argument.
+
object
+
When called with an object argument, a new typed array is created as if by the TypedArray.from() method.
+
buffer, byteOffset, length
+
When called with a buffer, and optionally a byteOffset and a length argument, a new typed array view is created that views the specified {{jsxref("ArrayBuffer")}}. The byteOffset and length parameters specify the memory range that will be exposed by the typed array view.  If both are omitted, all of buffer is viewed; if only length is omitted, the remainder of buffer is viewed.
+
+ +

Description

+ +

ECMAScript 2015 defines a TypedArray constructor that serves as the [[Prototype]] of all TypedArray constructors.  This constructor is not directly exposed: there is no global %TypedArray% or TypedArray property.  It is only directly accessible through Object.getPrototypeOf(Int8Array) and similar.  All TypedArrays constructors inherit common properties from the %TypedArray% constructor function.  Additionally, all typed array prototypes (TypedArray.prototype) have %TypedArray%.prototype as their [[Prototype]].

+ +

The %TypedArray% constructor on its own is not particularly useful.  Calling it or using it in a new expression will throw a TypeError, except when used during object creation in JS engines that support subclassing.  There are at present no such engines, so %TypedArray% is only useful to polyfill functions or properties onto all TypedArray constructors.

+ +

When creating a TypedArray instance (i.e. instance of Int8Array or similar), an array buffer is created internally (if ArrayBuffer object is present as constructor argument then this array buffer is used) in memory and this buffer address is saved as internal property of that instances, and all the methods of %TypedArray%.prototype uses that array buffer address to operate on i.e. set value and get value etc.

+ +

Property access

+ +

You can reference elements in the array using standard array index syntax (that is, using bracket notation). However, getting or setting indexed properties on typed arrays will not search in the prototype chain for this property, even when the indices are out of bound. Indexed properties will consult the {{jsxref("ArrayBuffer")}} and will never look at object properties. You can still use named properties, just like with all objects.

+ +
// Setting and getting using standard array syntax
+var int16 = new Int16Array(2);
+int16[0] = 42;
+console.log(int16[0]); // 42
+
+// Indexed properties on prototypes are not consulted (Fx 25)
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(32))[20]; // 0
+// even when out of bound
+Int8Array.prototype[20] = 'foo';
+(new Int8Array(8))[20]; // undefined
+// or with negative integers
+Int8Array.prototype[-1] = 'foo';
+(new Int8Array(8))[-1]; // undefined
+
+// Named properties are allowed, though (Fx 30)
+Int8Array.prototype.foo = 'bar';
+(new Int8Array(32)).foo; // "bar"
+ +

TypedArray objects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeSize in bytesDescriptionWeb IDL typeEquivalent C type
{{jsxref("Int8Array")}}18-bit two's complement signed integerbyteint8_t
{{jsxref("Uint8Array")}}18-bit unsigned integeroctetuint8_t
{{jsxref("Uint8ClampedArray")}}18-bit unsigned integer (clamped)octetuint8_t
{{jsxref("Int16Array")}}216-bit two's complement signed integershortint16_t
{{jsxref("Uint16Array")}}216-bit unsigned integerunsigned shortuint16_t
{{jsxref("Int32Array")}}432-bit two's complement signed integerlongint32_t
{{jsxref("Uint32Array")}}432-bit unsigned integerunsigned longuint32_t
{{jsxref("Float32Array")}}432-bit IEEE floating point numberunrestricted floatfloat
{{jsxref("Float64Array")}}864-bit IEEE floating point numberunrestricted doubledouble
+ +

Properties

+ +
+
{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}
+
Returns a number value of the element size for the different typed array objects.
+
TypedArray.length
+
Length property whose value is 0.
+
{{jsxref("TypedArray.name")}}
+
Returns the string value of the constructor name. E.g "Int8Array".
+
{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}
+
The constructor function that is used to create derived objects.
+
{{jsxref("TypedArray.prototype")}}
+
Prototype for the TypedArray objects.
+
+ +

Methods

+ +
+
{{jsxref("TypedArray.from()")}}
+
Creates a new typed array from an array-like or iterable object. See also {{jsxref("Array.from()")}}.
+
{{jsxref("TypedArray.of()")}}
+
Creates a new typed array with a variable number of arguments. See also {{jsxref("Array.of()")}}.
+
+ +

TypedArray prototype

+ +

All TypedArrays inherit from {{jsxref("TypedArray.prototype")}}.

+ +

Properties

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Properties')}}

+ +

Methods

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Methods')}}

+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('Typed Array')}}{{Spec2('Typed Array')}}Defined as TypedArray and ArrayBufferView interface with typed array view types. Superseded by ECMAScript 2015.
{{SpecName('ES6', '#sec-typedarray-objects', 'TypedArray Objects')}}{{Spec2('ES6')}}Initial definition in an ECMA standard. Specified behaviour for indexed and named properties. Specified that new is required.
{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(7.0)}}{{CompatGeckoDesktop("2")}}1011.65.1
Indexed properties not consulting prototype{{CompatVersionUnknown}} [1]{{CompatGeckoDesktop("25")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Named properties{{CompatVersionUnknown}}{{CompatGeckoDesktop("30")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
new is required{{CompatUnknown}}{{CompatGeckoDesktop("44")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Iterable in constructor{{CompatUnknown}}{{CompatGeckoDesktop("52")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
Basic support4.0{{CompatVersionUnknown}}{{ CompatGeckoMobile("2") }}1011.64.2{{CompatVersionUnknown}}
Indexed properties not consulting prototype{{CompatUnknown}}{{CompatVersionUnknown}} [1]{{ CompatGeckoMobile("25") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}} [1]
Named properties{{CompatUnknown}}{{CompatVersionUnknown}}{{ CompatGeckoMobile("30") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
new is required{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile("44") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Iterable in constructor{{CompatUnknown}}{{CompatUnknown}}{{ CompatGeckoMobile("52") }}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

[1] -1 and similar are not considered as indexed properties and therefore return the value of the prototype property.

+ +

Compatibility notes

+ +

Starting with ECMAScript 2015, TypedArray constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a TypedArray 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/pt-br/web/javascript/reference/global_objects/typedarray/sort/index.html b/files/pt-br/web/javascript/reference/global_objects/typedarray/sort/index.html new file mode 100644 index 0000000000..79481a42b5 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/typedarray/sort/index.html @@ -0,0 +1,126 @@ +--- +title: TypedArray.prototype.sort() +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/sort +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/sort +--- +
{{JSRef}}
+ +

O método sort() ordena os elementos de uma matriz tipada no local e retorna a matriz ordenada. Esse método tem o mesmo algoritmo que {{jsxref("Array.prototype.sort()")}}. TypedArray é uma das maneiras de escrever matrizes.

+ +

Syntax

+ +
typedarray.sort([compareFunction])
+ +

Parâmetros

+ +
+
compareFunction {{optional_inline}}
+
Especifica uma função que define a ordem de classificação.
+
+ +

Valor de retorno

+ +

A matriz ordenada.

+ +

Exemplos

+ +

Para mais exemplos, acesse o método {{jsxref("Array.prototype.sort()")}}.

+ +
var numbers = new Uint8Array([40, 1, 5, 200]);
+numbers.sort();
+// Uint8Array [ 1, 5, 40, 200 ]
+// A compare function is not required as in the case of Array
+// to sort the numbers numerically.
+
+var numbers = [40, 1, 5, 200];
+numbers.sort();
+// The elements are sorted as strings.
+// [1, 200, 40, 5]
+
+function compareNumbers(a, b) {
+  return a - b;
+}
+
+numbers.sort(compareNumbers);
+// [ 1, 5, 40, 200 ]
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentários
{{SpecName('ES2015', '#sec-%typedarray%.prototype.sort', 'TypedArray.prototype.sort')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-%typedarray%.prototype.sort', 'TypedArray.prototype.sort')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticasChromeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatGeckoDesktop(46)}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticasAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(46)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/typeerror/index.html b/files/pt-br/web/javascript/reference/global_objects/typeerror/index.html new file mode 100644 index 0000000000..d793f767ff --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/typeerror/index.html @@ -0,0 +1,168 @@ +--- +title: TypeError +slug: Web/JavaScript/Reference/Global_Objects/TypeError +translation_of: Web/JavaScript/Reference/Global_Objects/TypeError +--- +
{{JSRef}}
+ +

O  objeto TypeError  representa um erro de quando um valor não é do tipo esperado.

+ +

Sintaxe

+ +
new TypeError([message[, fileName[, lineNumber]]])
+ +

Parâmetros

+ +
+
message
+
Opcional. Mensagem, descrição do erro
+
fileName {{non-standard_inline}}
+
Opcional. O nome do arquivo contendo o código que causou a exceção
+
lineNumber {{non-standard_inline}}
+
Opcional. O número da linha do código que causou a exeção
+
+ +

Descrição

+ +

O TypeError é ativado quando um operador ou argumento passado para uma função é incompativel com o tipo esperado por esse operador ou função.

+ +

 

+ +

Propriedades

+ +
+
{{jsxref("TypeError.prototype")}}
+
Permite a adição de propriedades para o objeto TypeError.
+
+ +

Métodos

+ +

O TypeError global não contém métodos por si só, no entanto, ele herda alguns métodos através da cadeia prototype.

+ +

Instâncias TypeError

+ +

Propriedades

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Properties')}}
+ +

Métodos

+ +
{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Methods')}}
+ +

Exemplos

+ +

Capturando um TypeError

+ +
try {
+  null.f();
+} catch (e) {
+  console.log(e instanceof TypeError); // true
+  console.log(e.message);              // "null has no properties"
+  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"
+}
+
+ +

Criando um TypeError

+ +
try {
+  throw new TypeError('Hello', "someFile.js", 10);
+} catch (e) {
+  console.log(e instanceof TypeError); // true
+  console.log(e.message);              // "Hello"
+  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"
+}
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}{{Spec2('ES6')}} 
{{SpecName('ES5.1', '#sec-15.11.6.5', 'TypeError')}}{{Spec2('ES5.1')}} 
{{SpecName('ES3', '#sec-15.11.6.5', 'TypeError')}}{{Spec2('ES3')}}Initial definition
+ +

Compatibilidade do Navegador

+ +
{{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}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/undefined/index.html b/files/pt-br/web/javascript/reference/global_objects/undefined/index.html new file mode 100644 index 0000000000..2fcecff20c --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/undefined/index.html @@ -0,0 +1,175 @@ +--- +title: undefined +slug: Web/JavaScript/Reference/Global_Objects/undefined +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Resumo

+ +

O valor global undefined representa um valor indefinido. Trata-se de um dos {{Glossary("Primitivo", "tipos primitivos")}} do JavaScript.

+ +

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

+ +

Sintaxe

+ +
undefined
+ +

Descrição

+ +

O undefined é uma propriedade do objeto global, ou seja, é uma variável no escopo global. O valor inicial de undefined é o valor primitivo undefined.

+ +

Nos browsers modernos (JavaScript 1.8.5 / Firefox 4+), a especificação ECMAScript 5 define que o undefined é uma propriedade não configurável e somente leitura. Mesmo quando esse não for o caso, evite sobrescrevê-lo.

+ +

Uma variável que não teve um valor atribuído é do tipo undefined. Um método ou sentença também retorna undefined se a variável que está sendo avaliada não tem um valor atribuído. Uma função retorna undefined se um valor não for {{jsxref("Statements/return", "retornado")}}.

+ +

Uma vez que undefined não é uma {{jsxref("Reserved_Words", "palavra reservada")}}, ele pode ser usado como um identificador (nome de variável) em qualquer escopo que não seja o escopo global.

+ +
// escreve no console "foo string"
+(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();
+
+// escreve no console "foo string"
+(function(undefined){ console.log(undefined, typeof undefined); })('foo');
+
+ +

Exemplos

+ +

Igualdade estrita (===) e undefined

+ +

Voce pode utilizar undefined com os operadores de igualdade e desigualdade estritas para determinar se a variável possui um valor. No código a seguir, a variável x não foi definida, e o resultado do if é verdadeiro.

+ +
var x;
+if (x === undefined) {
+   // sentenças aqui são executadas
+}
+else {
+   // o código aqui não é executado
+}
+
+
+ +
Observação: O operarador de igualdade estrita (===) tem que ser utilizado aqui uma vez que x == undefined também checa se x é nulo, enquanto o operador não o faz. null não é equivalente à undefined. Veja {{jsxref("Operators/Comparison_Operators", "operadores de comparação")}} (em inglês) para maiores detalhes.
+ +

Operador Typeof e undefined

+ +

Alternativamente, {{jsxref("Operators/typeof", "typeof")}} pode ser usado:

+ +
var x;
+if (typeof x === 'undefined') {
+   // esse código é executado
+}
+
+ +

Uma das principais razões para usar o {{jsxref("Operators/typeof", "typeof")}} é que ele não lança erros caso a variável não tenha sido inicializada.

+ +
// x não foi atribuída anteriormente
+if (typeof x === 'undefined') { // returna verdadeiro sem lançar erros
+   // esse código executa
+}
+
+if(x === undefined){ // lança um ReferenceError para x
+
+}
+
+ +

No entanto, esse tipo de técnica deveria ser evitada. A linguagem JavaScript é uma linguagem com escopo estático, portanto o conhecimento sobre se uma variável está definida pode ser adquirido pela verificação de sua definição dentro do contexto à qual ela pertence. A única exceção é para o escopo global. No entanto, o escopo global é anexado ao objeto global, portanto a verificação da existência de uma variável no contexto global pode ser feita através de uma checagem na propriedade do objeto global usando o operador {{jsxref("Operators/in", "in")}}, por exemplo.

+ +

Operador Void e undefined

+ +

O  operador {{jsxref("Operators/void", "void")}} é a terceira alternativa.

+ +
var x;
+if (x === void 0) {
+   // esse código executa
+}
+
+// y não foi definido antes
+if (y === void 0) {
+   // lança uma ReferenceError (ao contrário de `typeof`)
+}
+
+ +

Especificação

+ + + + + + + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentários
ECMAScript 1st Edition.StandardDefinição inicial. Implementado no JavaScript 1.3
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}} 
+ +

Compatibilidade entre navegadores

+ +

{{ 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/pt-br/web/javascript/reference/global_objects/unescape/index.html b/files/pt-br/web/javascript/reference/global_objects/unescape/index.html new file mode 100644 index 0000000000..e3b3d2a9d1 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/unescape/index.html @@ -0,0 +1,136 @@ +--- +title: unescape() +slug: Web/JavaScript/Reference/Global_Objects/unescape +translation_of: Web/JavaScript/Reference/Global_Objects/unescape +--- +
{{jsSidebar("Objects")}}
+ +
{{Deprecated_header}}
+ +
A função unescape() obsolta computa uma nova string na qual as sequencias hexadecimal são esquecidas com o caractere que representa. As sequências de escape podem ser introduzidas como funções {{jsxref("escape")}}. Porque a função 'unescape' está obsoleta, ao invez disso, use {{jsxref("decodeURI")}} ou {{jsxref("decodeURIComponent")}}.
+ +
 
+ +
Nota: Não use unescape para decodificar URIs, use decodeURI ao invez disso.
+ +

Syntax

+ +
unescape(str)
+ +

Parâmetros

+ +
+
str
+
Uma string a ser decodificada.
+
+ +

Valor retornado

+ +

Uma nova string na qual alguns caracteres tem que ser 'unescaped'.

+ +

Descrição

+ +

A função unescape é uma propriedade do objeto global.

+ +

Exemplos

+ +
unescape('abc123');     // "abc123"
+unescape('%E4%F6%FC');  // "äöü"
+unescape('%u0107');     // "ć"
+
+ +

Specifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES1', '#sec-15.1.2.5', 'unescape')}}{{Spec2('ES1')}}Definição Inicial.
{{SpecName('ES5.1', '#sec-B.2.2', 'unescape')}}{{Spec2('ES5.1')}}Definido na compatibilidade Annex B
{{SpecName('ES6', '#sec-unescape-string', 'unescape')}}{{Spec2('ES6')}}Difinito na (normativa) Annex B Para novidades adicionais do ECMAScript para browsers
{{SpecName('ESDraft', '#sec-unescape-string', 'unescape')}}{{Spec2('ESDraft')}}Difinito na (normativa) Annex B Para novidades adicionais do ECMAScript para browsers
+ +

Compatibilidades dos browsers

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + +
NovidadesChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
NovidadesAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/uneval/index.html b/files/pt-br/web/javascript/reference/global_objects/uneval/index.html new file mode 100644 index 0000000000..f137fffd53 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/uneval/index.html @@ -0,0 +1,106 @@ +--- +title: uneval() +slug: Web/JavaScript/Reference/Global_Objects/uneval +translation_of: Web/JavaScript/Reference/Global_Objects/uneval +--- +
{{jsSidebar("Objects")}}{{Non-standard_header}}
+ +

O  método uneval() cria uma representação do código fonte de um Objeto.

+ +

Sintaxe

+ +
uneval(object)
+ +

Parâmetros

+ +
+
object
+
A JavaScript expression or statement.
+
+ +
Nota: Você não obterá uma representação em JSON válida para o Objeto..
+ +

Descrição

+ +

uneval() é uma função top-level e não é associada a nenhum objeto.

+ +

Examples

+ +
var a = 1;
+uneval(a); // retorna uma String contendo 1
+
+var b = "1";
+uneval(b) // retorna uma String contendo "1"
+
+uneval(function foo(){}); // retorna"(function foo(){})"
+
+
+var a = uneval(function foo(){return 'hi'});
+var foo = eval(a);
+foo(); // retorna "hi"
+
+ +

Especificações

+ +

Not part of any specifications.

+ +

Compatibilidade dos Navegadores

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
CaracterísticaChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
CaracterísticaAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/delete/index.html new file mode 100644 index 0000000000..0a0d096c13 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -0,0 +1,73 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +
{{JSRef}}
+ +

O método delete() remover o elemento especificado ou setado a partir de um objeto instanciado do WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-delete.html")}}
+ + + +

Sintaxe

+ +
wm.delete(key);
+ +

Parâmetros

+ +
+
chave(key)
+
Requerido. A chave(key) do elemento a ser removido do objeto instanciado do WeakMap.
+
+ +

Valores retornados

+ +

true se o emento do objeto do WeakMap tenha sido removido com sucesso. false se a chave(key) não for encontrada no WeakMap ou se a chave(key) não for um objeto.

+ +

Examplos

+ +

Usando o método delete 

+ +
var wm = new WeakMap();
+wm.set(window, 'foo');
+
+console.log(wm.delete(window)); // Returna true. Removido com sucesso.
+
+wm.has(window);    // Returna false. O objeto window não é mais pertecente ao WeakMap.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ES2015')}}Definição inicial
{{SpecName('ESDraft', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com os navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.delete")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/get/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/get/index.html new file mode 100644 index 0000000000..fd35e8ce40 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/get/index.html @@ -0,0 +1,74 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/get +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +
{{JSRef}}
+ +

O método get() retorna um elemento especificado de um objeto WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.html")}}
+ + + +

Sintaxe

+ +
wm.get(chave);
+ +

Parâmetros

+ +
+
chave
+
Obrigatório. A chave do elemento a ser retornado pelo objeto WeakMap.
+
+ +

Valor de retorno

+ +

O elemento associado à chave especificada no objeto WeakMap. Se a chave não for encontrada, retorna-se {{jsxref("undefined")}}.

+ +

Exemplos

+ +

Utilizando o método get 

+ +
var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.get(window); // Retorna "foo".
+wm.get('baz');  // Returna undefined.
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade dos navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.get")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/has/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/has/index.html new file mode 100644 index 0000000000..4a6795c182 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/has/index.html @@ -0,0 +1,77 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/has +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +
{{JSRef}}
+ +

O método has() retorna um booleano indicando se um elemento com a chave especificada existe no objeto WeakMap ou não.

+ +

{{EmbedInteractiveExample("pages/js/weakmap-prototype-has.html")}}

+ + + +

Sintaxe

+ +
wm.has(chave);
+ +

Parameters

+ +
+
chave
+
Obrigatório. A chave do elemento cuja presença deve ser verificada no objeto WeakMap.
+
+ +

Valor de retorno

+ +
+
Boolean
+
Retorna true se um elemento com a chave especificada existir no objeto WeakMap. Caso contrário, retorna false.
+
+ +

Exemplos

+ +

Utilizando o método has 

+ +
var wm = new WeakMap();
+wm.set(window, 'foo');
+
+wm.has(window); // retorna true
+wm.has('baz');  // retorna false
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.has")}}

+ +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..1069690348 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,130 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Global_Objects/WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef("Global_Objects", "WeakMap")}}
+ +

Sumário

+ +

O objeto WeakMap é uma coleção de pares key/value na qual as chaves são fracamente referenciadas.
+ As chaves devem ser objetos, e os valores podem ser de tipos arbitrários.

+ +

Você pode descobrir mais sobre WeakMaps na seção {{SectionOnPage("/en-US/docs/Web/JavaScript/Guide/Keyed_collections", "WeakMap object")}}.

+ +

Sintaxe

+ +
new WeakMap([iterable])
+
+ +

Parâmetros

+ +
+
iterable
+
Iterable é um Array ou outro objeto iterável cujos elementos são pares key-value (Arrays de dois elementos). Cada par key-value será adicionados ao novo WeakMapnull é tratado como undefined.
+
+ +

Descrição

+ +

Por quê WeakMap?

+ +

Um programador JavaScript experiente vai notar que esta API pode ser implementada em JavaScript com dois arrays (um para chaves, um para valores) compartilhado pelos 4 métodos da API. Tal implementação teria duas principais incoveniências. A primeira é uma busca O(n) (n sendo o número de chaves no map). A segunda é o problema de memory leak. Com maps escritos manualmente, o array de chaves guardaria referências para objetos chave, prevenindo-os de serem coletados pelo Garbage Collector. Nos WeakMaps nativos, referências aos objetos chave são segurados de modo "fraco", o que significa que eles não previnem a coleção pelo GC no caso de não haver nenhuma outra referência ao objeto. 

+ +

Por conta das referências serem fracas, chaves de WeakMap não são enumeráveis (i.e. não existe um método que dá a você uma lista de chaves). Se existisse tal método, a lista dependeria no estado da coleção do GC, introduzindo não-determinismo. Se você quiser ter uma lista de chaves, deve usar um {{jsxref("Map")}}. 

+ +

Propriedades

+ +
+
WeakMap.length
+
O valor da propriedade length é 0.
+
{{jsxref("WeakMap.prototype")}}
+
Representa o prototype para o constructor WeakMap. Permite a adição de propriedades para todos os objetos WeakMap.
+
+ +

Instâncias WeakMap

+ +

Todas as instâncias WeakMap herdam de {{jsxref("WeakMap.prototype")}}.

+ +

Propriedades

+ +

{{page('pt-BR/docs/JavaScript/Reference/Global_Objects/WeakMap/prototype','Propriedades')}}

+ +

Métodos

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Metodos')}}

+ +

Exemplos

+ +

Exemplo: Usando WeakMap

+ +
var wm1 = new WeakMap(),
+    wm2 = new WeakMap(),
+    wm3 = new WeakMap();
+var o1 = {},
+    o2 = function(){},
+    o3 = window;
+
+wm1.set(o1, 37);
+wm1.set(o2, "azerty");
+wm2.set(o1, o2); // um valor pode ser qualquer coisa, incluindo um objeto or uma função
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // chaves e valores pode ser quaisquer objetos. Até mesmo WeakMaps!
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // undefined, pois não existe valor para o2 em wm2
+wm2.get(o3); // undefined, pois este é o valor definido
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (mesmo se o valor armazenado for 'undefined')
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+wm3.clear();
+wm3.get(o1); // undefined, pois wm3 foi 'limpado' e não há mais valor para o1.
+
+wm1.has(o1);   // true
+wm1.delete(o1);
+wm1.has(o1);   // false
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com browsers

+ +


+ {{Compat("javascript.builtins.WeakMap")}}

+ +
 
+ +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/prototype/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/prototype/index.html new file mode 100644 index 0000000000..0baf6d569d --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/prototype/index.html @@ -0,0 +1,117 @@ +--- +title: WeakMap.prototype +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef("Global_Objects", "WeakMap")}}
+ +

Sumário

+ +

A propriedade WeakMap.prototype representa o prototype fara o construtor {{jsxref("WeakMap")}}.

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

Descrição

+ +

Instâncias {{jsxref("WeakMap")}} herdam de {{jsxref("WeakMap.prototype")}}. Você pode usar o objeto prototype do construtor para adicionar propriedades ou métodos para todas as instâncias WeakMap.

+ +

Propriedades

+ +
+
WeakMap.prototype.constructor
+
Retorna a função construtora das instâncias, neste caso a própria {{jsxref("WeakMap")}}.
+
+ +

Metodos

+ +
+
{{jsxref("WeakMap.prototype.clear()")}}
+
Remove todos os pares chave/valor do objeto WeakMap
+
{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(key)")}}
+
Remove qualquer valor associado à  keyWeakMap.prototype.has(key) e retorna false após.
+
{{jsxref("WeakMap.get", "WeakMap.prototype.get(key)")}}
+
Retorna o valor associado a key, ou undefined se nenhum existir.
+
{{jsxref("WeakMap.has", "WeakMap.prototype.has(key)")}}
+
Retorna um Boolean verificando se há algum valor associado a key no objeto WeakMap ou não.
+
{{jsxref("WeakMap.set", "WeakMap.prototype.set(key, value)")}}
+
Configura um valor para key no objeto WeakMap. Retorna undefined.
+
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ES6')}}Especificação inicial.
+ +

Compatibilidade de browsers 

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoChromeFirefox (SpiderMonkey)Internet ExplorerOperaSafari
Suporte básico{{CompatVersionUnknown}}{{CompatGeckoDesktop("6.0")}}11{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + +
RecursoAndroidFirefox Mobile (SpiderMonkey)IE MobileOpera MobileSafari Mobile
Suporte básico{{CompatNo}}{{CompatGeckoMobile("6.0")}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Notas para o Chrome

+ + + +

Veja também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/set/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/set/index.html new file mode 100644 index 0000000000..854f8ea816 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/set/index.html @@ -0,0 +1,85 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/set +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +
{{JSRef}}
+ +

O método set() adiciona um novo elemento com a chave e o valor especificados em um objeto WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.html")}}
+ + + +

Sintaxe

+ +
wm.set(chave, valor);
+ +

Parâmetros

+ +
+
chave
+
Obrigatório. A chave do elemento a ser adicionado no objeto WeakMap.
+
valor
+
Obrigatório. O valor do elemento a ser adicionado no objeto WeakMap.
+
+ +

Valor de retorno

+ +

O objeto WeakMap.

+ +

Exemplos

+ +

Utilizando o método set 

+ +
var wm = new WeakMap();
+var obj = {};
+
+// Adicionar novos elementos ao WeakMap
+wm.set(obj, 'foo').set(window, 'bar'); // encadeável
+
+// Atualizar um elemento no WeakMap
+wm.set(obj, 'baz');
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade de navegadores

+ + + +

{{Compat("javascript.builtins.WeakMap.set")}}

+ +

Notas específicas ao Firefox

+ + + +

Ver também

+ + diff --git a/files/pt-br/web/javascript/reference/global_objects/weakset/index.html b/files/pt-br/web/javascript/reference/global_objects/weakset/index.html new file mode 100644 index 0000000000..841fce848f --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakset/index.html @@ -0,0 +1,199 @@ +--- +title: WeakSet +slug: Web/JavaScript/Reference/Global_Objects/WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +
{{JSRef}}
+ +
O objeto WeakSet pertmite que você armazene objetos mantidos “fracamente” na coleção.
+ +
 
+ +

Syntaxe

+ +
 new WeakSet([iterable]);
+ +

Parâmetros

+ +
+
iterable
+
Se um objeto interagível é passado, todos os seus elementos serão adicionados ao novo WeakSet.
+
+ +

Descrição

+ +

Objetos WeakSet são coleções de objetos. Um objeto no WeakSet pode ocorrer uma vez; é único na coleção do WeakSet.

+ +

As principais diferenças para o objeto {{jsxref("Set")}} são:

+ + + +

Propriedades

+ +
+
WeakSet.length
+
O valor da propriedade de  comprimento é 0.
+
{{jsxref("WeakSet.prototype")}}
+
Representa o protóripo para o construtos Set. Permite a adição de propriedades para todos os objetos do WeakSet.
+
+ +

Instâncias WeakSet

+ +

Todas as instâncias do WeakSet herdam do {{jsxref("WeakSet.prototype")}}.

+ +

Propriedades

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Properties')}}

+ +

Métodos

+ +

{{page('en-US/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Methods')}}

+ +

Exemplos

+ +

Usando o objeto do WeakSet

+ +
var ws = new WeakSet();
+var obj = {};
+var foo = {};
+
+ws.add(window);
+ws.add(obj);
+
+ws.has(window); // true
+ws.has(foo);    // false, foo não foi adicionado ao set
+
+ws.delete(window); // remove window do set
+ws.has(window);    // false, window foi removido
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES6', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ES6')}}Definição inicial
{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}{{Spec2('ESDraft')}} 
+ +

Compatilidade de Browser

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support{{CompatChrome(36)}}{{ CompatGeckoDesktop(34) }}{{CompatNo}}{{ CompatOpera(23) }}9
new WeakSet(iterable)38{{ CompatGeckoDesktop(34) }}{{CompatNo}}259
Constructor argument: new WeakSet(null){{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}9
Monkey-patched add() in Constructor{{CompatVersionUnknown}}{{CompatGeckoDesktop("37")}}{{CompatUnknown}}{{CompatUnknown}}9
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
new WeakMap(iterable){{CompatNo}}{{ CompatGeckoMobile(34) }}{{CompatNo}}{{CompatNo}}9
Constructor argument: new WeakSet(null){{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}9
Monkey-patched add() in Constructor{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}9
+
+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf